从 ACF 关系类型中获取相关的 ACF 字段
Getting related ACF fields from ACF relationship type
我有一个名为“item”的自定义 post 类型,其中包含一个颜色选择器字段。在另一个名为“publication”的自定义 Post 类型中,我添加了 Relationship 字段以创建与项目的关联。我正在尝试使用 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 创建了关系,则无需查询所有 post,只需使用 ACF 中的 get_field()、https://www.advancedcustomfields.com/resources/get_field/ 函数即可。那应该 return 您需要的 post 或 post id。它还将占用更少的资源,因为该数据已经保存到您当前的 post。然后,如果您使用 ACF 添加自定义颜色,则可以使用相同的 get_field() 函数,但将引用的 ID 作为第二个参数传入。
示例:
// get related item first
$related_item = get_field('related_item');
根据您设置 ACF 字段的方式,它将提供 post 或 ID。如果它 return 是一个对象,即 post,那么您获取颜色的下一行将如下所示:
$related_item_color = get_field('color', $related_item->ID);
颜色是相关项目的字段名称。如果 $related_item return 是一个数字,那么只需将该数字传递给 get_field 它就是帖子 ID。
$related_item_color = get_field('color', $related_item);
所有这些假设您正在使用 post 模板或从该模板调用的函数。
我有一个名为“item”的自定义 post 类型,其中包含一个颜色选择器字段。在另一个名为“publication”的自定义 Post 类型中,我添加了 Relationship 字段以创建与项目的关联。我正在尝试使用 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 创建了关系,则无需查询所有 post,只需使用 ACF 中的 get_field()、https://www.advancedcustomfields.com/resources/get_field/ 函数即可。那应该 return 您需要的 post 或 post id。它还将占用更少的资源,因为该数据已经保存到您当前的 post。然后,如果您使用 ACF 添加自定义颜色,则可以使用相同的 get_field() 函数,但将引用的 ID 作为第二个参数传入。
示例:
// get related item first
$related_item = get_field('related_item');
根据您设置 ACF 字段的方式,它将提供 post 或 ID。如果它 return 是一个对象,即 post,那么您获取颜色的下一行将如下所示:
$related_item_color = get_field('color', $related_item->ID);
颜色是相关项目的字段名称。如果 $related_item return 是一个数字,那么只需将该数字传递给 get_field 它就是帖子 ID。
$related_item_color = get_field('color', $related_item);
所有这些假设您正在使用 post 模板或从该模板调用的函数。