サポート » 使い方全般 » 日付と連動してカスタムフィールドの値を変更したい

  • お世話になります。

    表題の内容がうまくできずに困ってます。
    ご教授頂けますでしょうか?

    現在、advanced custom field proをしようして、以下の2つのフィールドをカスタムポストに設置しています。

    
    $post_type = 'event';//投稿タイプ
    $event_complete = get_field('event-complete');
      //投稿の状態(select型)
      //値
      //normal : 通常
      //complete : 終了
    $event_complete_time = get_field('event-complete-time');//デイトピッカー
    

    上記の値を使用しています。

    ここで、ご質問なのですが
    「$event_complete_time」が現在の日付より過去になった場合、「$event_complete」の値を「normal ⇒ complete」に自動的に変更をかけたいのですが、ご存知の方教えて頂けますでしょうか。

    現在、「get_field()」を使用してますが「get_post_meta()」でも構いません。
    よろしくお願い致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんな感じでどうですか?
    投稿タイプ event の カスタムフィールド event-complete-time が過去の日付になるとカスタムフィールド event-complete の値を normal から complete に書き換えるようcronにセットします。
    強制的に日付を変更するかWP Crontrol等でチェックしてください。

    function event_complete_schedule( $post_id ) {
    	$post_type = get_post_type () === 'event';
    	$event_complete_time = get_post_meta ( $post_id , 'event-complete-time' , true );
    
    	if ( $post_type && $event_complete_time != '' && date_i18n( 'Y-m-d' ) < $event_complete_time ) {
    		$time_stamp = strtotime ( $event_complete_time . 'JST' ) ;
    		wp_schedule_single_event( $time_stamp , 'event_complete_action' , array( $post_id ));
    	}
    }
    add_action( 'save_post' , 'event_complete_schedule' );
    function set_event_complete( $post_id ) {
    	update_metadata ( 'post' , $post_id , 'event-complete' , 'complete' );
    }
    add_action( 'event_complete_action' , 'set_event_complete' );
    • この返信は3 ヶ月、 3 週間前に  manbo さんが編集しました。

    manbo様

    ありがとうございます。
    思いどうりの結果が出来ました。

    本当にありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。