カスタムフィールドの値だけで作ったページを分割する

NO IMAGE

ACFなどのカスタムフィールド系のプラグインを利用して、投稿をカスタマイズすることがあります。
基本的にはカスタムフィールドに登録したものを出力するだけで事足りるのですが、
ページ送りをしたい場合は少し考える必要があります。

方法

少々無茶ですが、投稿の保存時にフックを利用して、本文をまるっと書き換えてしまう方法で対応しました。

コード

function change_post_content_to_acf($post_ID) {
    $post_type = get_post_type($post_ID);
    if ($post_type === 'post') : // 投稿のときのみ行う
        remove_action('save_post', 'change_post_content_to_acf');
        $args = [
            'post_content' => get_acf_content() // ACFで設定した値を全て結合したものが取得できる関数を想定
        ];
        wp_update_post($args);
        add_action('save_post', 'change_post_content_to_acf');
    endif;
}
add_action('save_post', 'change_post_content_to_acf');

function get_acf_content() {
    $html = '';
    // ACFで設定した値を取得する何かしらの処理...
    return $html;
}

// 投稿の本文の入力欄は消してしまう
function my_remove_post_support() {
    remove_post_type_support('post','editor');
}
add_action('init','my_remove_post_support');

参考

プラグイン API/アクションフック一覧/save post