仅为登录进程运行'login_footer'挂钩

时间:2012-08-17 14:20:27

标签: php wordpress login hook

在wp-login.php内部,我们有几个action进程:'logout','register','retrievepassword'等等......当然还有'login'。

我正在使用login_footer挂钩在“登录表单”

之后添加一些特殊功能
add_filter('login_footer', array($this, 'special_form'));

如何判断login进程何时正在运行?所以我可以避免在其他动作中显示special form('register','retrievepassword'等等。)

2 个答案:

答案 0 :(得分:0)

检查wp-login.php文件,我们看到$action以这种方式找到:

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';

因此,使用以下代码,我可以知道正在运行的操作:

add_filter('login_init', array($this, 'login_init'));   
function login_init()
{
    $action              = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
    $this->login_running     = $action == 'login' ? true : false;
}

为了在login_messagelogin_footer等后续钩子中使用它...

答案 1 :(得分:0)

使用“login_form_login”挂钩。

add_action('login_form_login', array($this, 'enable_special_form'));

/*... */

function enable_special_form() {
    add_action('login_footer', array($this, 'special_form'));
}

其他wp-login.php操作还有一堆其他login_form_*挂钩 - login_form_logout,login_form_register等。

作为参考,在WordPress 3.4.1中,login_form_ *动作在wp-login.php的第380行执行,可用的动作在第357行列出。