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

时间:2018-07-06 13:14:00

标签: php wordpress advanced-custom-fields

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

在我的后端中,我有一个称为coins的帖子类型,它具有一个称为related_coins的关系字段和一个称为algorithm的文本字段。基本上,我的关系字段会与自定义帖子类型products创建一个关系。因此产品可以与多个硬币有关系。

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

enter image description here

我尝试了以下操作:

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);

基本上,我正在尝试获取自定义字段algorithm具有的所有值的列表,并将其作为过滤器选项移交给关系字段related_coin

目前我什么也没回来。

有人建议我在做什么错吗?

1 个答案:

答案 0 :(得分:2)

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

首先,您可能已经发现了它,但是在meta_query之后缺少分号。所以我解决了。

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

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

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

就像我说的那样,这可能就是您想要的,但请理解,这就是元查询的含义。

希望这会有所帮助!