元查询同一键的多个值

时间:2019-06-10 作者:demetriomontalto

我正在尝试用多个值查询wordpress,但它看起来不能接受超过4个关键字

我目前正在使用循环,我已经尝试切换到IN 运算符,但我需要使用通配符进行查询,而REGEXP 做工作,在不

foreach ($keywords as $value) {
    $args[\'meta_query\'] = array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'customfields\',
            \'value\' => $value,
            \'compare\' => \'REGEXP\'  
        )
    );
}
在这种情况下$keywords 是我需要查询到自定义字段的单词数组。它可以使用几个关键字,但可以使用5个或更多关键字。

2 个回复
SO网友:jdm2112

是否尝试将值数组传递给value 论点

$your_terms = array( \'foo\', \'bar\', \'baz\' );

$args[\'meta_query\'] = array(
    \'relation\' => \'OR\',
    array(
        \'key\' => \'customfields\',
        \'value\' => $your_terms,
        \'compare\' => \'REGEXP\'  
    )
);

$this_query = new WP_Query( $args );

SO网友:nmr

在其当前形式中meta_queryoverwritten 在每次迭代中。最后,在中只有一个自定义字段meta_query:

根据要使用的运算符,meta_query 参数应如下所示:

“的LIKE“,”REGEXP“”

if( is_array($keywords) && count($keywords) ) {

    $args[\'meta_query\'] = array( \'relation\' => \'OR\' );
    foreach( $keywords as $value )
    {
        $args[\'meta_query\'][] = array(
            \'key\' => \'customfields\',
            \'value\' => $value,
            \'compare\' => \'REGEXP\', // or \'LIKE\'
        );
    }
}
//  === result: ===
// $args[\'meta_query\'] = array( 
//     \'relation\' => \'OR\',
//     [ \'key\' => \'customfields\', \'value\' => \'value_1\', \'compare\' => \'REGEXP\' ],
//     [ \'key\' => \'customfields\', \'value\' => \'value_2\', \'compare\' => \'REGEXP\' ],
//     [ \'key\' => \'customfields\', \'value\' => \'value_3\', \'compare\' => \'REGEXP\' ],
// );
“的IN“”

if( is_array($keywords) && count($keywords) ) {

    $args[\'meta_query\'] = array( 
        \'relation\' => \'OR\',
        array(
            \'key\' => \'customfields\',
            \'value\' => $keywords,
            \'compare\' => \'IN\',
        )
    );
}