在wp-login中.php我们有几个action
过程:"注销","注册","检索密码"等......当然还有"登录"。
我正在使用login_footer
钩子在"登录表单"之后立即添加一些特殊功能
add_filter('login_footer', array($this, 'special_form'));
如何确定进程何时运行login
?所以我可以避免在其他操作中显示special form
("注册"、"检索密码"等)。
使用 "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行。
检查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_message
、login_footer
等......