所以我找到了一个可行的解决方案。
这就是我所做的。
首先,我连接到authenticate过滤器
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 = $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数据库中的自定义表创建的验证运行。如果表中有一行用户是登录时提供的用户名,则可以继续。如果自定义表中没有该名称的用户,则会向该用户发出错误消息。
结果是一行代码导致了我的问题,但这在编写任何类型的自定义元素时都会经常发生:)快乐地编写所有代码。