WordPressの予約投稿を設定するのは簡単です。編集を終了してから日付を設定すると、ページを離れても構いません。 ただし、WordPressが予約投稿の公開に失敗し、編集カレンダーが台無しになる場合があります。

WordPressで予約投稿を設定するための基本的な機能である「cron」と呼ばれているものは、期待どおりに機能しないことがあります。一方、この問題の再発防止対策はいくつかあります。

本記事では、「予約投稿の失敗」エラーの表示方と発生原因について詳しく説明します。 次に、予約投稿の異常が二度と発生しないように、2つの処理方法も紹介します。それでは、まいりましょう。

「予約投稿の失敗」エラーとは?

WordPressの新しい投稿が出来上がると、次にどうするかを決めます。投稿を下書きとして保存したり、すぐに公開したりできます。もちろん、予約投稿として設定することも可能です。

通常、このプロセス全体が問題なく終了します。公開日になると、WordPressは公開予約の投稿があるかどうかを確認します。存在する場合は、その東湖が公開されます。そのうち、あなたはサイトビジネスのその他の作業に集中することができます。

ただし、WordPressが公開に失敗した場合があります。その場合、「投稿」メニューでは次のようなエラーが表示されます。

WordPressの「予約投稿の失敗」エラー
WordPressの「予約投稿の失敗」エラー

本異常が発生した投稿はもちろん手動で公開できますが、WordPressは「予約投稿の失敗」エラーが発生したことを通通知しません。つまり、万が一のために設定した時間に投稿が公開されたかを再確認する必要があり、事前に予約する意味がなくなります。

「予約投稿の失敗」エラーの原因

WordPressはcronジョブを使用して、指定の時間に実行する必要のあるタスクを予約します。UNIXベースのシステムでは、「cron」は「スケジューラ」とも呼ばれ、さまざまな用途があります。たとえば、cronを使用してコマンドやスクリプトを実行したり、WordPressの場合なら投稿を公開したりできます。

問題なのは、WordPressの「cron」は本来の意味での「cron」ではないことです。ウェブホスティング会社の多くはユーザーにサーバー設定へのアクセスを提供しないため、cronをシステムレベルで実行するように構成できません。WordPressは、擬似cronを使用することにより、この問題を回避します。WordPressでは、擬似cronが指定の頻度ではなく、ユーザーの訪問にトリガーされ、実行されます。

つまり、ユーザーがサイトにアクセスするたびに、コンテンツ管理システム(CMS)は、実行する必要のある保留中のcronジョブがあるかどうかを確認します。これは賢い解決策ですが、そのタイミングでウェブサイトに誰もアクセスしない場合、CMSは投稿を意図したとおりに公開しないという明らかな欠点があります。そのときに、「予約投稿の失敗」エラーが発生してしまいます。

サイトに常に訪問者がいても、WordPressの「予約投稿の失敗」エラーが必ず発生しないと言うわけではありません。たとえば、ウェブサイトが一時的にダウンした場合、またはキャッシュプラグインを使用している場合、WordPressのcronが計画どおりに実行されない可能性があります。

WordPressの「予約投稿の失敗」エラーの処理方法(2つの方法)

本エラーは、簡単に修正できるWordPressエラーです。このセクションでは、予約投稿の失敗が発生しないようになるための2つの対策について説明します。1つはプラグインを使用しますが、もう1つはサーバーに関連します。

1. Scheduled Post Triggerプラグインを使用する

WordPressは投稿の公開日を逃していないかどうかを定期的に確認して、処理するのは理想的ですが、残念ながら、これはCMSに組み込まれている機能ではありません。ただし、適切なプラグインを使用すると簡単に追加できる機能です。そこでScheduled Post Triggerプラグインが登場します。

Scheduled posts triggerプラグイン
Scheduled posts triggerプラグイン

このプラグインがは、誰かがあなたのウェブサイトにアクセスするたびに、WordPressが予約された公開日を逃したかどうかを確認します。「予約投稿の失敗」エラーが発見された場合、該当の投稿をすぐに公開します。

言い換えれば、このプラグインはcronジョブを追加することにより、ウェブサイトの実行されていない他のcronジョブを探します。このアプローチは少し冗長に聞こえるかもしれませんが、うまく機能します。さらに、プラグインは特別な設定などを必要とせず、インストールしてアクティブ化すると自動的にジョブの実行を開始します。

2. サーバーを使用してcronジョブを直接に管理する

サーバーの設定にアクセスできるホスティングプランをご利用の場合は、cronジョブをサーバーレベルで実行するように構成できます。ただし、このアプローチを使用するには、コンフリクトを避けるために最初にWordPressのcronを無効にする必要があります。

cronを無効にするには、FileZillaなどのクライアントを使用してFTPでウェブサイトにアクセスします。ルートフォルダーに移動し、wp-config.phpファイルを探します。

wp-config.phpファイル
wp-config.phpファイル

ファイルを右クリックして、「View/Edit」を選択します。ここで、ファイル終端の前に次のコードを追加します。

define('DISABLE_WP_CRON', true);

変更をwp-config.phpファイルに保存します。これで最初のステップは完了です。次に、サーバーを使用して手動のcronを実装します。ほとんどのプロバイダーでは、ホスティングコントロールパネルからできるはずです。

たとえばcPanelでは、「Cron Jobs」というタブがあります。

cPanelのcronジョブ
cPanelのcronジョブ

このツールを使用すると、定期的に実行される新しいcronジョブを簡単に追加できます。経験則として、5分より頻繁に実行されるcronジョブはやりすぎで、サーバーに不必要な負担をかけます。

一方、ホスティング会社はサーバーレベルでcronを設定するのに手伝うかもしれませんが、実行するタスクをご自分で設定しなければなりません。この作業にはUNIXコマンドの作成が含まれます。つまり、cronを手動で構成する場合は、UNIXコマンドの知識を磨き直す必要があります。

そこで、cronを処理してくれるウェブホスティング会社を使用するという手もあります。

Kinstaでは、15分の間隔でシステムレベルで実行されるようにWordPressのcronジョブを構成します。ほとんどの場合、15分の間隔は十分です。ただし、必要な場合はサポートチームまど連絡して、間隔を5分に短縮するように申請していただけます。

まとめ

予約投稿は、WordPressユーザーの大半にとっては重要な機能です。このシンプルな機能のおかげで、投稿を手動で公開するためのリマインダーを設定せずに済みます。WordPressに任せることができますが、該当のcronジョブが正常に機能しない場合、手動で公開しない限り投稿が公開されません。

WordPressの「予約投稿の失敗」エラーを修正するには、次の2つの方法があります。

  1. Scheduled Post Triggerプラグインを使用する
  2. サーバーを使用してcronジョブを直接に管理する