自定义WordPress默认的私人可见性模板页面

时间:2016-02-19 15:35:07

标签: wordpress templates private

得到了一个问题。谷歌没帮我:) 默认情况下,当您将可见性页面设置为私有时,它会为我的页面显示404找不到的模板。

我需要自定义WP私有模板才能设置我的特定内容。

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

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

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

1 个答案:

答案 0 :(得分:0)

我建议您在帖子类型中添加一些元框并通过在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为我们提供了添加许多元框的能力。您甚至可以在不触及模板的情况下为每个用户显示不同的内容。

  

注意:这可能会产生搜索引擎优化问题,因为您将有两个相同的内容   发布两个不同的URL。机器人无法登录您的   站点。