Поддержка Плагины Уникальное поле для пользователя

  • Как создать дополнительное поле в профиле пользователя (либо не в профиле, а просто привязанное как-либо к пользователю), в которое можно ввести только уникальное значение?

    Например, как e-mail. Один e-mail может быть в профиле только одного пользователя одновременно. Нужно добавить аналогично поле. Чтобы при его заполнении была проверка — нет ли другого пользователя с таким же значением.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Пока вижу два варианта.

    1. Каким-то образом получать список всех пользователей с указанным значением поля.
    2. Напрямую делать запрос к БД, обычный MySQL-запрос.

    Но как реализовать первое не понятно. А второе немного смущает, не люблю в код напрямую запросы вставлять. Но зато понятно, понятно, как этот запрос написать.

    На очень скорую руку, в сыром варианте, основываясь на примере Джастина Тедлока, меняем код функции my_save_extra_profile_fields()

    function my_save_extra_profile_fields( $user_id ) {
        if ( !current_user_can( 'edit_user', $user_id ) )
    	return false;
        $users = get_users();
        foreach( $users as $user ) {
            $twitter_user_meta[] = get_the_author_meta( 'twitter', $user->ID )
        }
        if( !in_array( $_POST['twitter'], $twitter_user_meta ) )
    	update_usermeta( $user_id, 'twitter', $_POST['twitter'] );
    }

    Этот код просто не обновит поле, если значение уже занято.
    Далее начинаются детали, например выводить ли пользователю сообщение (создание WP_Error), что значение занято и т.д. (может оказаться много всего)

    Да, примерно так и сделала. Только вместо устаревшей функции использовала актуальную. Ну, и плюс к этому проверки на соответствие шаблону и всякие такие приятные мелочи.

    Спасибо вам за наводку!

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Уникальное поле для пользователя» закрыта для новых ответов.