WordPress 予約投稿

WordPress の予約投稿が上手くいきませんでしたが、解決できました 🙂

ただし cron と wget が使える事が前提条件となります。

例えば blog の URL が http://example.com/myblog/ だった場合、
example.com 上で、cron から wget で以下のように wp-cron.php に
アクセスすると上手くいくようです。

* * * * * wget http://localhost/myblog/wp-cron.php 
--header="Host: example.com"

私は WordPress MU で全てのブログで予約投稿ができるように
以下のようなスクリプトを作成して cron から実行しています。
(WordPress MU 2.8.4a で実際に使っています)

#!/bin/sh
MYSQL=/usr/bin/mysql
OUT=/tmp/wp-cron.out
paths=`$MYSQL --user=DBユーザ名 --password=DBパスワード -D DB名 
-e "SELECT path FROM wp_blogs" -N -s`
 
for path in ${paths[0]}
do
wget http://localhost${path}wp-cron.php 
--header="Host: example.com" 
-O $OUT
rm -f $OUT
done

上記スクリプトに実行権(chmod +x)をつけて cron から実行しています。

* * * * * /usr/local/path/to/wpcron.sh

今のところ問題なさそうです 🙂

※ ❗ スクリプトに MySQL のパスワードなどが記述されているので注意してください
※ ❗ スクリプトは自分だけ、または管理者だけが読めるようにしましょう :mrgreen: