予約投稿が失敗する時の対処法[WordPress]
WordPressで予約投稿が失敗する時の原因と対処法をまとめました。
まえがき
KoToRiは基本的に記事を土日に書き溜めてWordPressの予約投稿を使って平日にアップするスタイルなのですが、この前いきなり予約投稿できなくなってしまいました。
アップされているはずの時間にブログを確認してみるとアップされていないので、おかしいなと思い管理画面の方を確認すると「予約投稿の失敗」という表示が。。。
こんな風に表示されるんですね。
知りませんでした。
この記事では予約投稿が失敗する原因と対処法を紹介します。
予約投稿が失敗する原因
予約投稿が失敗する原因は2つほど考えられます。
原因1 ベーシック認証
WordPressをベーシック認証下で運用している場合、予約投稿が失敗することがあるようです。てか失敗します!
WordPressのコアファイルのフォルダにベーシック認証かけて不正ログイン対策を取ることは良くありますが、これは盲点でした!今までまるっきり気づきませんでした笑
ベーシック認証が原因の場合、ベーシック認証の記述がある.htaccessに下記の1~4行目を追加することで正常に予約投稿できるようになります。
Satisfy Any order deny,allow deny from all allow from 111.11.1.1 AuthUserFile /home/users/0/hoge/hoge/.htpasswd AuthGroupFile /dev/null AuthName "passcode" AuthType Basic require valid-user
「allow from 111.11.1.1」には自分のサーバーのIPアドレスを記述します。
気を付けて欲しいのは、ここで使用するIPアドレスはWordPressがインストールしてあるサーバーのIPアドレスです。
何言っているんだ。当たり前だろ。って思ったでしょう。でもこれ以外と重要なキーワードなのです。
ロリポップサーバーを使用しているあなた!!!
ロリポップのコントロールパネルに書いてあるIPアドレスとWordPressがインストールされているFTPサーバーのIPアドレスは別物です。
この事実、知ってましたか?
KoToRiはこの記事を書くために色々検証していたのですがこの事実を知らなかったせいで2時間はまりました笑
IPアドレスでFTP接続している人とかはそのIPで間違いないのですが、ロリポップのようにFTPサーバーのIPアドレスがドコにも載っていないときやサーバーのコントロールパネルに書いてあるIPアドレスがFTPサーバーのIPアドレスじゃないっぽい時のために一番簡単に確実にFTPサーバーのIPアドレスを確認する方法を紹介します。
このページにアクセスして入力フォームにFTPのホスト名を入力して「管理情報照会実行」してください。
これでIPアドレスを確認することができます!!
「結果については保証をいたしておりません」とか慎ましいことが書いてありますがほぼ間違いないでしょう笑
この手順で取得したIPアドレスを.htaccessに記述しましょう。
因みに、予約投稿できるか確認する時の公開時間は少なくとも現在時刻の10分後くらいにしましょう。
KoToRiは2分後とかで確認してたんですが、うまくいくはずなのにうまくいかなかったりとかしたので余裕をもって10分後とかにしてください。
何故ベーシック認証をかけていると予約投稿が失敗するのか
この項は補足なので必要なければ読み飛ばしてください。
WordPressの予約投稿の仕組みを簡単に説明すると、ブログに誰かがアクセスする度に現在時刻で公開するべき記事があるかを「wp-includes/cron.php」が確認します。公開するべき予約投稿があればWordPressインストールフォルダ直下「wp_cron.php」にHTTPリクエストを発行し「wp_cron.php」が公開処理を行うという流れです。
しかしベーシック認証がかかっている状態だと「wp_cron.php」にHTTPリクエストを発行する時点で弾かれてしまいます。
リクエストはWordPressをインストールしているサーバーから送られるので、WordPressインストールサーバーのみ制限無しでアクセスできるようにするという処理を.htaccessに記述しているのです。
原因2 キャッシュ系プラグイン
WordPressを高速化してくれる「W3 Total Cache」や「WP File Cache」等のキャッシュ系プラグインを導入して有効化すると予約投稿が失敗することがあるようです。
KoToRiはこれが原因でした。
原因がキャッシュ系プラグインの場合はプラグインを停止するか「WP Missed Schedule Fix Failed Future Posts」プラグインをインストールすることで直ることがあります。ってか多分直ります。
「WP Missed Schedule Fix Failed Future Posts」の使い方
管理画面「プラグイン」→「新規追加」の検索フォームに「WP Missed Schedule Fix Failed Future Posts」と入力し「プラグインの検索」をクリックしてインストールするか下記からファイルをダウンロードしてインストールしてください。
WP Missed Schedule Fix Failed Future Posts
インストールしたら有効化してください。
これだけです。
キャッシュ系プラグインが原因の場合これだけで直ります。
まとめ
ロリポップのコントロールパネルに書いてあるIPアドレスがFTPサーバーのIPアドレスじゃないことが一番のビックリでした。
紛らわしい。
KoToRiの2時間を返せ笑
予約投稿はすごく便利ですのでベーシック認証だろうがキャッシュ系プラグインだろうが、どんな状況でも問題なく使用したいですよね。多分これ抑えとけば大丈夫だと思います。
Pingback: WordPressの予約投稿が失敗した時に試す4つの解決策 | OXY NOTES()
Pingback: 【解決】WordPressの予約投稿で失敗するときの原因と対処法まとめ()
Pingback: WordPressの予約投稿で失敗したら、初心者が試したい4つの対処法 | コスギス|新潟県長岡市のウェブ解析士×WordPressでサイト構築()