如何从我的网站主页中隐藏具有某些 ID 的某个类别的帖子?我需要像过滤器这样的解决方案:
function exclude_post($query) {
if ($query->is_home) {
...
}
return $query;
}
add_filter('pre_get_posts', 'exclude_post');
有人可以提供一个例子吗?
使用$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');
更新
根据问题出现的新细节,为了排除提要流中的某些帖子,而不是类别存档中的某些帖子,条件检查可能如下所示:
if( $query->is_feed() && !$query->is_archive() )
或者
if( $query->is_feed() && !$query->is_category() )
希望能帮助到你!
您还可以使用以下方式从帖子查询中排除某个类别
<?php
if ( is_home() )
{
query_posts($query_string . '&cat=-3');
}
?>
您可以在查询参数中使用简单的排除:-
<?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?>
它唯一的样本,你如何排除。
跳它工作..