根据帖子类型的多个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',)
    ),));

如何设置它以与两个不同的参数一起使用,如果帖子类型为t-shirts,则为一个,而如果帖子类型为dress-shirts,则为单独的arg,其外观类似于:

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

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


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

解决方法

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',)
        )
    )
);
,

您还可以为每种帖子类型创建两个数组,并将wp_query循环放入获取参数的函数中,因此您要使用的任何地方都足以调用循环函数,并为其提供参数数组每个帖子类型。

函数wp_loop($ args){

$ post =新的WP_Query($ args);

while($ post-> have_posts()):$ post-> the_post();

 ...

结束; wp_reset_postdata(); }

现在,对于每种帖子类型,我们执行以下操作: $ args =数组( 'post_type'=>'t-shirts', ... ); wp_loop($ args);

对于下一个帖子类型(衬衫),我们的工作方式相同: $ args =数组( 'post_type'=>'礼服衬衫', ... ); wp_loop($ args);