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

WordPress:如何让SANTA FE分类模板仅显示DAY TOURS类文章?

解决方案:筛选同时属于两个分类的文章

要让category-santa-fe.php仅展示同时标记了SANTA FE和DAY TOURS分类的文章,需要利用WordPress的分类交集查询(AND关系),以下提供两种实现方式:


方法一:通过主题functions.php添加查询钩子(推荐)

这种方式无需修改模板循环逻辑,更符合WordPress开发规范。将以下代码添加到主题的functions.php文件末尾:

add_action('pre_get_posts', 'filter_santa_fe_day_tours');
function filter_santa_fe_day_tours($query) {
    // 仅在前台SANTA FE分类页面的主查询中生效
    if (!is_admin() && $query->is_main_query() && is_category('santa-fe')) {
        // 获取DAY TOURS分类对象(替换slug为你的实际分类slug)
        $day_tours_cat = get_category_by_slug('day-tours');
        if ($day_tours_cat) {
            $query->set('tax_query', array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'category',
                    'field'    => 'slug',
                    'terms'    => 'santa-fe',
                ),
                array(
                    'taxonomy' => 'category',
                    'field'    => 'slug',
                    'terms'    => 'day-tours',
                ),
            ));
        }
    }
}

注意:如果你的DAY TOURS分类slug不是day-tours,请替换为后台分类编辑页显示的实际slug。


方法二:直接修改category-santa-fe.php模板

若不想修改functions.php,可以直接替换模板内的查询逻辑:

  1. 替换模板开头的循环初始化代码:
    把原代码开头的<?php if(have_posts()): while(have_posts()): the_post(); ?>替换为:
<?php
// 自定义查询参数:同时匹配两个分类
$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => 'santa-fe',
        ),
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => 'day-tours',
        ),
    )
);
$custom_query = new WP_Query($args);

if($custom_query->have_posts()): while($custom_query->have_posts()): $custom_query->the_post(); ?>
  1. 修改模板结尾的循环收尾代码:
    将原代码末尾的<?php endif; ?>替换为:
<?php endif; wp_reset_postdata(); ?>

wp_reset_postdata()用于恢复主查询的上下文,避免影响后续模板内容。


核心说明

  • tax_query中的relation => 'AND'是关键,它指定两个分类条件必须同时满足(即文章属于两个分类的交集)。
  • 也可以用分类ID替代slug,只需将'field' => 'slug'改为'field' => 'term_id','terms'对应填写分类ID即可。

内容的提问来源于stack exchange,提问作者Kristin Mora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:45:25