用于排除未登录用户的类别帖子的功能

时间:2015-02-12 16:20:39

标签: wordpress function login categories

是否可以在wordpress主题function.php文件中添加功能,以便在用户未登录时从某个类别中排除(读取:完全隐藏)帖子?

我知道有些插件可以隐藏管理部分中的类别。但这是关于前端的。我还发现隐藏帖子内容的插件,但仍显示标题和某种登录信息。但我想完全隐藏它,好像帖子不存在一样。我知道可以在循环中将以下代码添加到不同的文件中:

<?php
if ( is_user_logged_in() ) {
query_posts();
}
else{
query_posts( cat= -1 );
}
?>

但是可以只添加一个功能来实现吗?或者这不是它的工作原理吗?请赐教; - )

1 个答案:

答案 0 :(得分:0)

您正在寻找pre_get_posts()行动。以下内容应该有效:

function exclude_posts_from_category($query) {
    if (is_user_logged_in() && $query->is_main_query()) {
        $query->set('post__not_in', array(1));
    }
}

add_action('pre_get_posts', 'exclude_posts_from_category');