首页 > 解决方案 > 使用高级自定义字段关系字段帖子类型修复 wordpress/elementor 的自定义查询

问题描述

我想知道是否有人可以帮助我。我似乎无法让这个案例工作(因为我是 PHP 的菜鸟)。

案例:我的 wordpress 网站有两种“帖子类型”

通过高级自定义帖子,我在网络研讨会帖子类型中设置了一个关系字段。所以我可以选择与该特定帖子相关的发言人。

我使用 elementor 并且需要使用 elementor 的帖子小部件通过单个网络研讨会页面模板显示相关的演讲者。这必须通过自定义查询来完成。在 elementor 中,您可以设置自定义查询 ID。这需要一个 php 查询代码。

现在我似乎无法正确获取此查询数组代码。

关于自定义查询的 Elementor 文档: https ://developers.elementor.com/custom-query-filter/#Using_the_Custom_Filter

互联网上的一些相关答案(但似乎仍然无法正常工作): 按关系字段 (ACF) 对 Elementor 帖子的自定义查询过滤器

我在 Elementor 中使用的自定义查询 ID 是“Spreker_filter”

我的代码:

add_action( 'elementor/query/spreker_filter', function( $query ) {
// Get current meta Query
$meta_query = $query->get( 'meta_query' );

// If there is no meta query when this filter runs, it should be initialized as an empty array.
if ( ! $meta_query ) {
$meta_query = [];
}

// Append our meta query
$meta_query[] = [
'key' => 'sprekers',
'value' => '"' . get_the_ID() . '"',
'compare' => 'in',
];
$query->set( 'meta_query', $meta_query );
} );

标签: phpwordpresselementor

解决方案


看起来我遇到了同样的问题。我已经用这个自定义查询解决了它

add_action( 'elementor/query/retrieveLinkedCpts', function( $query ) {
    $ids = get_field( 'my_relationship_field', false, false );
    $query->set( 'post__in', $ids );
});

来源:https ://github.com/elementor/elementor/issues/4916

让我知道它是否有效


推荐阅读