我只希望从首页中排除该类别的最新帖子。应显示同一类别中的所有其他类别。我似乎无法想出这个。这是我到目前为止所得到的,但它从头版中排除了整个类别。
function exclude_category2($query) {
if ( $query->is_home ) {
$query->set('cat', '-1,-4,-36');
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category2');
感谢您的帮助!
答案 0 :(得分:0)
您可以使用像template_redirect
这样的钩子来使用array_shift
从全局$ posts数组中删除顶部元素,就像gok建议的那样(有点,他并没有真正说明如何去做)。在这种情况下,它看起来像这样
add_action( 'template_redirect', function() {
global $posts;
array_shift( $posts );
});
但我认为更优雅的方法是这个
add_action( 'loop_start', function( $args ) {
$args[0]->next_post();
});
如果你把它放在functions.php中,在Wordpress循环的开头,它将自动转到下一篇文章,这意味着它将始终跳过第一篇文章。
如果您只想在某些页面上执行此操作,请在函数内使用相关的模板标记,如is_home()
。 if ( is_home() ) $args[0]->next_post();
。
如果您不使用PHP版本> = 5.3,则必须为该函数命名,因为较低版本的PHP不支持匿名函数。