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) を使い、選択肢がすでにあるかチェック
  • すべての投稿を取得し、新しい選択肢がない場合に追加
目次
  1. 実行方法
  2. 注意点

実行方法

  • functions.php にコードを追加(またはカスタムプラグインを作成)
  • サイトを一度開く(init フックでコードが実行される)
  • すべての投稿のACFチェックボックスに新しい選択肢が追加される
  • 処理が完了したら add_action('init', 'update_checkbox_field_for_existing_posts'); をコメントアウトして無効化

注意点

  • functions.php ではなく、Code Snippetsプラグイン を使うと安全に実行できます。
  • すべての投稿に適用されるため、事前に バックアップ を取ることを推奨。
  • カスタム投稿タイプの場合、post_type => 'custom_post_type' に変更してください。

「この記事が役に立った!」方はこちら