如何挂接我的函数,使其仅在提交登录表单后才能运行

时间:2014-11-04 作者:Kox

我是wordpress的新手。我正在写我的第一个插件。我不知道如何在提交登录表单后才运行我的函数,而不是每次刷新登录页面时都运行。我尝试使用身份验证筛选器。但每次刷新登录页面时,我的函数都会运行。

我不明白为什么身份验证=访问登录页。我试图违约$username 作为参数为null,类似于my_function($user, $username=null) 并检查用户名是否为空,如果为空,则不要执行任何操作。问题是,即使提交了用户名,函数也不会返回任何错误。

这可能是由于优先级。我不知道我做得是否正确,但下面的操作不起作用。我试图设定最高优先级。

add_filter(\'authenticate\',array($myobject, \'login_authenticate\'),1);
是否有人可以为我提供一个示例函数,它可以在每次提交登录表单时返回自定义错误,即使登录名和密码正确。

2 个回复
SO网友:Milo

过滤器在每次页面加载时都会运行,但第一个参数将是WP_User 对象仅在成功提交时。会的null 如果没有提交任何内容,但很可能是WP_Error 对象,其中you can check for. 如果想知道具体的错误,必须查看对象包含的错误。未提交表格的情况将同时具有empty_usernameempty_password 数组键错误。

这可能会让我们了解一些事情:

function myplugin_auth_signon( $user, $username, $password ) {
    var_dump( $user );
    return $user;
}
add_filter( \'authenticate\', \'myplugin_auth_signon\', 30, 3 );
加载页面,然后尝试各种不正确和空值的组合,然后进行正确的登录。

SO网友:Kox

我明白了。

public function auth($user, $username=\'\') {
    if ( !empty($username) ) {
        return new WP_Error( \'broke\', __( "custom error" ) );
    }
    else return $user;
}
只有提交用户名时才会返回错误。我的插件有一个很好的基础。但我不知道如何设定优先级,所以谢谢你。

结束

相关推荐

Multisite Login problem

自从我将我的多站点网络从3.8升级到3.9后,我就无法通过主博客登录。它是一个子目录安装,而不是子域。当我尝试登录到主站点时:http://uspress.avenues.org/wp-login.php, 获取消息“此用户已选择删除其帐户,并且内容不再可用。”这不是真的。据我所知,你不能删除主网站,我已经检查了数据库,网站被设置为公共网站。如果转到子网站的登录页,我可以这样登录:http://uspress.avenues.org/kgarnier/wp-login.php主站点的主页是可以访问的,但是