WordPress 高级自定义字段 (ACF) 未保存
WordPress Advanced Custom Fields (ACF) not saved
我有一个使用 ACF(高级自定义字段)的 WordPress 网站。我有 2 个自定义 select 字段,允许用户在 post 上进行 selected - 这些字段称为 'Author' 和 'Editor'.
该站点有大约 5000 个 post,对于站点上的一些较旧的 post,自定义 'Author' 和 'Editor' 字段未被尽管自定义字段似乎在 post 编辑器屏幕中设置正确,但仍被拉到网站的前端。
如果我进入个人 post 和 re-save/update 它,那么自定义字段似乎可以正常工作并被拉到站点的前端。不幸的是,批量编辑 posts 和 re-saving/updating 它们似乎没有修复 posts 的相同效果。因为我有 5000 个 post,所以每个 re-save/update 都不太可行。
更新:我已经尝试过 Stender 评论中提供的 link 中的说明 - 它似乎没有像手动更新单个 [=31] 那样更新 ACF 字段数据=].与使用 wp_update_post() 相比,手动方法期间是否发生了不同的事情?
有没有人知道如何解决 post 自定义字段没有被批量拉到前端的问题?
如果您需要更多信息或有任何疑问,请随时提出。
我找到了一个 blog post,其中包含有关如何批量更新 ACF (post_meta) 字段的说明。
function mass_update_posts() {
$args = array(
'post_type'=>'post-type',
'posts_per_page' => -1
);
$my_posts = get_posts($args);
foreach($my_posts as $key => $my_post) {
$meta_values = get_post_meta( $my_post->ID);
foreach($meta_values as $meta_key => $meta_value) {
update_field($meta_key, $meta_value[0], $my_post->ID);
}
}
}
您可以通过挂接到 init
来调用此函数。
add_action( 'init', 'mass_update_posts' );
我会添加操作和功能,加载网站一次,然后将其注释掉,这样它就不会再次加载。
所以,事实证明 ACF 自定义字段数据实际上已经正确存储,但出于某种原因,ACF 函数 get_field()
没有提取某些帖子的数据,尽管它确实存在。似乎只有旧帖子受到影响,我不确定确切原因。 (较早的帖子可能已被导入,但我不是 100% 确定)
无论如何,我最终通过使用 WordPress 自己的检索元 data/custom 字段的函数解决了这个问题:get_post_meta()
。涉及的代码有点多,但现在对我有用了。
感谢大家的帮助!
我有一个使用 ACF(高级自定义字段)的 WordPress 网站。我有 2 个自定义 select 字段,允许用户在 post 上进行 selected - 这些字段称为 'Author' 和 'Editor'.
该站点有大约 5000 个 post,对于站点上的一些较旧的 post,自定义 'Author' 和 'Editor' 字段未被尽管自定义字段似乎在 post 编辑器屏幕中设置正确,但仍被拉到网站的前端。
如果我进入个人 post 和 re-save/update 它,那么自定义字段似乎可以正常工作并被拉到站点的前端。不幸的是,批量编辑 posts 和 re-saving/updating 它们似乎没有修复 posts 的相同效果。因为我有 5000 个 post,所以每个 re-save/update 都不太可行。
更新:我已经尝试过 Stender 评论中提供的 link 中的说明 - 它似乎没有像手动更新单个 [=31] 那样更新 ACF 字段数据=].与使用 wp_update_post() 相比,手动方法期间是否发生了不同的事情?
有没有人知道如何解决 post 自定义字段没有被批量拉到前端的问题?
如果您需要更多信息或有任何疑问,请随时提出。
我找到了一个 blog post,其中包含有关如何批量更新 ACF (post_meta) 字段的说明。
function mass_update_posts() {
$args = array(
'post_type'=>'post-type',
'posts_per_page' => -1
);
$my_posts = get_posts($args);
foreach($my_posts as $key => $my_post) {
$meta_values = get_post_meta( $my_post->ID);
foreach($meta_values as $meta_key => $meta_value) {
update_field($meta_key, $meta_value[0], $my_post->ID);
}
}
}
您可以通过挂接到 init
来调用此函数。
add_action( 'init', 'mass_update_posts' );
我会添加操作和功能,加载网站一次,然后将其注释掉,这样它就不会再次加载。
所以,事实证明 ACF 自定义字段数据实际上已经正确存储,但出于某种原因,ACF 函数 get_field()
没有提取某些帖子的数据,尽管它确实存在。似乎只有旧帖子受到影响,我不确定确切原因。 (较早的帖子可能已被导入,但我不是 100% 确定)
无论如何,我最终通过使用 WordPress 自己的检索元 data/custom 字段的函数解决了这个问题:get_post_meta()
。涉及的代码有点多,但现在对我有用了。
感谢大家的帮助!