我正在构建一个Wordpress网站,用户需要在访问博客本身之前登录。现在,我用过这个:
add_action('wp_head','foofunc');
function foofunc() {
if(!is_user_logged_in()) die();
}
但是,这样我无法将用户重定向到另一个URL,因为输出已经开始。有没有办法将未登录的用户重定向到网址?
我会用户init
,但也会在wp-admin中重定向用户。
Martti Laine
答案 0 :(得分:5)
使用“init”处理程序和is_admin()来检查用户是否已经在管理面板中:
add_action('init','foofunc');
function foofunc() {
$isLoginPage = strpos($_SERVER['REQUEST_URI'], "wp-login.php") !== false;
if(!is_user_logged_in() && !is_admin() && !$isLoginPage) {
header( 'Location: http://yourdomain.com/login' ) ;
die();
}
}
答案 1 :(得分:2)
这是一个开箱即用的交钥匙解决方案。
答案 2 :(得分:1)
答案 3 :(得分:0)
最干净的实施:
if( (!is_user_logged_in()) && ($GLOBALS['pagenow'] !== 'wp-login.php') ) {
wp_redirect('http://anothersite.com');
}
可以按原样放置在functions.php
中