acf リピーターのサブフィールドのデフォルト値を設定

Advanced Custom Fields Pro は生涯有効な開発者ライセンスを持っています。

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

Advanced Custom Fields で、たとえばQ&Aや要項を作成する際、項目が固定の場合、項目ごとのテキストの入力欄をつけるのが普通かと思うが、項目とテキストのセットが結構な数がある場合、リピーターのほうが設定もテーマ書きも楽なので、デフォルト値を設定する方法を探してみた。

リピーターの上限・下限を設定の上、

add_filter('acf/load_value/key=リピーターのキー',  'acf_load_repeater_value', 10, 3);
	function acf_load_repeater_value($value, $post_id, $field) {
		if ( get_post_status( $post_id ) === 'auto-draft' ) {
			if( get_post_type( $post_id ) == 'posttype' ){
				$value	= array();
 
				$value[] = array(
					'サブフィールドのキー' => '質問1'
				);
				$value[] = array(
					'サブフィールドのキー' => '質問2'
				);
				$value[] = array(
					'サブフィールドのキー' => '質問3'
				);
				$value[] = array(
					'サブフィールドのキー' => '質問4'
				);
				$value[] = array(
					'サブフィールドのキー' => '質問5'
				);
			}
		}
		return $value;
	}

のようにして、編集してほしくない場合はAdd Admin CSSなどでクリックできないように設定。
フィールドのキーはPHPでエクスポートするか、編集ページのソースで確認。

2020.11追記
プロ版の5.9以降、一覧にキーが表示できるようになった。

2021.2追記
一応質問の内容は決まっているが変更があるかも知れない場合は、繰り返しフィールド数の上限・下限の設定はなしで、上記の設定だけしておけば、新規投稿時にはサブフィールドに値が入った状態で、追加・削除・編集した場合はそれで保存される。

2021.7追記
すでに投稿が存在する状態で、デフォルト値付きのリピーターを追加したい場合は、
~auto-draft~の行をなしで、if( get_post_type( $post_id ) == ‘xxxx’ && empty($value) ){

acf 年月から1月分のフィールドを自動で作成する関数

Advanced Custom Fields に関する記事 新着

Advanced Custom Fields に関する記事一覧ページへ

関数書きますので、気軽にお問い合わせください。
問い合わせフォーム / m.fuchibe@web-taiyo.com / Chatwork ID:taiyoblog