我正在使用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);
基本上,我正在尝试获取自定义字段algorithm
具有的所有值的列表,并将其作为过滤器选项移交给关系字段related_coin
。
目前我什么也没回来。
有人建议我在做什么错吗?
答案 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”。
就像我说的那样,这可能就是您想要的,但请理解,这就是元查询的含义。
希望这会有所帮助!