ACFで公開日を指定

GTP

こちらも参照

概要

  • スタート(固定ページ:フロントエンド新規作成&管理者用アーカイブ):
    • フロントエンドから新規投稿を作成(下書きdraft)
    • OKボタンをクリック=下書きdraft状態の投稿が完成
    • 管理者用アーカイブのドラフト一覧から該当する投稿draftを開く
  • 内容を編集、確認して①すぐに公開②予約投稿
    1. ACF-stetasで公開publishを選んでOKボタン
    2. ACF-stetasはdraftのまま、ACF日時ピッカーで公開日を指定。指定日時になれば投稿を公開。
  • OKボタンをクリック
  • OKボタンが押された際のバックエンド動作
    • ACF-stetasの指定に合わせてWPステータスを切り替え
    • ACF-stetasがpublishの場合はACF日時ピッカーの値を削除
  • バックエンドで動くスケジュールイベント
    • WP-Cron
    • WordPressで時間ベースのタスクをスケジュール
    • 毎時00分に確認
    • イベントフック処理
  •  指定公開日までは
    • アーカイブ非表示(あたりまえなのでfunctionsコードカット)
    • ロボット検索対象外設定(あたりまえなのでfunctionsコードカット)
  • 公開する処理
    • 対象:投稿draftであり、ACF-stetasの値がdraft&ACF日時ピッカー値が
    • ‘post_status’ => ‘publish’:WPステータスを公開にする
    • ACF-stetasの値を公開publishに変更する
    • ACFピッカー値をクリアする
  •  公開後は
    • アーカイブ表示
    • ロボット検索対象

ポイント

WPステータスは基本的にACFの値を元にして動く

WordPressの日時フォーマット:Y-m-d H:i:s

公開トリガー

  • wp_schedule_event() によって「現在時刻」と「ACF指定公開日時」の比較チェック
  • 現在時刻が公開日時以上=投稿が公開(ステータス変更publish)

仕組みの流れ

  1. ACFで公開日を指定する日時ピッカー、scheduled_publish_date を作成
  2. 投稿にACF日時ピッカー(scheduled_publish_date)を結びつけ
  3. 投稿画面でACF日時ピッカーを入力して公開日時を指定
    • 公開日時まではステータスが下書き(draft)となる
    • 公開日時まではアーカイブ非表示&ロボット検索回避
  4. 公開日時と現在日時が一致すると投稿は公開
    • wp_schedule_event() で毎時スケジュールチェック
      • 公開条件が成立した場合に処理
    • 投稿のステータス変更=公開(publish)
    • 投稿の投稿日をACF日時ピッカー指定した公開日時に書き換え
    • アーカイブ表示&ロボット検索対象