Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WordPress-带WP_查询的SQL请求,在post_类型和分类法之间使用或_Wordpress - Fatal编程技术网

WordPress-带WP_查询的SQL请求,在post_类型和分类法之间使用或

WordPress-带WP_查询的SQL请求,在post_类型和分类法之间使用或,wordpress,Wordpress,我的问题很简单,我试图获得公文包帖子(来自插件)和包含“公文包”类别的文章(我自己制作) 看起来post_类型和tax_查询之间的关系是一个关系,我需要一个OR,我如何才能做到这一点 我试着按照官方文件去做,但是我被卡住了。() 感谢您的帮助。下面是一个关系为“或”的示例: $args = array( 'post_type' => 'portfolio', 'meta_query' => array( 'relation' => 'OR', /

我的问题很简单,我试图获得公文包帖子(来自插件)和包含“公文包”类别的文章(我自己制作)

看起来post_类型和tax_查询之间的关系是一个关系,我需要一个OR,我如何才能做到这一点

我试着按照官方文件去做,但是我被卡住了。()
感谢您的帮助。

下面是一个关系为“或”的示例:

$args = array(
    'post_type' => 'portfolio',
    'meta_query' => array(
        'relation' => 'OR', /* <-- here */
        array(
            'key' => 'color',
            'value' => 'blue',
            'compare' => 'NOT LIKE'
        ),
        array(
            'key' => 'price',
            'value' => array( 20, 100 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
);
$query = new WP_Query( $args );
$args=array(
“post_type”=>“portfolio”,
“元查询”=>数组(
'关系'=>'或',/*'颜色',
'值'=>'蓝色',
'比较'=>'不相似'
),
排列(
“键”=>“价格”,
'值'=>数组(20100),
'类型'=>'数值',
'比较'=>'之间'
)
)
);
$query=新的WP\u查询($args);

下面是一个关系为“或”的示例:

$args = array(
    'post_type' => 'portfolio',
    'meta_query' => array(
        'relation' => 'OR', /* <-- here */
        array(
            'key' => 'color',
            'value' => 'blue',
            'compare' => 'NOT LIKE'
        ),
        array(
            'key' => 'price',
            'value' => array( 20, 100 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
);
$query = new WP_Query( $args );
$args=array(
“post_type”=>“portfolio”,
“元查询”=>数组(
'关系'=>'或',/*'颜色',
'值'=>'蓝色',
'比较'=>'不相似'
),
排列(
“键”=>“价格”,
'值'=>数组(20100),
'类型'=>'数值',
'比较'=>'之间'
)
)
);
$query=新的WP\u查询($args);

我没有找到只使用一个查询的解决方案。(无法将
更改为

因此,我提出了两个问题:

$query1 = new WP_Query(array('post_type' => 'portfolio'));
$query2 = new WP_Query(array(
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => 'portfolio',
        )
    )));

$query = merge_WP_queries($query1, $query2);

function merge_WP_queries(WP_Query $query1, WP_Query $query2){
    $wp_query_returned = new WP_Query();
    $wp_query_returned->posts = array_merge( $query1->posts, $query2->posts );

    //populate post_count count for the loop to work correctly
    $wp_query_returned->post_count = $query1->post_count + $query2->post_count;

    return $wp_query_returned;
}

它工作正常,即使它不是我想要使用的。

我还没有找到任何只使用一个查询的解决方案。(无法将
更改为

因此,我提出了两个问题:

$query1 = new WP_Query(array('post_type' => 'portfolio'));
$query2 = new WP_Query(array(
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => 'portfolio',
        )
    )));

$query = merge_WP_queries($query1, $query2);

function merge_WP_queries(WP_Query $query1, WP_Query $query2){
    $wp_query_returned = new WP_Query();
    $wp_query_returned->posts = array_merge( $query1->posts, $query2->posts );

    //populate post_count count for the loop to work correctly
    $wp_query_returned->post_count = $query1->post_count + $query2->post_count;

    return $wp_query_returned;
}

它工作正常,即使它不是我想要使用的。

这会在两个元查询之间产生OR,对吗?所以基本上如果颜色不象蓝色或者价格在20到100之间。但它仍然是一个和port_type=“portfolio”。@Vadorequest我认为您必须执行两个不同的WP_查询并合并结果。真的吗?这正是我不应该做的。这是一个非常坏的习惯,我甚至不知道如何合并结果,因为WP_查询返回的是一个对象,而不是数组。我考虑过这一点,但我更喜欢使用一个查询,如果使用正确的SQL字符串,我会这样做。这会在两个元查询之间产生OR,对吗?所以基本上如果颜色不象蓝色或者价格在20到100之间。但它仍然是一个和port_type=“portfolio”。@Vadorequest我认为您必须执行两个不同的WP_查询并合并结果。真的吗?这正是我不应该做的。这是一个非常坏的习惯,我甚至不知道如何合并结果,因为WP_查询返回的是一个对象,而不是数组。我考虑过这一点,但我更喜欢使用一个查询,如果使用正确的SQL字符串,我会这样做。