こんにちは、
制作部 カワサキです。
今回は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のフィールド確認してみて下さい。