如何将请求特定页面/ URL的未登录用户重定向到另一个页面/ URL,并显示类似“仅针对成员”的消息。我知道使用!is_user_logged_in()函数非常容易编码,但是我不知道如何编码,因为我是WordPress的新手。还要告诉我该文件也要放入代码。

#1 楼

这里有两个示例,您需要对其进行一些修改,以使其适合您的特定需求。

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;
    }
}


您可以将消息直接添加到页面,或者如果要显示所有未登录用户的消息,请将其添加到代码中。

http://codex.wordpress.org/Function_Reference/wp_redirect

评论


感谢您的回答,我确实喜欢这个add_action('template_redirect','redirect_to_specific_page');函数redirect_to_specific_page(){如果(is_page('http://mydomain.com/participate')&&!is_user_logged_in()){wp_redirect('http://mydomain.com/login',301);出口;但它不起作用

–user3187719
2014年1月31日9:15



请在此处使用i.d或slug页面,而不是URL mydomain.com/participate codex.wordpress.org/Conditional_Tags

–布拉德·道尔顿(Brad Dalton)
2014年1月31日上午9:22

is_page('参与')

–布拉德·道尔顿(Brad Dalton)
2014年1月31日上午9:23

#2 楼

这样做会更好:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continue as normal for authenticated users


这样做是将用户重定向到登录页面。登录后,用户将被重定向回到他们最初尝试访问的安全页面。

此处的文档:

https://codex.wordpress.org/Function_Reference / auth_redirect

#3 楼

如果您不告诉我们要在何处显示它,我们如何告诉您在哪里放置它?整个帖子?页面?页面的自定义部分?抱歉...我想我的水晶球今天还不能正常工作。

由于您的缘故,我引用您的话:“一个新手来玩wordpress”,您应该学习,而不是要求直接回答。 。

关于应在何处阅读参考文献1链接。这将告诉您需要将哪个文件放入。

关于操作方法,您应该先阅读参考链接2和3。

总体上它应该看起来像像这样:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}


当然,上面的代码需要进入循环。您可以根据需要将其构建得复杂或简单。例如,如果您未登录,则可以显示整个注册表单,而不是简单的文本;或者,如我建议的那样,可以显示一个分开的屏幕,用户可以在其中登录(因为用户可以拥有一个帐户但忘记了登录)或注册(如果他没有一个)。


模板层次结构
条件标记
循环

在以下评论之后添加:

要重新使用headerwp_login_url-再次,请检查下面的参考文献1和2:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}


参考文献:


标题-PHP
wp_login_url


评论


实际上,我不知道返回请求的URL或永久链接的wordpress函数。关于显示消息,请保留,我只想在他们请求某些URL时重定向它们而不被记录。

–user3187719
2014年1月31日4:14



我可以用$ pagenow做到吗?

–user3187719
2014年1月31日下午4:53

@ user3187719编辑了我的原始答案,并添加了重定向解决方案。 PS。 $ pagenow?您正在尝试用大炮杀死一只苍蝇,以确保它会起作用,但是为什么如此复杂?把事情简单化。 PS2:了解PHP和WP Codex。

– Borek
2014年1月31日15:17

#4 楼

您无法重定向到特定页面,但是每个未登录的用户都将被重定向到“登录屏幕”。

<?php auth_redirect(); ?>


Wordpress参考:auth_redirect()

仅提及另一种解决方案。