如何在WordPress主题中仅显示特定分类的文章?
解决WordPress仅显示特定分类文章的问题
嘿,这个需求挺常见的,我给你两种靠谱的实现方式,你可以根据自己的场景选:
方法一:修改主查询(推荐,不改动模板循环代码)
这种方法不用修改你现有的模板代码,只需要在主题的functions.php文件里添加一段代码,就能让主循环只加载指定分类的文章:
function filter_posts_by_news_category( $query ) { // 只在前台主查询生效,避免影响后台和其他查询 if ( $query->is_home() && $query->is_main_query() && !is_admin() ) { // 指定分类别名(slug),这里"news"是你"News"分类的别名,注意是小写哦 $query->set( 'category_name', 'news' ); // 如果你知道分类ID,也可以用cat参数,比如cat=5 // $query->set( 'cat', 5 ); } } add_action( 'pre_get_posts', 'filter_posts_by_news_category' );
小贴士:分类的别名(slug)可以在WordPress后台的「文章」→「分类」里,编辑"News"分类时看到,一般默认是小写的"news"。
方法二:直接替换模板里的循环代码
如果你更倾向于直接修改模板文件里的代码,可以把你现有的那段代码替换成下面的自定义循环:
// 定义查询参数,指定只加载"News"分类的文章 $news_query = new WP_Query( array( 'category_name' => 'news', // 同样用分类别名 // 可选:控制显示的文章数量,比如showposts=5 // 'showposts' => 5, ) ); // 开始自定义循环 if( $news_query->have_posts() ){ while( $news_query->have_posts() ){ $news_query->the_post(); get_template_part( 'template-parts/content', 'koncert'); } // 重置文章数据,避免影响后续查询 wp_reset_postdata(); } else { // 如果该分类下没有文章,可以显示提示 echo '<p>暂无新闻文章</p>'; }
两种方法都能实现你的需求,方法一更灵活,不用改模板;方法二则更直观,适合只在某个特定模板里生效的场景~
内容的提问来源于stack exchange,提问作者Andrej Kurač
相关产品推荐
相关产品推荐

