WordPressカスタマイズ事例

Advanced Custom Fields: Repeater Field に一括でレコードを入れる(野蛮な方法)

これまで、
カスタムフィールドを含む記事レコードの一括インポート や、
サイト全面リニューアル × サイトマップ変更 × 旧サイトの記事データ全部移行。そんなときのデータ移行の方法
カスタムフィールドテンプレートからアドバンストカスタムフィールドへ移行 などで、
記事の一括インポートのやり方について、ご紹介しました。
 
ところが、これらの場合、Advanced Custom Fields の Repeater Field には対応できません。
プラグイン制作者も一括でレコードを入れることをサポートしていないという宣言もしています。(2019年12月)
 
でも、どうしてもやりたい。
そんなあなたへ。
野蛮な方法ですが、方法はあります。
今回はその方法のご紹介です。
 
決して美しい方法ではありません、とあらかじめお断りしておきます。
100件も200件もあって、手入力は面倒、でもどうしてもやらなければならない、という方だけこちらを試してください。
 
一言でいうと、Advanced Custom Fieldsが用意している関数を利用して、該当の記事を更新していく方法になります。

  1. まずrepeater fieldの項目名を確認しておきます。ここでは親の項目名を repeater_parent 、
    繰り返し要素の項目名を repeater1, repeater2, repeater3 (どれもテキスト)とします。
  2. repeater fieldを登録するための以下のようなプログラムを記述します。(エクセルのカラムの結合とか使って一括で作りましょう)
$row = array('repeater1' => "repeater1の値A", 'repeater2' => "repeater2の値A", 'repeater3' => "repeater3の値A" ); add_row('repeater_parent', $row, $post->ID );
$row = array('repeater1' => "repeater1の値B", 'repeater2' => "repeater2の値B", 'repeater3' => "repeater3の値B" ); add_row('repeater_parent', $row, $post->ID );

3. 上のコードをrepeater fieldを登録したいページを表示するテンプレートPHPファイル(page.phpとか)に貼り付けます。

4. そのページをブラウザで開きます。
 
いかがでしょう?
ページが表示されたタイミングでプログラムが動き、登録されたはずです。
もちろん終わったら上の記述は即削除です。忘れないでください。
 
もう一度お断りします。決して美しい方法ではありません。
どうしても困った方だけ、お試しくださいね。


関連するWordPressカスタマイズ事例