【问题标题】:Customize WordPress default private visibility template page自定义 WordPress 默认私有可见性模板页面
【发布时间】:2016-02-19 15:35:07
【问题描述】:

有一个问题。谷歌没有帮助我:) 默认情况下,当您将可见性页面设置为私有时,它会显示 404-not-found ,就像我的页面模板一样。

我需要自定义 WP 私有模板,以便设置我的特定内容。

我不想创建自定义模板页面并设置类似

if (is_user_logged_in ()) {
    // f.e. Login/Signup with Facebook}
} else { 
    // show content
}

当我将页面设置为私有时,只需编辑默认的 Wordpress 模板。 有这么好心的人来帮助我吗? :)

【问题讨论】:

    标签: wordpress templates private


    【解决方案1】:

    我建议通过在the_content 上应用过滤器来为您的帖子类型添加一些元框并显示私人和公共内容的最佳方式

    但你仍然在寻找一些核心技巧,然后考虑这个例子

    function alter_private_query($posts, $query) {
        if (!is_user_logged_in() && !empty($query->is_singular) && isset($posts[0]->post_status) && $posts[0]->post_status == 'private') {
            $posts = get_posts(array(
                        'name'        => 'some-public-post-slug',
                        'post_type'   => 'post',
                        'post_status' => 'publish',
                        'numberposts' => 1
                    ));
        }
    
        return $posts;
    }
    add_filter('posts_results', 'alter_private_query', 1, 2);
    

    如果用户未登录,WordPress 清空$query->posts 时没有过滤器。 仍然在上面你有一个过滤器posts_results。使用它,您可以通过公开帖子替换posts 变量。

    只是回答你的条件问题,我完全不推荐。毕竟 WordPress 为我们提供了添加许多元框的能力。您甚至可以在不触碰模板的情况下为每个用户显示不同的内容。

    注意:这可能会导致 SEO 问题,因为您将拥有两个相同的内容 使用两个不同的 URL 发布。机器人不能不能登录到你的 网站。

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多