2013-08-30 21 views
0

如何隐藏某些类别中来自我网站主页的某些ID的帖子?我需要像过滤器一样的解决方案:WordPress主页上的过滤邮件

function exclude_post($query) { 
    if ($query->is_home) { 
     ... 
    } 

    return $query; 
} 

add_filter('pre_get_posts', 'exclude_post'); 

有人可以提供一个例子吗?

回答

3

使用$query->set($query_var, $value);其中$ query_var是要在查询中添加/更新的变量。所以把这个你的病情里面:

// 1st parameter is the query variable the 2nd is its value, in this case an array of category IDs 
$query->set('category__not_in', array(2, 6)); 

记住是很好的做法放在条件的检查$query->is_main_query()pre_get_posts是一个动作钩子,因此您必须将add_filter更改为add_action。 一个动作钩子不会返回一个值,一个过滤器会做。

function exclude_post($query) { 
    if ($query->is_home() && $query->is_main_query()) { 
     $query->set('category__not_in', array(2, 6)); 
    } 
} 

add_action('pre_get_posts', 'exclude_post'); 

UPDATE

根据新的细节对这个问题不断出现,为了排除一些职位提要流,而不是在类别档案,有条件的检查可能看起来像:

if($query->is_feed() && !$query->is_archive()) 

if($query->is_feed() && !$query->is_category()) 

希望它有帮助!

+0

我又需要你的帮助,我修改了功能建议,现在我需要从RSS提要删除相同的帖子,我添加条件'if($ query-> is_home || $ query-> is_feed)'在主页是好的,但不是在饲料,我看到饲料 –

+1

@ DmytroZarezenko所有帖子,尝试只有'is_feed()'没有其他参数和'$ query - > *',看看发生什么事情 – iEmanuele

+0

当我只使用'is_feed'时,我看到主页和RSS中不需要的帖子,我mea n不工作( –

-1

您可以使用简单的排除在查询参数: -

<?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?> 

它的唯一样本,怎么给你排除。

滚开,工作..

+0

不好意思,但是wp_list_categories();函数可以隐藏或显示一些帖子?该功能将类别列表显示为链接,并且不用于获取|检索帖子 – iEmanuele

+0

我在说它的一个样本,你可以使用排除在后期查询..朋友 –

0

您还可以使用下面的方法来排除后查询类别

<?php 
if (is_home()) 
{ 
query_posts($query_string . '&cat=-3'); 
} 
?>