如何将未登录的用户重定向到特定页面?

时间:2014-01-30 作者:user3187719

如何将请求特定页面/URL的未登录用户重定向到另一个页面/URL,并显示类似“仅限成员”的消息。我知道它很容易编码使用!is\\u user\\u logged\\u in()函数,但我不知道如何编写它,因为我是WordPress的新手。介意告诉我把代码也放在文件里吗。

5 个回复
最合适的回答,由SO网友:Brad Dalton 整理而成

这里有两个示例,您需要稍加修改,以使其满足您的特定需求。

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;
    }
}
您可以直接将消息添加到页面中,或者如果要为所有未登录的用户显示消息,add it to the code.

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

SO网友:Yahya Uddin

这样会更好:

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

// continue as normal for authenticated users
这样做的目的是将用户重定向到登录页面。登录后,用户将重定向回最初尝试访问的安全页面。

此处的文档:

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

SO网友:Borek

如果您没有告诉我们要显示的内容和位置,我们如何告诉您将其放置在何处?全部帖子?页码?页面的自定义部分?很抱歉我想我的水晶球今天不太管用了。

既然你是,我引用你的话:“wordpress的新手”,你应该学习,而不是要求直接回答。

至于的位置,您应该阅读参考1链接。这将告诉您需要将其放入哪个文件。

至于如何做,你应该先阅读参考链接2和3。

总的来说,应该是这样的:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo \'For members only\';
}
当然,上面的代码需要进入loop. 你可以按照你想要的复杂或简单来构建它。例如,如果没有登录,您可以显示整个注册表单,而不是简单的文本。例如,或者,正如我建议的那样,可以显示一个分割的屏幕,用户可以登录(因为用户可以有一个帐户,但忘记登录)或注册(如果他没有帐户)。

  1. Template Hierarchy
  2. Conditional Tags
  3. The Loop
在以下评论后添加:

重定向使用header 使用wp_login_url - 再次检查以下参考文献1和2:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header(\'Location: \' . wp_login_url());
}
参考号:

  1. Header - PHP
  2. wp_login_url

SO网友:MCG

您不能重定向到特定页面,但每个未登录的用户都将被重定向到登录屏幕。

<?php auth_redirect(); ?>
Wordpress参考:auth_redirect()

我只想提一下另一个解决方案。

SO网友:skpcsmtp skpcsmtp

根据本指南:https://vvcares.com/blog/post/wordpress-buddypress-hide-page-from-non-members

如何对未登录的用户隐藏成员页面?

下面是保护Wordpress BuddyPress会员页面的简单步骤。将此简单片段添加到主题的函数中。php文件。就是这样。。

如果访问者未登录,下面的代码段示例将重定向访问者(&N);试图访问敏感的BuddyPress页面。

将尝试访问私人内容的未登录用户重定向到您的首页或主页

//Hide for non-logged-in users (public visitors)
function bp_logged_out_page_template_redirect() {
    if ( ! is_user_logged_in() &&
            is_page( \'members\' ) ||
            is_page( \'activity\' ) ||
            bp_is_user()
        ) {
        wp_redirect( home_url( \'https://vvcares.com/?buddypressBlogPostRedirect\' ) );
        exit();
    }
}
add_action( \'template_redirect\', \'bp_logged_out_page_template_redirect\' );

结束

相关推荐

Redirect to custom login page

我已经创建了一个用于登录/注册的自定义页面。是否有任何自动重定向所有wp登录的方法。php调用该页面,或者我需要手动替换所有链接。例如,在评论表单上,我有以下默认消息:你一定是logged in 发布评论。登录的链接到http://localhost/wp-login.php?redirect_to=url 如何将其更改为:http://localhost/my-custom-login-page