Answers:
这里有两个示例,您需要对其进行一些修改,以使其适合您的特定需求。
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );
function redirect_non_logged_users_to_specific_page() {
if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {
wp_redirect( 'http://www.example.dev/page/' );
exit;
}
}
将其放在您的子主题函数文件中,更改页面ID或slug以及重定向URL。
您还可以使用如下代码:
add_action( 'template_redirect', 'redirect_to_specific_page' );
function redirect_to_specific_page() {
if ( is_page('slug') && ! is_user_logged_in() ) {
wp_redirect( 'http://www.example.dev/your-page/', 301 );
exit;
}
}
您可以将消息直接添加到页面,或者如果要显示所有未登录用户的消息,请将其添加到代码中。
这样会更好:
if ( !is_user_logged_in() ) {
auth_redirect();
}
// continue as normal for authenticated users
这是将用户重定向到登录页面。登录后,用户将被重定向回到他们最初尝试访问的安全页面。
此处的文档:
https://codex.wordpress.org/Function_Reference/auth_redirect
如果您不告诉我们要在何处显示它,我们如何告诉您在哪里放置它?整个帖子?页面?页面的自定义部分?抱歉...我想我的水晶球今天不能正常工作。
既然您是我,并且我引用您的话:“宁愿给Wordpress的新手”,您宁愿学习,也不要要求直接回答。
至于您应该在哪里阅读参考文献1链接。这将告诉您需要放入哪个文件。
至于如何做,您应该先阅读参考链接2和3。
总的来说,它应该看起来像这样:
if ( is_user_logged_in() ) {
the_content();
} else {
echo 'For members only';
}
当然,上面的代码需要进入循环。您可以根据需要将其构建得复杂或简单。例如,如果未登录,则可以显示整个注册表单,而不是简单的文本;或者,如我所建议,可以显示一个分开的屏幕,用户可以在其中登录(因为用户可以拥有一个帐户但忘记了登录)或注册(如果他没有一个)。
在以下评论后添加:
要再次header
与wp_login_url
- 一起重定向,请检查以下参考文献1和2:
if ( is_user_logged_in() ) {
the_content();
} else {
header('Location: ' . wp_login_url());
}
参考:
$pagenow
?您正在尝试用大炮杀死一只苍蝇,以确保它会起作用,但是为什么如此复杂?把事情简单化。PS2:了解PHP和WP Codex。
您无法重定向到特定页面,但是每个未登录的用户都将被重定向到“登录屏幕”。
<?php auth_redirect(); ?>
WordPress参考: auth_redirect()
仅提及另一种解决方案。
add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }
但它无法正常工作