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

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

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 を無効化したら、関数は削除!
追記:値をロードするだけなので、保存は必須

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

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