お問い合わせはコチラから

ACFのカスタムフィールドをphpから更新する方法

サイト運営

WordPressでは、Advance Custom Fieldsを使って定型のページを作ることが多いです。

ACFのフィールドちまちま手入力するのはやってられないので、CSV経由でインポートすることで、大量にページを量産できます。

しかし、ACFのカスタムフィールドにインポートできるプラグインは有料のものばかりで、しかも結構高いです。

無料でACF対応のCSVインポートプラグインは、really-simple-csv-importerぐらいです。

really-simple-csv-importerも対応しているACFのフィールドは単純なものだけです。繰り返しフィールドなど複雑なACFのフィールドには対応していません。

Really Simple CSV Importer
Alternative CSV Importer plugin. Simple and powerful, best for geeks.

この記事では、ACFのフィールドをphp経由で更新する時のポイントをまとめておきたいと思います。

通常のフィールド

ACFの通常のフィールドは、wordpress標準のupdate_post_meta()を使っても更新できるという記事をよく見かけますが、実際やってみるとACFが用意しているupdate_field()を使わないと更新できませんでした。

フィールドの指定がフィールド名でも行けそうな感じなのですが、シリアルキーを指定する方が安全なようです。

各フィールドのシリアルキーはACFの管理画面を見るとわかります。

ACF | update_field()
Description Updates the value of a specific field. Parameters update_field($selector, $value, ); $selector (string) (Required) The field name or field

繰り返しフィールド

繰り返しフィールドもphp経由で更新することができます。こちらもACFのupdate_field()を使います。

こちらの記事が参考になります。

Repeater update_field - ACF Support
$i = 1; foreach ($wpbb_xml_params->features->children() as $second_gen) { $feature_value = (string)$second_gen; $value = array( 'sub_field_' . $i => $feature_va...

以下は、2つのテキストフィールドを持つ繰り返しフィールドの更新の例です。

<?php
		foreach($titles as $key => $title){
			$value[] = array( 
				$series_sub_title_key => $titles[$key],
				$series_sub_url_key => $urls[$key]			
			);
		}
		update_field( $series_main_key, $value, $post_id );

繰り返しフィールドでも更新の手順はほぼ同じで、意外と簡単です。

まとめ

ACFのフィールドをphpで更新できるようになると、自前でCSVインポートしてACFのフィールドを更新することもできるようになります。

覚えておいて損はありません。

タイトルとURLをコピーしました