★★★ たった "1日" でできるWordPressブログの作り方講座 ★★★ はじめてみる

WordPressで予約投稿が失敗するのはなぜか… “一番簡単” な解決策

WordPressには 予約投稿 っていう便利な機能があります。

その名の通り、「指定した記事を、指定した時間に自動投稿する」という機能

使っている方も多いともいますが、
この 予約投稿が失敗すること は決して珍しくありません。

その理由は 予約投稿の仕組み と アクセス数 にあります。

そこで、WPの予約投稿を確実に成功させる方法 をまとめました。是非お試しあれ!

失敗する理由は予約投稿の仕組みにあり!

初めになぜ予約投稿が失敗するについて少し解説

少し技術的な話なので、「そんなのどうでもいい」という人は飛ばしても問題ありません。

まず WordPress のシステムでは、
自動実行したい処理を wp-cron.php というファイルで制御してます。

これは元々 サーバーで処理を自動実行できる、
Cron(クローン) という機能を疑似的に使えるようにしたもの です。

 ↓ 例えば wp-cron.php はこんな用途とかで使われる

  • 記事の予約投稿
  • プラグインでの自動処理
  • WP自体のアップデート

ブロガーが何かしなくていいので、ブログ運営がかなり楽になります。

ただし、この wp-cron.php には1つ問題があるんです。

それが本物の Cron とは全く別の仕組みで動いているということ

本物の Cron だとサーバー内で動くから確実に実行できるんですが、
wp-cron.php の場合だと アクセスがあるたびに実行してるので動かないこと があります。

wp-cron.php が実行される仕組みの図

WordPress内でwp-cronが実行される仕組みの図。実はアクセスがあるたびに実行されている...

こういう感じで動いているので、
アクセスが少ないブログ・サイトだと予約投稿が働いてくれない という訳です。

あとアクセスがある度に wp-cron.php が呼ばれると、次の点でもムダが多いです。

  • アクセス毎に呼ばれてしまう
  • ページ表示速度に影響がある
  • サーバーにもムダな負荷がかかる

 ↑ デフォルトだと wp-cron.php はムダの塊

そこで wp-cron.php を確実に実行する方法 を次から紹介していきます。
(あと記事の最後で wp-cron.php のアクセス毎の実行を止める方法も紹介)

予約投稿を確実に実行させる手順

今説明したように、
予約投稿が機能しないのは WordPress の仕組みが原因

ブログ・サイトにアクセスが少ないと予約投稿は働いてくれません。

なので wp-cron.php の実行を外部の Cronサービス を使うことで解決できます。

ここでは cron-job.org という無料サービスを使い、予約投稿を "確実" に成功させる方法を紹介します。やり方もスゴク簡単なので

その手順は次の通り

1.まず cron-job.org にアカウント登録しよう

まず cron-job.org にアクセス

ここの何がスゴイかというと、無料なのに1分単位のジョブ実行ができること ですね。

1分単位なので、本当に色々な用途に使えて重宝します。

ではアクセスしたら、アカウント登録に必要な情報入力

全部入力したらフォーム下の「Create free cccount」ボタンをクリック

しばらくすると登録メルアドに確認メールが届くはず。
その中のURLをクリックすれば本登録が完了します。必ず忘れずに!

そしたらログイン画面に進んで、ログイン

ログインURL : https://cron-job.org/en/members/

これでアカウント作成は完了です。

2.wp-cron.php を実行する Cronジョブ作成

次に 外部から wp-cron.php を実行するジョブを作成

外部から実行することで、予約投稿の失敗がほぼなくなります。

ではまず、ログイン状態で次のURLにアクセス

Cronジョブ作成 : https://cron-job.org/en/members/jobs/

すると次の画面が出てくるので、「Create cronjob」ボタンをクリック

そして次の画像の通りに必須項目を入力&選択

1.まず定期実行したい wp-cron.php のURL入力

2.スケジュール(実行間隔)を1分に設定

3.最後に「Create cronjob」ボタンをクリック

これで指定した間隔(1分とか3分)で wp-cron.php に自動アクセスされるようになります。

ただし、注意すべきはURLの部分。これについては https://ドメイン名 のあとに wp-cron.php をつけたURLを設定しておいてください。

例えばドメイン名が "fukuro-press.com" なら、

https://fukuro-press.com/wp-cron.php

みたいなURLを設定しておけばいいってことです。

そうしたら、次みたいに Cronジョブ が作成されましたよね?

自分のブログにアクセスがあるかどうかは関係なく WP-CRON が動くようになるので、
「予約投稿が動かない…なんでだよ…」ということがなくなるはず

ついでに wp-cron を無効化(表示速度高速化)

こっからは完全に蛇足です。

あと技術的な知識が必要なので「PHPって何?」「スクリプトって何?」という人は絶対に試さないでください。最悪 ブログ構成を壊すリスク もあるので、自己責任です。

自分でPHPが読める・書ける人専用

先ほど書いたように、wp-cron は色々無駄が多いという話でした。

  • アクセスがあるたびに実行される
  • サーバーに無駄な負荷がかかってしまう
  • ページ表示速度にも悪影響かも

なので WordPress内での wp-cron.php の自動実行は無効化 しときましょう。

さきほど easycron から自動実行する設定をしたので、WordPress内で動かしておく必要はありません。

その手順ですが、まず wp-config.php をオープン

このファイルはWPをインストールしたディレクトリ内にあります。

その38行目あたりに以下の内容を追加してみてください

define('DISABLE_WP_CRON', 'true');

その名の通り、WP内での wp-cron.php を無効化をオンにしてます。

そしたらファイルを保存。
これで WP-Cron が無効化されて、ブログにムダ負荷がかからなくなります。

表示速度もほんの少しだけ早くなるかもしれません。

まとめ - 予約投稿は過信しない方がいい

予約投稿という名前だけど過信はしすぎない方がいいですね。アレはアクセス毎に予約投稿するスクリプトを動かしてるだけなので・・・

アクセスが少ないなら予約投稿が失敗して当然ということです。

もし予約投稿の失敗が多いなら、この記事で紹介した手順を試してみてください。

以上、WPで予約投稿が失敗するときの対処法でした。

The following two tabs change content below.

フク郎

昔はプログラミングに熱中していたが、ブログとWordPressに興味を持ち始め今はサイト・ブログ作りが生きがい。自分の「好き」をブログに変えたい、情報発信したい人に役立つWordPress術・サイト構築術を発信中。一日一歩楽しんでブログ構築できるように読みやすい&楽しい記事作りを心がけています。Twitterアカウントはこちら ⇒ フク郎@Fukuro-Press