首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按自定义元列筛选自定义post类型管理列表,其中该列是另一个自定义post元值。

按自定义元列筛选自定义post类型管理列表,其中该列是另一个自定义post元值。
EN

WordPress Development用户
提问于 2021-08-18 10:28:37
回答 1查看 278关注 0票数 0

我有三种定制的帖子类型,它们是相互关联的。项目、位置和反馈。项目有多个位置,1个位置有很多反馈。

关系用元值定义。反馈员额具有元值,其中值指向位置post id,位置post具有元值,其中值指向项目post id。

我想在反馈管理列表中创建一个自定义过滤器,其中行由项目过滤。

用'parse_query‘过滤器来做这件事会很好,因为我已经有一些过滤器附加在上面了。

如何做到这一点?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2021-08-20 23:21:16

一种解决方案可能是获取所有位置id,其中项目id匹配并与“OR”比较器进行比较。

代码语言:javascript
复制
$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数组比较工作。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/393447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档