具有ACF嵌套字段的WP MetaQuery

时间:2018-10-22 13:08:26

标签: wordpress relationship repeater advanced-custom-fields post-meta

好的,所以我需要获取当前帖子所涉及的所有帖子。这是通过查询的帖子中的关系字段设置的,而不是通过我当前的职位。但奇怪的是,关系字段嵌套在转发器字段中,用于在页面上重复块。 因此,在我的“ block_repeater”中有一个关系字段“ block_relations”,我的查询如下所示:

$args = array(
            'post_type' => array('post', 'page'),
            'meta_key' => 'block_relations',
            'value' => '"' . $post->ID . '"',
            'compare' => 'LIKE',
        );
$q = new WP_Query($args);

此查询不返回任何内容,我认为是因为嵌套。在我的数据库“ postmeta”表中,“ block_relations”的条目看起来像“ blocks_0_block_relations”,“ blocks_1_block_relations”,依此类推。 有没有一种方法可以在一个查询中做到这一点,而不是查询所有具有“块”转发器的帖子,然后foreach使我的字段有问题并测试其是否具有适当的值?

2 个答案:

答案 0 :(得分:0)

您的$ args数组不正确

$args = array(
    'post_type' => array('post', 'page'),
    'meta_query' => array( array(
      'key' => 'block_relations',
      'value' => $post->ID,
      'compare' => 'LIKE',
    ) )
);
$q = new WP_Query($args);

答案 1 :(得分:0)

我已经找到了解决方案,而且效果不佳。问题是您必须按“ blocks_0_block_relations”键,但是元查询使用equals(=)运算符搜索meta_key,因此您必须进行自定义过滤器以过滤出您的特定查询并将其更改为使用LIKE比较。 解决方案:

Step #5: deploying functions
Step #5: functions: ensuring necessary APIs are enabled...
Step #5: functions: all necessary APIs are enabled
Step #5: functions: preparing functions directory for uploading...
Step #5: functions: packaged functions (91.42 KB) for uploading
Step #5: functions: functions folder uploaded successfully
Step #5: functions: updating Node.js 8 function XXXXXX(us-central1)...
Step #5: functions[XXXXXXX(us-central1)]: Successful update operation.
Step #5:
Step #5: Deploy complete!

以及用于更改where子句的自定义过滤器:

$args = array(
    'post_type' => array('post', 'page'),
    'meta_query' => array( 
        array(
            'key' => 'blocks_$_block_relations',
            'value' => $post->ID,
            'compare' => 'LIKE',
             ) 
        ),
    );
$q = new WP_Query($args);