ACF 字段值在手动保存 post 之前不可用
ACF fields value not available until saving post manually
我有一些自定义 post 类型 "video",我向其中添加了一些自定义 ACF 字段("video_path"、"author_name" 和 "audio_author")。我正在像这样以编程方式生成该类型的 posts:
$video_post_params = array(
'post_title' => wp_strip_all_tags($video_title),
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'video'
);
$video_id = wp_insert_post( $video_post_params );
update_field('video_path', $video_path, $video_id);
update_field('author_name', $video_author, $video_id);
update_field('audio_author', $audio_author, $video_id);
所有值都插入得很好 - 当我在后端打开 post 时,一切都很好。但是,当我尝试使用这些值时,我什么也没得到?!?
我正在像这样从模板文件中读取值:
get_field('video_path', $video_id)
如果我打开 post 并保存它而不做任何更改,一切都会开始正常工作,之后我会正常获得 post ACF 字段。从后端手动创建的帖子一直运行良好。
我做错了什么?从代码生成 post 时是否需要一些额外的步骤?
但该解决方案显然对我不起作用 - 我的 update_field()
函数已经紧接在 wp_insert_post()
.
之后
找到了!
插入 ACF 字段值时必须使用字段键。如果改为使用键名,就像我所做的那样,乍一看一切都插入得很好,但值在 post 手动保存之前不可用。所以就像:
update_field('field_56e683ab6265f', $video_path, $video_id);
update_field('field_56e68415b5c4b', $video_author, $video_id);
update_field('field_56e6842d58740', $audio_author, $video_id);
真是一团糟....
如果要使用字段名而不是字段键,可以使用add_post_meta
例如:
add_post_meta($video_id, 'video_path', $video_path, true);
add_post_meta($video_id, 'author_name', $video_author, true);
add_post_meta($video_id, 'audio_author', $audio_author, true);
对于 ACF5,您必须使用的不是 post id,而是 post 对象,lake that:
update_field('field_56e683ab6265f', $video_path, $video);
update_field('field_56e68415b5c4b', $video_author, $video);
update_field('field_56e6842d58740', $audio_author, $video);
我遇到了同样的问题,我通过在脚本末尾添加 do_action('acf/save_post', $postID);
来更正它,仅此而已……
我有一些自定义 post 类型 "video",我向其中添加了一些自定义 ACF 字段("video_path"、"author_name" 和 "audio_author")。我正在像这样以编程方式生成该类型的 posts:
$video_post_params = array(
'post_title' => wp_strip_all_tags($video_title),
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'video'
);
$video_id = wp_insert_post( $video_post_params );
update_field('video_path', $video_path, $video_id);
update_field('author_name', $video_author, $video_id);
update_field('audio_author', $audio_author, $video_id);
所有值都插入得很好 - 当我在后端打开 post 时,一切都很好。但是,当我尝试使用这些值时,我什么也没得到?!?
我正在像这样从模板文件中读取值:
get_field('video_path', $video_id)
如果我打开 post 并保存它而不做任何更改,一切都会开始正常工作,之后我会正常获得 post ACF 字段。从后端手动创建的帖子一直运行良好。
我做错了什么?从代码生成 post 时是否需要一些额外的步骤?
但该解决方案显然对我不起作用 - 我的 update_field()
函数已经紧接在 wp_insert_post()
.
找到了!
插入 ACF 字段值时必须使用字段键。如果改为使用键名,就像我所做的那样,乍一看一切都插入得很好,但值在 post 手动保存之前不可用。所以就像:
update_field('field_56e683ab6265f', $video_path, $video_id);
update_field('field_56e68415b5c4b', $video_author, $video_id);
update_field('field_56e6842d58740', $audio_author, $video_id);
真是一团糟....
如果要使用字段名而不是字段键,可以使用add_post_meta
例如:
add_post_meta($video_id, 'video_path', $video_path, true);
add_post_meta($video_id, 'author_name', $video_author, true);
add_post_meta($video_id, 'audio_author', $audio_author, true);
对于 ACF5,您必须使用的不是 post id,而是 post 对象,lake that:
update_field('field_56e683ab6265f', $video_path, $video);
update_field('field_56e68415b5c4b', $video_author, $video);
update_field('field_56e6842d58740', $audio_author, $video);
我遇到了同样的问题,我通过在脚本末尾添加 do_action('acf/save_post', $postID);
来更正它,仅此而已……