Smart Custom Fields (SCF) のカスタムフィールドを Advanced Custom Fields (ACF)に移行してみました。
その備忘録です。
目次
SCFからACFにカスタムフィールドの移行する方法
やり方は簡単で移行は一瞬で完了します。
事前準備
事前にSCFとACFそれぞれに同じ名前のカスタムフィールドを設定しておきます。
今回はカスタムフィールドはworkという投稿タイプに3つ格納しておりました。
ラベル | 名前 |
---|---|
サイト名 | site_name |
URL | site_url |
担当 | work_info |
あとはfunctions.phpにコードを挿入するだけです。
SCFからACFにカスタムフィールドの移行
外観、テーマエディタからfunctions.phpにコードを挿入します。
下記のコードを有効に。
管理画面左上に「ACFカスタムフィールドの保存が完了しました。」というメッセージが表示されたら完了です。
// 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');
最後に対象記事を開いてカスタムフィールドが両方あるか確認しましょう。