WordPress高级自定义字段(ACF)未保存

时间:2017-08-31 09:49:25

标签: php wordpress advanced-custom-fields custom-fields posts

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

该网站有大约5000个帖子,对于网站上的一些旧帖子,该网站有自定义的“作者”和#39;和编辑'即使自定义字段似乎在帖子编辑器屏幕中正确设置,字段也不会被拉到网站的前端。

如果我进入单个帖子并重新保存/更新它,那么自定义字段似乎工作正常并被拉到网站的前端。不幸的是,批量编辑帖子并重新保存/更新它们似乎与修复帖子具有相同的效果。由于我有5000个帖子,因此无法单独重新保存/更新每个帖子。

更新:我已经尝试过Stender评论中提供的链接中的说明 - 它似乎没有像手动更新单个帖子那样更新ACF字段数据。与使用wp_update_post()相反,在手动方法中是否会发生不同的事情?

有没有人对如何解决自定义字段未被批量转移到前端的帖子有任何想法?

如果您需要更多信息或有任何疑问,请随时提出。

2 个答案:

答案 0 :(得分:1)

因此,事实证明,ACF自定义字段数据实际上已经存储正确,但由于某种原因,ACF函数get_field()在某些帖子肯定存在时不会提取数据。它似乎只是受影响的旧帖子,我不确定确切的原因。 (较旧的帖子可能已导入,但我并非100%确定)

无论如何,我最终使用WordPress'解决了这个问题。自己的功能,用于检索元数据/自定义字段:get_post_meta()。有更多的代码涉及但现在它适用于我。

感谢大家的帮助,无论如何!

答案 1 :(得分: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' );

我会添加操作和功能,加载网站一次,然后将其注释掉,以免再次加载。