You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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č

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:57:27