2017-08-31 225 views
0

我有一个使用ACF(高级自定义字段)的WordPress网站。我有2个自定义选择字段,允许用户在帖子上被选中 - 这些字段被称为“作者”和“编辑器”。WordPress高级自定义字段(ACF)未保存

该网站有大约5000个帖子,对于网站上的一些旧帖子,自定义“作者”和“编辑者”字段没有被拉到网站的前端,即使自定义字段显示为在帖子编辑器屏幕中正确设置。

如果我进入一个单独的帖子并重新保存/更新它,那么自定义字段看起来工作得很好,并被拉到网站的前端。不幸的是,批量修改帖子并重新保存/更新它们似乎没有修复帖子的效果。由于我有5000个帖子,因此单独重新保存/更新每个帖子并不可行。

更新:我已经尝试了Stender注释中提供的链接中的说明 - 它没有像手动更新单个帖子一样更新ACF字段数据。在使用wp_update_post()方法的手动方法中会发生什么不同吗?

有没有人有任何想法,我怎样才能修复自定义字段没有被拉到前端批量的帖子?

如果您需要更多信息或有任何问题,请随时询问。

+0

我想你可以按照这个问题的答案,因为它更新/重新保存帖子:https://stackoverflow.com/questions/7917725/update-all-wordpress-posts – Stender

+0

嗨Stender,感谢您的评论。不幸的是,我已经尝试过这一点,虽然它更新了帖子,似乎并没有保存/更新自定义字段... – Matthew

回答

0

所以,事实证明,ACF自定义字段数据实际上已经正确存储了,但由于某些原因,ACF函数get_field()没有为特定帖子提供数据,因为它肯定存在。它似乎只是受到影响的旧帖子,我不确定具体原因。 (较早的帖子可能已经导入,但我不是100%确定的)

无论如何,我最终通过使用WordPress自己的函数检索元数据/自定义字段来解决问题:get_post_meta()。还有一些代码涉及到,但现在对我来说很有用。

感谢大家的帮助!

0

我找到了一个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'); 

我会添加行动和功能,加载网站一次,然后注释掉,所以它不会再次加载。

+0

嗨,雅各布,我也发现了博客文章,并尝试了你以前提供的功能,但这也似乎没有解决自定义字段不存储/存储的问题。所以我仍然坚持...... :-( – Matthew

相关问题