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

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

たとえば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) ){

その他のAdvanced Custom Fields に関する記事一覧

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