Php 让Wordpress博客对注销的访问者完全保密?
我正在建立一个Wordpress网站,用户需要先登录,然后才能访问博客本身。目前,我使用了以下方法:Php 让Wordpress博客对注销的访问者完全保密?,php,wordpress,redirect,Php,Wordpress,Redirect,我正在建立一个Wordpress网站,用户需要先登录,然后才能访问博客本身。目前,我使用了以下方法: add_action('wp_head','foofunc'); function foofunc() { if(!is_user_logged_in()) die(); } 但是,这样我无法将用户重定向到另一个url,因为输出已经开始。有没有办法将未登录的用户重定向到url 我会使用userinit,但这也会在wp admin中重定向用户 Martti Laine将“init”处理程
add_action('wp_head','foofunc');
function foofunc() {
if(!is_user_logged_in()) die();
}
但是,这样我无法将用户重定向到另一个url,因为输出已经开始。有没有办法将未登录的用户重定向到url
我会使用userinit
,但这也会在wp admin中重定向用户
Martti Laine将“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();
}
}
将“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();
}
}
这是一个现成的解决方案
这是一个现成的解决方案
最干净的实施:
if( (!is_user_logged_in()) && ($GLOBALS['pagenow'] !== 'wp-login.php') ) {
wp_redirect('http://anothersite.com');
}
可以按原样放置在函数中。php最干净的实现:
if( (!is_user_logged_in()) && ($GLOBALS['pagenow'] !== 'wp-login.php') ) {
wp_redirect('http://anothersite.com');
}
可以在函数中按原样放置。php我正在将其作为一个插件,因此需要通过
add\u action
完成。因此add\u action(“init”、“foofunc”)
将是解决方案。如果它导致wp admin出现问题,只需使用is_admin()来检测用户是否已经在管理面板中。我要用新代码更新我的答案。是我一直在寻找的!谢谢。实际上这段代码阻止我登录。知道如何修复吗?好的,那么你需要检查当前页面是否是登录页面,在这种情况下,不要重定向。您可以使用REQUEST\u URI
查找当前URL并检查它是否包含“wp login”。我已经更新了示例代码。我正在使其成为一个插件,因此需要通过add\u action
完成。因此add\u action(“init”、“foofunc”)
将是解决方案。如果它导致wp admin出现问题,只需使用is_admin()来检测用户是否已经在管理面板中。我要用新代码更新我的答案。是我一直在寻找的!谢谢。实际上这段代码阻止我登录。知道如何修复吗?好的,那么你需要检查当前页面是否是登录页面,在这种情况下,不要重定向。您可以使用REQUEST\u URI
查找当前URL并检查它是否包含“wp login”。我已经更新了示例代码。