WordPress│SCFからACFにカスタムフィールドの移行する方法

Smart Custom Fields (SCF) のカスタムフィールドを Advanced Custom Fields (ACF)に移行してみました。

その備忘録です。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

SCFからACFにカスタムフィールドの移行する方法

やり方は簡単で移行は一瞬で完了します。

事前準備

事前にSCFとACFそれぞれに同じ名前のカスタムフィールドを設定しておきます。

今回はカスタムフィールドはworkという投稿タイプに3つ格納しておりました。

ラベル名前
サイト名site_name
URLsite_url
担当work_info

あとはfunctions.phpにコードを挿入するだけです。

SCFからACFにカスタムフィールドの移行

外観、テーマエディタからfunctions.phpにコードを挿入します。

エラーが怖い人はCode Snippetsのプラグインを入れて、そこにコードを挿入しましょう。

下記のコードを有効に。

管理画面左上に「ACFカスタムフィールドの保存が完了しました。」というメッセージが表示されたら完了です。

投稿記事はpost、固定記事はpageなので、好きに変更してください。


// ACFカスタムフィールドを再保存するスクリプト
function update_acf_fields_for_works() {
    // 指定の投稿タイプの投稿を取得
    $args = [
        'post_type'      => 'works',
        'posts_per_page' => -1, // 全件取得
    ];
    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();

            $post_id = get_the_ID();

            // カスタムフィールドの値を再保存
            $site_name = get_post_meta($post_id, 'site_name', true);
            $site_url = get_post_meta($post_id, 'site_url', true);
            $work_info = get_post_meta($post_id, 'work_info', true);

            if ($site_name) {
                update_field('site_name', $site_name, $post_id);
            }
            if ($site_url) {
                update_field('site_url', $site_url, $post_id);
            }
            if ($work_info) {
                update_field('work_info', $work_info, $post_id);
            }
        }

        wp_reset_postdata();
        echo "ACFカスタムフィールドの保存が完了しました。";
    } else {
        echo "指定の投稿タイプに記事が見つかりませんでした。";
    }
}

// 実行するためのフックを設定
add_action('init', 'update_acf_fields_for_works');

最後に対象記事を開いてカスタムフィールドが両方あるか確認しましょう。

  • URLをコピーしました!

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次