2017-08-31 73 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

相關問題