我有三种定制的帖子类型,它们是相互关联的。项目、位置和反馈。项目有多个位置,1个位置有很多反馈。
关系用元值定义。反馈员额具有元值,其中值指向位置post id,位置post具有元值,其中值指向项目post id。
我想在反馈管理列表中创建一个自定义过滤器,其中行由项目过滤。
用'parse_query‘过滤器来做这件事会很好,因为我已经有一些过滤器附加在上面了。
如何做到这一点?
发布于 2021-08-20 23:21:16
一种解决方案可能是获取所有位置id,其中项目id匹配并与“OR”比较器进行比较。
$position_ids = get_positions_in_project($project_id);
foreach ($position_ids as $id) {
$meta_query[] = array(
'key' => 'feedback_position_relation',
'value' => $id,
'compare' => '=',
);
}
$meta_query['relation'] = 'OR';
$query->set('meta_query', $meta_query)但问题是,元查询不接受复杂的参数。我想要一个反馈,位置id是1,项目id是2,关系总是'OR‘。
在一个简单的问题中,这个解决方案应该给出答案。为了我的缘故,这个解决方案不起作用,因为我也想给用户过滤其他参数的能力。
我已经搜索过'in‘meta_query,但这似乎不受支持。
<#>更新
与wordpress 5.8.1 (我不知道早期版本是否有效),IN数组比较工作。
if ($_GET['project'] != 'all') {
$project_id = $_GET['project'];
$positions = get_position_ids_by_project($project_id);
$meta_query[] = array(
'key' => 'summary_summary_position',
'value' => $positions,
'compare' => 'IN',
);
}
$query->set('meta_query', $meta_query)https://wordpress.stackexchange.com/questions/393447
复制相似问题