Intereting Posts
Каков безопасный способ печати кода отслеживания / пикселя перед тегом </ head> или тегом </ body> Как скопировать существующий (настраиваемый тематический) сайт в новый домен Могу ли я отображать подменю в группах, используя wp_list_pages? Удалите функцию, которая добавляет nofollow к ссылкам в комментариях Исключить категории из цикла, запросов, виджетов, навигации по почте Добавить внешний обтекатель в мой заголовок и сделать его полной шириной Woocommerce POS-плагин (работает как кассовый аппарат с различными запасами / запасами) Установите значение post_parent для изображений, загруженных кнопкой Add Media, в сообщение Многоязычный многоуровневый> настраиваемый нижний колонтитул на разных сайтах с виджетами? Почему шаблоны Woocommerce используют перехватчики, а не get_template_part Страница для пользовательской таксономии Структурирование 3K страниц в WordPress Отправлять мультимедийные загрузки в разные каталоги Удаление wpautop в woocommerce включает папку class-wc-order-item.php Показать ошибки в пользовательской форме входа

Разрешить вход в систему, если существует таблица строк

Я использую «проверку подлинности» фильтра в коде WordPress, чтобы настроить скрипт проверки на странице входа в WordPress.

Что мне нужно сделать, так это создать запрос к отдельной таблице, чтобы увидеть, есть ли строка в базе данных или нет для отдельного входа в систему.

Вот что я до сих пор.

add_filter( 'authenticate', 'check_user_is_in_ibew_members', 40, 3 ); function check_user_is_in_ibew_members( $user, $username, $password ) { global $wpdb; $Card = $username $result = $wpdb->get_results( "SELECT 1 FROM members WHERE Card = $Card LIMIT 1"); // $query = "SELECT 1 FROM members WHERE Card = $Card LIMIT 1"; // $result = $wpdb->get_results($query); foreach ($result as $query) { // Evaluates to true because $query is empty if (empty($query)) { echo 'Card Number is currently inactive'; } } return $user; } 

В основном, когда пользователь пытается войти в систему, мы выбираем 1 строку из таблицы, где Card равен имени пользователя WP. Если член находится в базе данных, форма должна возвращать true и регистрировать посетителя. Если посетитель не находится в таблице, форма должна возвращать значение false и предоставлять сообщение об ошибке.

Кажется, это не работает. Я проверил и нет ошибок в самом коде, что заставляет меня думать, что я неправильно его реализую.

Могу ли я получить некоторую помощь относительно того, что я сделал неправильно, чтобы я мог учиться на своих ошибках. Я благодарю всех, кто помогает.

Solutions Collecting From Web of "Разрешить вход в систему, если существует таблица строк"

Поэтому я смог разработать решение, которое работает.

Вот что я сделал.

Сначала я подключился к фильтру аутентификации

  add_filter( 'authenticate', 'check_user_is_in_custom_table', 30, 2 ); 

Оттуда я создал свою функцию

  function check_user_is_in_custom_table( $user, $username, $password ) { 

Загрузили базу данных WordPress

  global $wpdb; 

Создал мою переменную result

  $result = $wpdb->get_row( $wpdb->prepare( "SELECT User FROM custom_table WHERE User = %s", $username ) ); 

Мне пришлось немного изменить инструкцию if

  if ( is_null ( $result ) ) { //This is the edited line return new WP_Error( 'deactivated_in_custom_table', 'This account has been deactivated.' ); } return $user; 

И, наконец, закрыла функцию

  } 

Вот полный код для тех, кто хочет использовать это для своей собственной ссылки.

  add_filter( 'authenticate', 'check_user_is_in_custom_table', 30, 2 ); function check_user_is_in_custom_table( $user, $username, $password ) { global $wpdb; $result = $wpdb->get_row( $wpdb->prepare( "SELECT User FROM custom_table WHERE User = %s", $username ) ); if ( is_null ( $result ) ) { return new WP_Error( 'deactivated_in_custom_table', 'This account has been deactivated.' ); } return $user; } 

Вот что происходит, форма входа проходит через проверку, которую мы создали, используя пользовательскую таблицу в базе данных WordPress. Если в таблице есть строка, в которой USER является именем пользователя, указанным при входе в систему, они могут продолжить. Если в пользовательской таблице нет пользователя по этому имени, пользователю предоставляется сообщение об ошибке.

Закончилось быть одной линией, которая вызывала мои проблемы, но это часто случается при написании пользовательских элементов любого вида 🙂 Счастливое кодирование.