如何将meta_query与db值的子段进行比较

时间:2015-06-22 13:43:40

标签: php wordpress

我正在尝试查询我网站中自定义帖子类型的一些帖子,而这就是我正在做的事情:

$query_adresses = array (
        'order'     => 'ASC',
        'cat'       => $_GET["cat"],
        'post_type'=> 'adressen',
        'posts_per_page'   => '-1',
        'meta_query' => array(
            array(
                'key'     => 'postcode',
                'value'   => $target_zips,
                'compare' => 'IN'
            )
        )
      );

正如您所看到的,我正在检查zipcodes中的匹配项。 $target_zips数组包含一组邮政编码值,如:5641, 1011, 3455。我帖子中的postcode字段包含以下值:5641GH, 1011AB, 3455TR。所以我需要做的就是进行比较,但只使用帖子postcode字段的前4个字符。这可能吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您可以进行REGEXP搜索:

$query_adresses = array (
    'order'     => 'ASC',
    'cat'       => $_GET["cat"],
    'post_type'=> 'adressen',
    'posts_per_page'   => '-1',
    'meta_query' => array(
        array(
            'key'     => 'postcode',
            'value'   => '^(5641|1011|3455)',
            'compare' => 'REGEXP'
        )
    )
);

正则表达式的翻译:

^:在字符串

的开头断言位置

(5641|1011|3455):捕获论坛匹配564110113455

更多信息in the Codex