使用Advanced Custom Fields(ACF)插件,可以轻松地创建关系字段以建立任何两个自定义帖子类型之间的链接关系。然而,这种建立的关系是单向的,即只会显示一条链接。为了在以后回溯时方便双向工作,需要建立双向元数据。
下面是如何实现此功能的代码示例:
// 在第一个自定义帖子类型(即来源帖子类型)中添加以下代码 add_action('acf/update_value/name=related_custom_type', 'update_bidirectional_relationship', 10, 3);
function update_bidirectional_relationship($value, $post_id, $field) { // 从ACF中获取该自定义字段的名称和ID $field_name = $field['name']; $field_key = $field['key'];
// 获取关联帖子的ID并建立双向关系
foreach($value as $related_post_id)
{
// 获取相关帖子类型
$related_post_type = get_post_type($related_post_id);
// 获取相关字段的名称
$related_field_name = 'related_custom_type_' . $related_post_type;
// 获取相关字段的ID
$related_field_id = get_field($related_field_name, $related_post_id, false);
// 更新相关帖子类型的相关字段
if($related_field_id && is_array($related_field_id))
{
if(!in_array($post_id, $related_field_id))
{
$related_field_id[] = $post_id;
}
update_field($related_field_name, $related_field_id, $related_post_id);
}
else
{
update_field($related_field_name, array($post_id), $related_post_id);
}
}
return $value;
}
// 在第二个自定义帖子类型(即目标帖子类型)中添加以下代码 add_filter('acf/load_value/name=related_custom_type', 'load_bidirectional_relationship', 10, 3);
function load_bidirectional_relationship($value