Help with a $wpdb MySQL Query

时间:2016-05-25 作者:Matthew Haigh

我想对下面的查询进行扩展,查看使用高级自定义字段(ACF)插件创建的多个meta\\u键和meta\\u值。

e、 g。

meta\\u键“colors\\u%\\ u colour”meta\\u值“Red”

meta\\u键“colors\\u%\\ u design\\u style”meta\\u value“Plain”

这是我到目前为止在ACF文档中看到的内容(https://www.advancedcustomfields.com/resources/querying-the-database-for-repeater-sub-field-values/)

它成功检索红色(子字段)的结果。

$rows = $wpdb->get_results($wpdb->prepare(

"
SELECT *
FROM {$wpdb->prefix}postmeta
WHERE meta_key LIKE %s
    AND meta_value REGEXP %s
",
\'colours_%_colour\', // meta_name
\'red\' // meta_value

));
谢谢你,

马特。

1 个回复
SO网友:Howard E

这就是你想要的吗?使用元查询的“关系”,可以选择多个元键。您可以将“比较”更改为该功能可用的任何操作。(来自Codex)比较(字符串)-运算符以进行测试。可能的值为“=”、“!=”、“>”、“>=”、\'<;\',\'<;=\',\'“LIKE”、“NOT LIKE”、“IN”、“NOT IN”、“BETWEEN”、“NOT BETWEEN”、“EXISTS”和“NOT EXISTS”。默认值为“=”。

// WP_Query arguments
    $args = array (
            \'post_type\'          => \'your-post-type\',
                \'meta_query\'          => array(
                \'relation\' => \'AND\', 
             array(
                 \'key\'       => \'colours_%_colour\',
                 \'value\'     => \'Red\',
                 \'compare\'   => \'LIKE\',
                    ),

             array(
                 \'key\' => \'colours_%_design_style\',
                 \'value\' => \'Plain\',
                 \'compare\' => \'Like\'
                    ),
                 ), 
             );

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // do something
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();