wordpress - 带有 ACF 嵌套字段的 WP MetaQuery
问题描述
好的,所以我需要获取与当前帖子相关的所有帖子。这是通过查询帖子上的关系字段设置的,而不是我当前的。但奇怪的是,关系字段嵌套在一个重复器字段中,用于在页面上重复块。所以在我的“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 让我的字段有问题并测试它是否具有适当的值?
解决方案
我找到了解决方案,但它并不漂亮。问题是您必须使用键“blocks_0_block_relations”,但元查询使用 equals(=) 运算符搜索 meta_key,因此您必须制作自定义过滤器来过滤掉您的特定查询并更改它以使用 LIKE 比较。解决方案:
$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);
以及用于更改 where 子句的自定义过滤器:
function my_posts_where( $where ) {
$where = str_replace("meta_key = 'blocks_$", "meta_key LIKE 'blocks_%", $where);
return $where;
}
add_filter('posts_where', 'my_posts_where');
推荐阅读
- functional-programming - ((ff) (gg)) 在 AOR 和 NOR 中的减少方式不同吗?
- r - 仅使用 plotly::ggplotly 兼容的几何图形将箱形图放置在多面图的边缘
- javascript - 如何获取使用 DOM 而不是 HTML 创建的元素?
- python - 在python中使用requests.post时如何处理400错误
- dynamic - 如何在 ssis 执行 sql 任务中动态传递数据库名称
- json - 使用 MatTable 更新动态表中的行
- node.js - 2021 年 2 月 15 日之后,我还能将 firebase 云功能迁移到 Node.js 10 吗?
- c# - 根据状态值获取学生列表
- html - ¿ 如何在标签部分中使用或添加两个或更多组件?
- json - 滚动浏览 json api 并找到值 true 或 false flutter