0

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

我正在使用login_footer钩子在“登录表单”之后添加一些特殊功能

add_filter('login_footer', array($this, 'special_form'));

我如何决定何时login运行进程?所以我可以避免special form在其他操作中显示(“注册”、“检索密码”等)。

4

2 回答 2

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等等......

于 2012-08-17T15:19:54.213 回答
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'));
}

还有许多login_form_*其他 wp-login.php 操作的钩子 - login_form_logout、login_form_register 等等。

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

于 2012-08-17T15:20:33.853 回答