这里的问题是,您将所有代码保存在模板文件中,这将阻止其中一些代码的执行。在未登录的情况下加载模板后auth_redirect()
将运行。此函数用于停止页面加载并重定向到登录页面,从而login_head
永远不会调用回调。尝试按如下方式划分代码:
your-template.php
if (!is_user_logged_in()) {
auth_redirect();
}
functions.php
add_action(\'login_head\',\'ref_access\');
function ref_access() {
global $error;
if( !empty($_GET[\'ref\']) && \'access\' == $_GET[\'ref\'] )
$error = \'Restricted area, please login to continue.\';
}
而这将使
ref_access
执行时间
login_head
这还意味着它将在每次显示登录页面时运行。要解释这一点,你必须找到一种方法让WordPress跟踪何时何地
auth_redirect()
正在呼叫,并使
ref_access()
检查一些推荐人。首先想到的是使用
sessions 存储有关每个正在进行的重定向的信息并清除中的会话数据
ref_access()
或根据需要在每个新页面上加载。
另一种选择是使用login_message
筛选以在登录页面上显示消息,但重定向/引用问题也适用于该页面。下面是一个示例:
add_filter(\'login_message\', \'wpse_87333_login_message\');
function wpse_87333_login_message($messages) {
$messages = \'Restricted area, please login to continue.\';
}