从ACF关系类型中获取相关的ACF字段



我有一个自定义的帖子类型"item"它包含一个颜色选择器字段。在另一个自定义帖子类型"publication"我添加了关系字段来创建与项目的关联。我试图使用get_posts从关系中提取颜色代码,但一直没有成功。

$related_items = get_posts(array(
'post_type' => 'item',
'meta_query' => array(
array(
'key' => 'related_item', // name of custom field
'value' => '"' . get_the_ID() . '"',
'compare' => 'LIKE'
)
)
));

有什么想法,为什么这不是工作?

这可能无法工作的原因有很多,因此我建议采用更简化的方法。

如果您已经使用ACF创建了一个关系,那么不要对所有帖子进行查询,只需使用ACF中的get_field() https://www.advancedcustomfields.com/resources/get_field/函数。这将返回您需要的帖子或帖子id。它还将占用更少的资源,因为数据已经保存到您的当前帖子中。然后,如果您使用ACF来添加自定义颜色,您可以使用相同的get_field()函数,但将引用的ID作为第二个参数传递。

例子:

// get related item first
$related_item = get_field('related_item');

根据您设置ACF字段的方式,它将提供帖子或ID。如果它返回一个对象,post,那么获取颜色的下一行应该是:

$related_item_color = get_field('color', $related_item->ID);

Color为相关项的字段名。如果$related_item返回一个数字,那么只需将该数字传递到get_field,它就是post的ID。

$related_item_color = get_field('color', $related_item);

所有这些都假设您正在从post模板或从该模板调用的函数中工作。

最新更新