首页 > 解决方案 > 根据帖子类型的多个 WP_Query args 组合

问题描述

我想meta_query根据帖子类型有单独的参数。

例如,我想查询t-shirts绿色衣领dress-shirts绿色内衬的,现在我只做一个帖子类型检查,我检查t-shirts 并且 dress-shirts我单独检查元值,这意味着它还将显示不同的组合,例如t-shirts具有绿色内衬的组合

$query = new WP_Query(array(
    'post_type' => array('t-shirts', 'dress-shirts'),
    'meta_query' => array(
      'relation' => 'OR',
      array(
        'key' => 'collar',
        'value' => 'green',
      ),
      array(
        'key' => 'inner-lining',
        'value' => 'green',
      )
    ),
));

如何将其设置为使用两个不同的 args,一个是 post 类型t-shirts,一个是单独的 args,如果 post 类型dress-shirts看起来像:

$query = new WP_Query(
  array(
    array(
      'post_type' => array('t-shirts'),
      'meta_query' => array(
        array(
          'key' => 'heal',
          'value' => 'green',
        )
      ),
    ),
    array(
      'post_type' => array('dress-shirts'),
      'meta_query' => array(
        array(
          'key' => 'sleeve',
          'value' => 'green',
        )
      ),
    ),
  )
);

做两个单独的查询是行不通的,因为它会弄乱分页。


请注意,这是wp.stackexchange上相同问题的副本,因为那里几乎没有活动。

标签: phpwordpresswordpress-themingmeta-query

解决方案


WP_Query 不接受这种参数格式。你可以试试下面的代码

$query = new WP_Query(
    array(
        'post_type' => array( 't-shirts', 'dress-shirts'),
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => 'heal',
                'value' => 'green',
            ),
            array(
              'key' => 'sleeve',
              'value' => 'green',
            )
        )
    )
);

推荐阅读