Kotoriはマルファン症候群という難病を患っています! 今後は、マルファン症候群に関するトピックも扱っていきます!

パンD KOTORI Blogの公式キャラクター「パンD」です。
コーディング.htaccess予約投稿が失敗する時の対処法[WordPress]

予約投稿が失敗する時の対処法[WordPress]

2014年01月31日WordPress プラグイン サーバー .htaccess 
予約投稿が失敗する時の対処法[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アドレスは別物です。

ロリポップのコンパネのIP

この事実、知ってましたか?
KoToRiはこの記事を書くために色々検証していたのですがこの事実を知らなかったせいで2時間はまりました笑

IPアドレスでFTP接続している人とかはそのIPで間違いないのですが、ロリポップのようにFTPサーバーのIPアドレスがドコにも載っていないときやサーバーのコントロールパネルに書いてあるIPアドレスがFTPサーバーのIPアドレスじゃないっぽい時のために一番簡単に確実にFTPサーバーのIPアドレスを確認する方法を紹介します。

ドメイン/IP検索

このページにアクセスして入力フォームにFTPのホスト名を入力して「管理情報照会実行」してください。

ドメイン/IPアドレスサーチ

これで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時間を返せ笑

予約投稿はすごく便利ですのでベーシック認証だろうがキャッシュ系プラグインだろうが、どんな状況でも問題なく使用したいですよね。多分これ抑えとけば大丈夫だと思います。

シェアする みんなシェアしてね

フォローする フォローする

いつもKOTORI Blogをご覧いただきありがとうございます。Facebook、Twitterを通じて、皆様と交流していき色んな情報を共有していければな~と思ってます。お気軽に登録してください!

基本フォロー返します。

RSSを登録する

RSSはこちらから。

follow us in feedly

Feedly使ってる人はこちらから。

Buy me a Beer

診断ドットコムでちょっとひと息!
動く!パンDのLINEスタンプ
好きな人にアプローチスタンプ
パンDのLINEスタンプ

関連する記事 関連する記事も読んでみてね

コメント