Intereting Posts
Запрос SQL для обновления meta_value для одного meta_key для всех post_type = product создайте настраиваемое поле, которое позволит мне включить другие сообщения Добавление настраиваемого поля в приложения в определенной категории Жестко-кодирование короткого кода в качестве последнего элемента меню в первичной навигации? Переключение меню при вызове через PHP Как WordPress хранит данные? Почему отображается текст, но не поле textarea? Импортировать носители с надписью и заголовками? Почему публикация get_post_status публикуется, когда вложение находится в корзине? Пользовательские пули автора не работают с методом get_author_posts_url $ wpdb-> get_col и ORDER BY? Попытка создать шаблон без навигации и нижнего колонтитула Исключить подкатегорию из wp_query Недостаточно памяти при загрузке изображения два столбца сообщений на главной странице, один из которых – «избранные»,

get_user_by запрашивает строку при задании строки

Я добавил дополнительное поле в форму для входа. При попытке получить значение пользователя этого поля (перед проверкой, равно ли оно) у меня есть get_user_by('login', $username); , $ username – адрес электронной почты (единственное, что я разрешу).

Конкретная ошибка: Warning: trim() expects parameter 1 to be string, object given in /(removed for privacy)/public_html/wp-includes/class-wp-user.php on line 201

Полный код: (После нажатия на вход в систему / wp-login)

 add_filter('wp_authenticate_user', 'filter_login_auth', 10, 3); function filter_login_auth($username, $password) { //get posted value $value = $_POST['klantnr']; //get user object $user = get_user_by('login', $username); //get stored klantnr $stored = get_user_meta($user->ID, 'klantnr', true); if(!$user || empty($value) || $value != $stored) { //No user, empty, or not correct remove_action('authenticate', 'wp_authenticate_username_password', 20); //Create error to return $user = new WP_Error('denied', __("<strong>ERROR</strong>: Je klantnummer is niet correct.")); } // return null so if klantnr is correct the script continues. return $user; } 

Если ваш код, вы используете первый аргумент, переданный для обратного вызова фильтра wp_authenticate_user . Это объект WP_User, это не адрес электронной почты, и это не строка.

Возможно, вы сбиваете с толку из-за имени переменной $username , я предлагаю изменить имя на $user , что более приемлемо, и это лучшее представление реального значения этой переменной.

 add_filter('wp_authenticate_user', 'filter_login_auth', 10, 3); function filter_login_auth( $user, $password ) { //get posted value $value = $_POST['klantnr']; //get user object $user = get_user_by('login', $user->user_login); // ..... } 

Но вам это не нужно, потому что get_user_by() возвращает объект пользователя, и у вас уже есть его:

 add_filter('wp_authenticate_user', 'filter_login_auth', 10, 3); function filter_login_auth( $user, $password ) { //get posted value $value = $_POST['klantnr']; // You don't need this, you already have the user object // get user object //$user = get_user_by('login', $user->user_login); // ..... } 

Дополнительные сведения см. wp_authenticate_user документах wp_authenticate_user .