在wordpress中检索具有其他标记和/或(自定义)分类法的标记列表



我希望有人能为我的这个小脑筋急转弯指明正确的方向?

基本上,我正在开发一个wordpress网站,该网站同时运行PHP和WP-graphQL。本质上它是一个视频网站。初始加载是通过普通的wordpress PHP完成的,然后通过graphql响应导航视频。我还应该提到我正在使用WPGraphQL税务查询插件,并使用自定义的帖子类型和分类

我想为它建立一个过滤系统,可以毫无问题地实现我需要的几乎所有功能。过滤器(select2(加载初始PHP加载中的所有标记,并按预期发送Graphql查询。然而,有100个标签,所以假设第一个过滤请求返回2个结果,在所有这些标签中,只有5个附加到这两个结果,我想尝试获得它,这样只有这5个显示出来,以启用第二轮过滤,而不是100个只会不断返回"无结果"的标签。显然,这是一个基本的例子。。。

本质上,我想过滤可用的标签列表以及结果本身,但我不知道如何做到这一点。我认为WPGraphql可能对此有点局限,但我想,如果我可以通过PHP实现这一点,那么我可以进行第二次AJAX调用,并使用Javascript隐藏不相关的结果。显然,如果有人能在WP GraphQL请求中给我建议,那会更好。。。。尽管对此不抱太大希望

我觉得这种"动态过滤"一定很常见,但我可以在任何地方找到任何能给我指明正确方向的东西。

有人有什么想法/想法可以帮助我实现这一目标吗?

提前感谢您抽出时间!:(

事实上,我相信我已经弄清楚了,所以会在这里发布,以防其他人有同样的问题。

步骤1-获取相关帖子

$relevantItems = new WP_Query(
array(
'post_type' => 'video',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'tax_query' => $taxQuery
)
);

$taxQuery是预构建的tax_query对象&注意"字段"参数只会产生一个ID的数组

步骤2-使用这些对象ID的获取相关术语

$relevantTags => get_terms([
'taxonomy' => 'post_tag',
'fields' => 'id=>name',
'object_ids' => $relevantItems->posts,
])

最终结果将仅为与税务查询匹配的过帐中的术语。在我的场景中,我只需要ID&name从我的select元素中隐藏不相关的术语,但省略"fields"将获得完整的术语对象。

可能有更好的方法可以做到这一点(例如$wpdb->prepare(,但上述方法确实可以完成的工作

最新更新