web-dev-qa-db-ja.com

カスタム日付の1日後に投稿ステータスを下書きに変更します

1日後koncerter_start_datecustom-post-typekoncertを持つすべての投稿はステータスドラフトを取得する

2
Mathias

あなたの質問はあまり明確ではありません。

どういう意味ですか

koncerter_start_dateの1日後、custom-post-typeがkoncertの投稿はすべてdraftのステータスを取得する必要がありますか。


EDIT

コード:

add_action( 'wp_loaded', 'concert_daily_tasks' );
function concert_daily_tasks() {
  $current_url = "https://" . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'];
  if ( $current_url == 'https://example.com/concert-daily-tasks' ) { // <-- set the correct URL!
    check_concert_status();
  }
}

function check_concert_status() {
  $today = new DateTime();

  $concert_start_date_str = '2018-10-10'; // I'm not sure where/how you get this data.
  $concert_start_date = DateTime::createFromFormat('Y-m-d', $concert_start_date_str); // make sure the format ('Y-m-d') matches $concert_start_date_str

  if($concert_start_date) {
    if($concert_start_date->modify('+1 day') <= $today) { // if concert start day was yesterday (or older) continue
      $args = array(
        'posts_per_page'   => -1, // get all posts
        'post_type'        => 'koncert',
        'post_status'      => 'publish',
      );
      $posts = get_posts($args);
      if($posts) {
        foreach($posts as $post) {
          wp_update_post(array(
            'ID' => $post->ID,
            'post_status' => 'draft',
          ));
        }
      }
    }
  }
}

重要:

  • $ concert_start_date_strコレクションを終了します。スクリプトを参照してください。
  • これをfunctions.phpに入れることができます。
  • 私はcron-job listnerを含めました。あなたがhttps://example.com/concert-daily-tasksに行くとコードが実行されます。あなたはおそらくあなたのホスティングパネルでcronジョブのスケジュールを設定することができます。
  • Cron-jobは404を返しますが、コードは実行されます。200OK応答は含まれていません。必要に応じて自分で実行できます。

Greetz、ビョルン

0
Bjorn