ACFのチェックボックスを一括で変更する
function update_checkbox_field_for_existing_posts() { $field_name = 'your_checkbox_field'; // ACFのフィールド名を指定 $new_option_key = 'option3'; // 新しく追加した選択肢のキー $new_option_value = '選択肢3'; // 新しく追加した選択肢のラベル(なくてもOK) // すべての投稿を取得 $args = array( 'post_type' => 'post', // 投稿タイプ(カスタム投稿なら変更) '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(); // 既存のチェックボックスの値を取得(配列として) $current_values = get_field($field_name, $post_id); if (!is_array($current_values)) { $current_values = []; } // 新しい選択肢がまだ追加されていない場合に追加 if (!array_key_exists($new_option_key, array_flip($current_values))) { $current_values[] = $new_option_key; // キーを配列に追加 update_field($field_name, $current_values, $post_id); } } } wp_reset_postdata();}// WordPressの初期化時に実行add_action('init', 'update_checkbox_field_for_existing_posts');
- your_checkbox_field → ACFのフィールド名に変更
- $new_option_key → 新しい選択肢のキー(例: option3)
- $new_option_value → 選択肢のラベル(不要な場合は削除してOK)
- array_flip($current_values) を使い、選択肢がすでにあるかチェック
- すべての投稿を取得し、新しい選択肢がない場合に追加
目次
- 実行方法
- 注意点
実行方法
functions.php
にコードを追加(またはカスタムプラグインを作成)
- サイトを一度開く(
init
フックでコードが実行される)
- すべての投稿のACFチェックボックスに新しい選択肢が追加される
- 処理が完了したら
add_action('init', 'update_checkbox_field_for_existing_posts');
をコメントアウトして無効化
注意点
functions.php
ではなく、Code Snippetsプラグイン を使うと安全に実行できます。
- すべての投稿に適用されるため、事前に バックアップ を取ることを推奨。
- カスタム投稿タイプの場合、
post_type => 'custom_post_type'
に変更してください。