我只需要在博客列表页面上列出某些类别的帖子,让我们说类别ID 5.我需要它来自插件或function.php文件。我不想更改模板文件,我认为博客列表在index.php上。
我使用了parse_query钩子,如下所示。但是也影响到其他地方。菜单栏消失了。请帮我。谢谢。
add_filter( 'parse_query', 'pp_posts_filter' );
function pp_posts_filter( $query ){
$query->query_vars['cat'] = 5;
}
答案 0 :(得分:1)
使查询更改仅针对主查询而不是辅助菜单(如菜单或边栏等)。使用is_main_query函数,即
add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' );
function foo_modify_query_exclude_category( $query ) {
if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) )
$query->set( 'cat', '-5' );
}