WordPressの予約投稿が失敗する件の解決方法
WordPress2.6以降には、予約投稿という便利な機能があります。
未来の日付で投稿すると、その日付になったときに自動的に公開してくれる、というものです。
(厳密には、「その日付以降に誰かがアクセスしたとき」です。サーバーのCronを使っているわけではなく、内部プログラムが指定時刻に HTTP リクエストを発行する仕組みだそうなので。誰もいないシベリアの森で木が倒れたが、誰もその音を聞かなかった。その木は本当に倒れたか?というやつです。)
しかしこの予約投稿が、どうもうまく機能しないという声が多いようです。
WordPressのサポートフォーラムを日本版、本家と相当数見て回ったけど、みんなおろおろと困っているばかりで、有効な解決策がないようでした。「自分の場合はこれで解決」という声はありましたけど、決定打に欠けるというか。
広告
僕もハマってしまったんですが、どうにか解決することが出来ました。
この解決方法は、
サーバーのroot権限があり
ターミナルで接続できること
が条件です。
WordPressの予約投稿機能を司るのは、WordPressフォルダ直下にある wp-cron.php というプログラムです。(これがないバージョンは予約投稿できません)
まず、これをwgetで取得してみてください。
wget http://yourdomain.com/wordpress/wp-cron.php
これでOKが出る人は、多分予約投稿出来ているか、あるいは全く別の問題です。
いつまで経っても帰ってこない、もしくは404エラーの場合は、この解決方法を試してみてください。
/etc/hosts
を編集します。
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost
デフォルトだとこんな感じでしょうか。
ここに、WordPressが参照すべき、そのブログのドメインとIPを追加記述してあげます。
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.11 yurdomain.co.jp
このIPは、バーチャルホストの場合はそのローカルIPを、そうでない場合はグローバルIPを入れてください。
これでひとまず多分うまくいく、はず。対症療法に近いので、継続調査予定。
この辺が参考になりました。
WordPress Problem with Scheduled Post Solved | Busy Blogging Dot Com
WordPress › Support » Missed Schedule – Scheduled Posts Not Publishing With 2.7
この辺は参考になりませんでした。
WordPress › フォーラム » 予約投稿がうまくできません。
WordPress › フォーラム » 指定日(予約)投稿ができません
ここはちょっと参考になりました。
WordPress › フォーラム » Basic認証下で、予約投稿が効かない
[WordPressの予約投稿が失敗する件の解決方法 – Weblogy] http://t.co/zYuxRvj
WordPressで予約投稿が失敗する問題はこれで解決した。 http://t.co/z9c0nQJH 言われればすげー当たり前の話なんだけど、Linux詳しくないからわからんのだぜ。
サーバーのCronではなくwp-cron.phpが予約投稿にかかわっている!