WordPressのカスタムポストタイプで編集時プレビューが反映されない問題の対応

新規投稿時はプレビューできるのに編集時にプレビューが反映されないという事象が起きたことはありませんか?

最初はカスタムフィールドがプレビューできないと思っていたのですが、固定ページではプレビューができたりと、悩んでおりましたが、共通点はカスタムポストタイプのカスタムフィールドがプレビューできないということに気づきました。(とっくにご存じでしたらすみません。。。)

そしてこれはカスタム投稿タイプにアドバンスカスタムフィールド(ACF)でカスタムフィールドを設定されているときの現象なのです。

調べていくとカスタム投稿タイプのリビジョンが、カスタム投稿タイプを追加した際に有効になっていないことが原因だということが判明しました。

function.phpに以下のコードでリビジョンを有効にしました。

//カスタム投稿タイプのリビジョンを有効にする
function custompost_revisions() {
  add_post_type_support( 'カスタム投稿タイプ名', 'revisions' );
}
add_action('init', 'custompost_revisions');

これでは後に追加するポストタイプには反映されないのでforeachですべての公開中のカスタムポストタイプのリビジョンを有効にしてしまいます。
これにより困ることは今のところありません。

これで新たに作られた投稿タイプのカスタムフィールドもプレビューができるようになりました。

//投稿でカスタムフィールドのプレビューができない対策 リビジョンを有効にする
function enable_revisions_for_all_post_types() {
    $post_types = get_post_types(['public' => true], 'names'); 
    foreach ($post_types as $post_type) {
        add_post_type_support($post_type, 'revisions');
    }
}
add_action('init', 'enable_revisions_for_all_post_types');

最近触った他のサイトでも同じ現象で対応していないサイトを見つけたので、ちらほら起きている現象かと思います。お役に立てたら幸いです。