WP_QUERY、TAX_QUERY和TERM_META:如何?

时间:2017-07-06 作者:Blackbam

我有一个定制的post类型产品(葡萄酒)。以下各项都是自定义分类法:

在葡萄酒的单一产品视图中,我想进行以下查询:

1) 查找所有具有same family, same size 但是来自different vintage

2) 查找same family 并拥有same vintage 还有一个different size.

现在的问题是numeric year 是的自定义术语元属性vintage term. 这个numeric bottle size 是大小术语的自定义术语元属性。

对于第一个查询,我尝试了以下操作:

                $other_years = get_posts(array(
                  \'post_type\' => \'product\',
                  \'numberposts\' => -1,
                  \'tax_query\' => array(
                    array(
                      \'taxonomy\' => \'family\',
                      \'field\' => \'id\',
                      \'terms\' => $family->term_id, // Where term_id of Term 1 is "1".
                      \'include_children\' => false
                    ),
                    array(
                      \'taxonomy\' => \'size\',
                      \'field\' => \'id\',
                      \'terms\' => $size->term_id, // Where term_id of Term 1 is "1".
                      \'include_children\' => false
                    ),
                    array(
                      \'taxonomy\' => \'vintage\',
                      \'field\' => \'id\',
                      \'terms\' => array($vintage->term_id), // Where term_id of Term 1 is "1".
                      \'include_children\' => false,
                      \'operator\' => \'NOT IN\'
                    ),
                  )
                ));
It works. 然而:与其比较term_id (此处:年份的术语id)我想比较术语自定义元值(year\\u numeric)是否不同。

有没有可能进行这样的查询?

2 个回复
最合适的回答,由SO网友:jgangso 整理而成

AFAIK在单个WP\\u查询中无法实现这一点,因此您必须首先获得一个具有different year 而不是问题中的那个。

我认为通过以下几点,你会非常接近。(没有要立即测试的env)

$other_years_terms = get_terms(
     \'taxonomy\'     =>  \'vintage\',
     \'meta_key\'     =>  \'year_numeric\',
     \'meta_value\'   =>  $the_current_wine_year,   // You\'ll have to figure that out
     \'meta_compare\' =>  \'!=\',
     \'fields\'       =>  \'ids\'
);

$other_years_posts = get_posts(array(
              \'post_type\' => \'product\',
              \'numberposts\' => -1,
              \'tax_query\' => array(
                array(
                  \'taxonomy\' => \'family\',
                  \'field\' => \'id\',
                  \'terms\' => $family->term_id, // Where term_id of Term 1 is "1".
                  \'include_children\' => false
                ),
                array(
                  \'taxonomy\' => \'size\',
                  \'field\' => \'id\',
                  \'terms\' => $size->term_id, // Where term_id of Term 1 is "1".
                  \'include_children\' => false
                ),
                array(
                  \'taxonomy\' => \'vintage\',
                  \'field\' => \'term_id\',
                  \'terms\' => $other_years_terms,
                ),
              )
            ));

SO网友:Nick M.

我相信您正在检查元密钥何时不存在。

请参考类似问题:query all posts where a meta key does not exist

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post