タイトル長いな。
参考記事はこちら。ありがとうございます。
【Advanced Custom fields】記事の投稿時に、カスタムフィールドの値を投稿済のフィールドから取得し更新する【WordPress】
私が実装したいのは、「開始日」と「終了日」を入れたら、最終的に「開始と終了の日数」にその差の日付が入ることです。理想は「開始日」と「終了日」にデータを入れたらその場で日数が入ることですが、任意の数値を入れたいこともあるかもですので、「開始と終了の日数」に値が入ってない場合、記事を保存したときに自動で入るという仕様にしたいと思います。
上記の場合期待する値は「2」です。
こんな感じで。
//ACFのアクションフックの利用
add_action( 'acf/save_post', 'auto_cf_value', 20 );
function auto_cf_value( $post_id ){
//投稿タイプで動作するように編集中の投稿タイプを取得
$post_type = get_post_type( $post_id );
//if( $post_type == 'page' ){ //投稿タイプがpageなら動作
//自動生成する値を設定する
$post_test_id = get_field( 'startday' ); //フィールドタイプ「投稿オブジェクト」のフィールド値を取得
$test_field = get_field( 'startday', $post_test_id->ID ); //IDを投稿オブジェクトから取得
$test_field2 = get_field( 'endday', $post_test_id->ID ); //IDを投稿オブジェクトから取得
$daydiff = ($test_field2 - $test_field)+1;
$test_field_value_s = sanitize_text_field( $daydiff ); //サニタイズ処理
//フィールドの値を更新する
update_field( 'フィールドキー', $test_field_value_s, $post_id );
//}
}
$daydiff が、strtotimeとかDatetimeクラスとかいろいろ使ったけど、何故か値がなくなるので、シンプルに文字列引いた。原因はまた今度調べる。
もしかしたら、startdayもenddayも文字列ではなくて日付としてのデータを持ってるから、日付のプログラム通すとダメなのかもしれないなぁと思ったりしたり。
あと、調べものをしている間に、こんな素敵な記事があったのでメモしておきます。
コメントを残す