将过滤器添加到acf关系字段

Ann*_*lee 6 php wordpress advanced-custom-fields

我正在使用wordpress 4.9.7,我正在使用advanced custom fields 4.4.12.

在我的后端,我有一个被调用的帖子类型coins,它有一个叫做的关系字段related_coins和一个被调用的文本字段algorithm.基本上我的关系字段创建了与自定义帖子类型的关系products.所以产品可以与几个硬币有关系.

我目前只能按帖子类型过滤.但是,我想按algorithm帖子类型的自定义字段进行过滤coin.

在此输入图像描述

我尝试了以下方法:

function graphic_card_products_query( $args, $field, $post_id ) {

    $args['meta_query'] = array(
        array(
        'key' => 'algorithm', // name of custom field
        'value' => 'related_coins',
        'compare' => 'LIKE'
        )
    )

    // return
    return $args;

}

// filter for every field
add_filter('acf/fields/relationship/query/name=related_coins', 'graphic_card_products_query', 10, 3);
Run Code Online (Sandbox Code Playgroud)

基本上我试图得到自定义字段algorithm具有的所有值的列表,并将其作为过滤器选项返回到关系字段related_coin.

目前我什么都没收到.

有什么建议我做错了吗?

小智 3

我已经使用您的代码作为基础对此进行了测试,并且我可以确认它对我有用。我会详细说明我做了什么。

首先,您可能已经发现了它,但是您在meta_query. 所以我解决了这个问题。

$args['meta_query'] = array(
    array(
    'key' => 'algorithm', // name of custom field
    'value' => 'related_coins',
    'compare' => 'LIKE'
    )
); // <-- this one!
Run Code Online (Sandbox Code Playgroud)

接下来,我确保我要过滤的字段确实是“关系”字段,而不是任何其他“关系”字段类型(例如帖子对象、链接、分类法)。他们有自己的过滤器(ACF参考:过滤器)

最后,我确认元查询是正确的并且符合我的预期。因此,您的 meta_query 正在寻找具有自定义字段“algorithm”且值为 的产品'related_coins'。(这很可能是正确的,但请确保您想要的值,'related_coins'因为这听起来更像是键,而不是值)。然后,您使用 LIKE 运算符将值与值中包含的“lated_coins”进行匹配。例如,它将匹配'123_related_coins''related_coins_123',以及“related_coins”。

正如我所说,这可能是您想要的,但只需理解这就是元查询的含义即可。

希望这可以帮助!