Magic からACFへ 複製フィールド編

情報を追記している場合はありますが、古い情報を訂正はしていませんので、
公開日時・更新日時を参照してください。2021.06.06公開 | 2021.06.07更新


Magic Fields からACFへの移行の続き、テスト環境を5.0.13、PHP7.2に下げて、複製ボタンが動いたので、複製フィールドについても試してみた。

xmlでエクスポートしたデータでACFのリピーターと比べてみると、ACFはサブフィールドのメタキーはそれぞれ違うが、Magicの複製フィールドは同じメタキーで複数の値が保存されている。
出力する際は$list = get_field_duplicate(‘複製フィールド名’); foreach($list as $element) { のようにするので、これを、リピーターのサブフィールドにデフォルト値を設定する関数に入れてみた。

add_filter('acf/load_value/key=リピーターのフィールドキー',  'acf_load_repeater_value', 10, 3);
	function acf_load_repeater_value($value, $post_id, $field) {
		$list = get_field_duplicate('複製フィールド名');
			if(!empty($list)){
				$value	= array();
 foreach($list as $element) {
				$value[] = array(
					'サブフィールドのフィールドキー' => $element
				); }
			}
		return $value;
	}

で、ちゃんと値が入った。

Magic Fields には複製グループというものもある。理屈は同じ、な気はするけれど、今の所脳が考えることを拒否しているので、必要に迫られたら…

追記:
やはり気になったので、簡単にテストしてみた。複製グループの場合は

$grouplist = get_group('グループ名');
			if(!empty($grouplist)){
				$value	= array();
 foreach($grouplist as $group){
				$value[] = array(
					'サブフィールドのフィールドキー' => $group['グループのフィールド名'][1],
					'サブフィールドのフィールドキー' => $group['グループのフィールド名'][1]
				);

*データの保存を確認後、Magic Fields を無効化したら、関数は削除!


情報を追記している場合はありますが、古い情報を訂正はしていませんので、
公開日時・更新日時を参照してください。 2021.06.06公開 | 2021.06.07更新