Php 注销和登录用户的不同WordPress首页

Php 注销和登录用户的不同WordPress首页,php,wordpress,Php,Wordpress,WordPress阅读设置可在设置>阅读下找到 我将WordPress的“首页显示”选项设置为“静态首页” 我的“首页”设置为“关于” 我正在尝试为注销用户和登录用户设置不同的首页。目前,每个人在访问example.com时都会查看“关于”页面 如果我在注销时访问example.com,我希望看到我的“关于页面” 如果我登录时访问example.com,我希望看到我的“联系人页面” 有人知道我是如何做到这一点的吗?在您的页面主体-about.php(或者about页面正在使用的模板文件)中,

WordPress阅读设置可在设置>阅读下找到

我将WordPress的“首页显示”选项设置为“静态首页”

我的“首页”设置为“关于”

我正在尝试为注销用户和登录用户设置不同的首页。目前,每个人在访问example.com时都会查看“关于”页面

  • 如果我在注销时访问example.com,我希望看到我的“关于页面”
  • 如果我登录时访问example.com,我希望看到我的“联系人页面”

有人知道我是如何做到这一点的吗?

在您的页面主体-about.php(或者about页面正在使用的模板文件)中,您只需要使用一个条件语句

<?php if( is_user_logged_in() ) { ?>


content for logged in users


<?php } else { ?>


content for non logged in users


<?php } ?>

已登录用户的内容
未登录用户的内容
  • 编辑:在我发布我的答案之前,没有看到你的评论
您可以将其添加到functions.php中

add_action('init', 'my_redirector');

function my_redirector(){
    if( !is_user_logged_in() ) {
        wp_redirect( 'http://www.example.com/contact_us'); 
        exit;
    }
}

对于url中的硬代码,这不是一个很好的解决方案,但您可以通过其他方式获取url。

可以通过编程方式设置
首页,但不确定这是否是您问题的解决方案,因此,请将此代码粘贴到
functions.php
文件中并尝试一下

if( is_user_logged_in() ) {
    $page = get_page_by_title( 'Contact Me');
    update_option( 'page_on_front', $page->ID );
    update_option( 'show_on_front', 'page' );
}
else {
    $page = get_page_by_title( 'About Me' );
    update_option( 'page_on_front', $page->ID );
    update_option( 'show_on_front', 'page' );
}

p/S:未测试,只需尝试一下,然后请回复您得到的信息。

对于其他有此问题的人,您可以将其添加到
标题.php
,在
之前的最顶部:



UserPro插件可以轻松完成这项工作。只需输入您希望登录用户看到的URL,而不是普通主页。太简单了

您可以在未登录的情况下重定向到某个页面,或者只在基本url上显示不同的内容,您更喜欢哪一种?嗨,尼克M。我更喜欢在基本url上显示不同的内容。我尝试过使用if(is_front_page()&&is_user_logged_()然后尝试显示一个不是首页模板的模板,但这并没有完全起作用。请更新您的答案以向我们显示您的代码。这应该行得通。Nick M-我使用的代码确实确定了登录用户查看首页的时间,但它没有设置WordPress的“首页”-这就是我试图实现的想法,这是我考虑过的方法。然而,我真的需要更多地了解WordPress是如何设置“首页”的——我的问题是——有没有办法根据用户的登录或注销状态设置两个不同的首页?我不知道不编辑核心文件是否可以实现这一点,我不知道。您可以使用的一种方法是将登录页设置为主页,然后如果登录,则使用get_template_part(“登录的_页面”),如果不登录,则使用get_template_part(“未登录的_页面”)。谢谢,但我需要查看基本URL example.com上的内容。这个重定向会将我带到example.com/page-name。最好重定向到home\u url()。/contact\u us'谢谢你的代码片段。当我在我的主题的functions.php中使用它时,实际上并不改变我在WP Admin中设置的首页。注意:我在第2行的末尾添加了分号。您是否可以确保您的页面具有与我在
get\u page\u by\u title()函数中使用的相同的
title
?因为,我有一个标题为
Portfolio
的页面,如果我使用
get\u page\u by\u title('get\u page\u by\u title')
和相关代码,它只会更改首页。是的,我可以确认我使用的是确切的标题。是否需要在那里进行is_front_page()检查?我们希望在用户登录时更改首页,无论我们是否查看首页。现在是早上5点,所以我将在早上再试一次。谢谢你,RCV,效果很好。为了让解决方案更适合用户,可以用slug代替get_page_by_标题吗?页面段塞变化的可能性小于页面标题。您使用的是HTTP重定向吗?它使用的是PHP
标题函数。
位置:
。所以它马上就发生了。对不起,我不是那个意思。使用HTTP重定向挂接到
template\u redirect
hmm可能更好,我更新的答案上的内容是否更有意义?这是正确的开始方式。。。我不喜欢建议更新_选项并根据某些内容设置首页的解决方案,这可能会让一些用户进入错误的页面+1对于这个答案
<?php if(is_front_page()) {
    if (is_user_logged_in()) {
        $newURL = 'http://YourWebsiteURLhere.com';
        header('Location: '.$newURL);
    }
} ?>
function homepage_template_redirect()
{
    if( is_front_page() && is_user_logged_in() )
    {
        wp_redirect(get_page_link('contact'));
        exit();
    }
}
add_action( 'template_redirect', 'homepage_template_redirect' );