使用TAX_QUERY不工作来查询两个分类

时间:2019-10-22 作者:Freddy

我有两种自定义分类法:

型号产品Type 可以是以下内容:

博客案例研究网络研讨会Subject 可以是:

我在WordPress后端有两个下拉菜单,用户可以从中选择typesubject 他们想从resources (我的自定义帖子类型)。

例如,以下帖子存在于resources:

  • Post 1: 标记为type 博客和subject 室外
  • Post 2: 标记为type 博客和subject 室内
  • Post 3: 标记为subject 室内
用户可以通过typesubject. 我的意思是,不是两个都需要,只能选择一个。但是,如果用户选择了typesubject, 我希望它显示带有两个标签的帖子。

Current approach:

$args = array(  
  \'post_type\' => \'resources\',
  \'post_status\' => \'publish\',
  \'posts_per_page\' => 8,
  \'tax_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'taxonomy\' => \'type\',
        \'field\'    => \'slug\',
        \'terms\'    => $resource_type,
    ),
    array(
        \'taxonomy\' => \'subject\',
        \'field\'    => \'slug\',
        \'terms\'    => $resource_subject,
    ),
  ),
  \'tax_query\' => array(
    \'relation\' => \'OR\',
    array(
        \'taxonomy\' => \'type\',
        \'field\'    => \'slug\',
        \'terms\'    => $resource_type,
    ),
    array(
        \'taxonomy\' => \'subject\',
        \'field\'    => \'slug\',
        \'terms\'    => $resource_subject,
    ),
  )

);
  • $resource_type: 是保存下拉列表值的变量type.
  • $resource_subject: 是保存的下拉值的变量subject.

Current results:

    过滤时subject 独自一人——这很有效。

    当按筛选时type 独自一人——这很有效。

    当同时使用两者进行过滤时,它不起作用。一、 e.我已过滤type 博客和subject 室内,它向我展示subject 户外立柱。

    或者,在查询两者时,以下选项可以工作,但在仅选择一个选项时不起作用:

     $args = array(  
        \'post_type\' => \'resources\',
        \'post_status\' => \'publish\',
        \'posts_per_page\' => $card_count,
        \'tax_query\' => array(
          \'relation\' => \'AND\',
          array(
              \'taxonomy\' => \'type\',
              \'field\'    => \'slug\',
              \'terms\'    => $resource_type,
          ),
          array(
              \'taxonomy\' => \'subject\',
              \'field\'    => \'slug\',
              \'terms\'    => $resource_subject,
          ),
        )
    
      );
    

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

如果您添加其他tax_query 给args最后一个tax_query 将替换以前的tax_query.

但无论如何,如果这些是标准:

按筛选时type 单独,仅显示resources 在该位置发布type.

当按筛选时subject 单独,仅显示resources 在该位置发布subject.

当按筛选时type subject, 仅显示resources 分配给两个岗位的岗位typesubject.

然后尝试以下操作:

$args = array(
    \'post_type\'      => \'resources\',
    \'post_status\'    => \'publish\',
    \'posts_per_page\' => 8,
);

// Filtering by both \'type\' and \'subject\'.
if ( $resource_type && $resource_subject ) {
    $args[\'tax_query\'] = array(
        \'relation\' => \'AND\',
        array(
            \'taxonomy\' => \'type\',
            \'field\'    => \'slug\',
            \'terms\'    => $resource_type,
        ),
        array(
            \'taxonomy\' => \'subject\',
            \'field\'    => \'slug\',
            \'terms\'    => $resource_subject,
        ),
    );
}
// Filtering by \'type\' only.
elseif ( $resource_type && ! $resource_subject ) {
    $args[\'tax_query\'] = array(
        array(
            \'taxonomy\' => \'type\',
            \'field\'    => \'slug\',
            \'terms\'    => $resource_type,
        ),
    );
}
// Filtering by \'subject\' only.
elseif ( $resource_subject ) {
    $args[\'tax_query\'] = array(
        array(
            \'taxonomy\' => \'subject\',
            \'field\'    => \'slug\',
            \'terms\'    => $resource_subject,
        ),
    );
}

相关推荐

Display Custom Taxonomy names

我正在尝试显示自定义帖子类型的自定义分类法。因此,此分类法特定于此自定义帖子类型。不幸的是,我无法让它们显示出来。这是我在函数中的代码。php注册自定义分类法:add_action(\'init\', \'products_categories\', 0); function products_categories(){ $labels = array (\'name\' => _x(\'Product Categories\',\'taxonomy general nam