下書きに公開日時を設定しておくと「予約投稿」になる:スラッグも下書きのうちに決める

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

記事を書く人と公開する人を分けていると、公開する人が下書きを読んだあとに、公開する日時を決め、スラッグを直し……と手を動かすところが多く、公開の前の作業がたまりがちでした。そこで、書く側が下書きの段階で公開日時とスラッグまで決めておくようにしました。

下書きに公開日時を設定すると、ボタンが「予約投稿」になる

WordPress の下書きは、公開日時を決めていなければ「すぐに公開する」扱いです。下書きのまま公開日時だけ未来の日時にして保存しておくと、編集画面の「公開」ボタンが「予約投稿」に変わり、日時の欄も「予約: …」と出ます。公開する人は本文を読んで「予約投稿」を押すだけで、その日時に公開されます。

下書きの状態 編集画面のボタン 押したとき
公開日時を決めていない(date_gmt が 0000-00-00 00:00:00) 公開 押した時刻で公開される
未来の公開日時を設定してある 予約投稿 設定した日時に公開される(それまでは「予約済み」)

下書きのまま日時を設定しただけでは、まだ予約にはなっていません。「予約投稿」を押して状態が「予約済み」になったところで、はじめて予約されます。書く人は日時を決めておくだけ、予約するかどうかは公開する人が読んで決める、という分け方ができます。

編集画面で設定する

編集画面の「公開」の枠で、公開日時の横の「編集」を押し、日時を入力して「OK」を押します。そのあと「下書きとして保存」を押せば、下書きのまま日時だけが保存されます。

REST API で設定する

REST API なら、POST /wp-json/wp/v2/posts/{id} に date だけを送ります。status は送らないので、下書き(draft)のままです。

下書きに公開日時を設定する
POST /wp-json/wp/v2/posts/{id}

{
    "date": "2026-11-13T19:30:00"
}
書き方 役目
date サイトのタイムゾーン(設定 → 一般)での公開日時
date_gmt date を送ると、合わせて UTC の日時が自動で入る
status 送らなければ draft のまま(予約はしない)

実際に下書きに date を送ってみると、date_gmt も入り、編集画面のボタンが「予約投稿」、日時の欄が「予約: …」になっていることを確認しました。

1 日 2 本で並べる

予約は 1 日 2 本、午前の 10 時台と夜の 19 時台に並べています。同じ時刻にそろえず、記事ごとに分を少しずつずらしています。公開する人は、並んだ下書きを日時の順に読んで「予約投稿」を押していけばよいので、どの記事をいつ出すかで迷いません。

スラッグも下書きのうちに決める

下書きのあいだはスラッグが空のままで、スラッグを決めないまま公開すると、WordPress はタイトルからスラッグを作ります。日本語のタイトルだと、日本語の部分が URL エンコードされた長いスラッグになります。作業環境で、タイトルを sanitize_title()(タイトルからスラッグを作る関数)に通すと、次のようになりました。

タイトルから作られるスラッグ(作業環境で試した結果)
タイトル
wp_create_nonce:フォームや REST API の合言葉(nonce)を作る(WordPress)

sanitize_title() を通した結果(読める形にしたもの)
wp_create_nonce:フォームや-rest-api-の合言葉(nonce)を作る(wordpress)

実際の URL に入る文字(192 文字)
wp_create_nonce%ef%bc%9a%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%82%84-rest-api-%e3%81%ae...

日本語は英字にはならず、1 文字が「%e3%81%ae」のような 9 文字になるので、URL がとても長くなります。また、_(アンダースコア)はハイフンにならずに残ります。そこで、下書きのうちに短い英字のスラッグ(wp-create-nonce)にしておきます。

スラッグの決め方 URL の例
決めないで公開する https://example.com/my_article/wp_create_nonce%ef%bc%9a%e3%83%95…(長い)
下書きのうちに英字で決める https://example.com/my_article/wp-create-nonce

編集画面ならタイトルの下のパーマリンクの「編集」から、REST API なら slug を送って決めます。

下書きのスラッグを決める
POST /wp-json/wp/v2/posts/{id}

{
    "slug": "wp-create-nonce"
}

公開したあとにスラッグを変えると、URL が変わります。WordPress には、投稿の古いスラッグを覚えておいて新しい URL へ転送する仕組みがありますが、SNS で共有された URL や検索結果には古い URL が残ります。スラッグは公開の前に決めておくのが確かです。

下書きの段階で決めておくこと

ポイント

  • 公開日時(未来の日時にしておくと、ボタンが「予約投稿」になる)
  • スラッグ(短い英字。日本語のタイトルのままにしない)
  • 予約するかどうかは、公開する人が読んでから「予約投稿」を押して決める

気をつけること

気をつけること

  • 予約投稿は WP-Cron で公開されるので、アクセスの少ない時間は、予約の時刻から少し遅れて公開されることがある
  • 過去の日時を設定して「公開」を押すと、その日時の記事としてすぐに公開される
  • 日時はサイトのタイムゾーン(設定 → 一般)で読まれる。REST API で送るときも同じ
  • スラッグを変えるのは公開の前に。公開したあとは URL が変わる

まとめ

書く人が日時とスラッグまで決めておけば、公開する人は読んで押すだけになります。

参考

SiteBeacon(サイトビーコン)

サイトが止まったら、すぐに気づける。

ホームページを 5 分ごとにチェックして、止まったとき・エラーが出たとき・SSL やドメインの期限が近いときに、メールでお知らせします。2 サイトまでは、ずっと無料で使えます。

SiteBeacon を見る サイトを直す相談をする

監視で気づいたあとの直す作業も、同じ担当がお受けします。