コーディング

Advanced Custom Fieldsで軽くはまった件

  • このエントリーをはてなブックマークに追加

こんにちは、

制作部 カワサキです。

今回はWordpress+Advanced Custom Fields(ACF)ネタです。

WordPressで投稿時にタイトルを自動的に加工するような仕掛けを

フィルター「title_save_pre」で作ってたんですけど

この時データは、更新前ですから当然の様にテーブルには保存されていません。

get_fieldでデータを取得しても、更新前の値しか取得できません。

そこで、テーブル保存前のPOSTデータから値を取得する必要があります。

(ポストデータでは、フィールドキーで値を保持しているので注意です。)

$acf_field = get_field_object( ‘名前’ );

$acf_field_key = $acf_field[ ‘key’ ];//フィールドキーを取得する

$value = $_POST[‘fields’][ $acf_field_key ];//ポストデータに保持されている値を取得する

これで投稿したデータが拾えます。

 

以前は・・・・

 

ACF 5.8.7で試したら・・・・

値が拾えません!!空っぽです。!!!!

 

んで、$_POSTの中を見たらなんと!

今までACFの値は、$_POST[‘fields’]で保持されていたのに

$_POST[‘acf’]に変わってました・・・・

$value = $_POST[‘acf’][ $acf_field_key ];//ポストデータに保持されている値を取得する

に変えたら、無事に値取得できました。

 

日本語で検索してもなかなか見つからなかったんですが、

フォーラムでこんな記事を見つけました。

以前、$_POST[‘acf’]に変更されて、$_POST[‘field’]に戻った様なのですが

また、$_POST[‘acf’]に変わったみたいです。

またまた、$_POST[‘field’]に戻るかもしれません。

うかつにアップデートできない・・・・

 

$_POSTで値が取得できなくなった時は、&_POSTのフィールド確認してみて下さい。

 

  • このエントリーをはてなブックマークに追加