そこで、定時起動してテストメールを送信、というだけのスクリプトを教えてください。
それで自分に定時にメールが送られれば、定時起動の部分を流用させて頂きたく思います。
可能であれば10分毎でお願いします。
「ワードプレス プラグイン Cronで起動」でGoogle検索した1ページめのサイトは見ましたが、未熟なもので動作に至りませんでした。
「ワードプレス プラグイン Cronで起動」での検索結果1件目(※「http://dogmap.jp」?)で紹介されている方法で動作します。
以下を利用しているテーマのfunctions.phpに記述します。
define('CRON_SCHEDULE_HANDLER', '登録するイベントのフック名'); // 定数は「CRON_SCHEDULE_HANDLER」でなくても大丈夫です。好きな名前に変更したら、コード内の定数も同じに変更します。 // wp-cron で実行させたい処理 function cron_schedule_handler() { // ここに実際の処理を記述 echo "This is test for wp-cron schedule."; // wp-cron.phpに直接アクセスしていると表示されます。サイトアクセス時には表示されません。 wp_mail('xxxxx@mail.example.jp', 'メールの件名', 'メールのメッセージ本文'); // 指定時間後に再度起動 $time_interval = 10 * 60; // 10分待つのが面倒な場合は、「2 * 60」など短くして確認してみてください。 wp_schedule_single_event(time() + $time_interval, CRON_SCHEDULE_HANDLER); } // wp-cron でスケジュールされていなければ、スケジュール登録 $crons = _get_cron_array(); $enabled = false; //wp_clear_scheduled_hook(CRON_SCHEDULE_HANDLER); // 動作が上手くいかなかった時は、ここを一旦有効にして実行し、登録済みの同じ名前のイベントを削除してから、再度コメントアウトしてから実行してください。(※新規に登録されるようにします。) foreach ( $crons as $time => $tasks ) { foreach ( $tasks as $procname => $task ) { if ($procname === CRON_SCHEDULE_HANDLER) { $enabled = true; break; } } if ($enabled) break; } if (!$enabled) wp_schedule_single_event(time(), CRON_SCHEDULE_HANDLER); unset($tasks); unset($crons); // スケジュール実行 add_action(CRON_SCHEDULE_HANDLER, 'cron_schedule_handler');
動作確認の方法が上手くない部分があったのではないかと思いますが、メール送信で確認したでしょうか?
wp-cron.phpはバックグラウンドで動作するようですので、文字列等表示の場合は動作している事を視認できません。(※wp-cron.phpに直接アクセスして実行した場合、文字列等表示でも動作を確認できます。)
Apacheのログを確認できる場合、アクセスログを確認してみてください。
wp-cron.phpが実行されたアクセスは、「"POST /wp-cron.php?doing_wp_cron=実行時のタイムスタンプ HTTP/1.0"」のように記録されます。
指定した時間単位(※アクセスがあった時)で実行されている事が分かると思います。
このようなプラグインもありました。
まだ動作確認していませんが、利用できるかもしれません。
「WP-Crontrol」
http://wordpress.org/extend/plugins/wp-crontrol/
※デフォルトの1時間、1日2回、1日の他に、5分単位など任意のスケジュール「cron schedules」が登録できるようです。
http://wordpress.org/extend/plugins/wp-crontrol/screenshots/
「ワードプレス プラグイン Cronで起動」での検索結果1件目(※「http://dogmap.jp」?)で紹介されている方法で動作します。
以下を利用しているテーマのfunctions.phpに記述します。
define('CRON_SCHEDULE_HANDLER', '登録するイベントのフック名'); // 定数は「CRON_SCHEDULE_HANDLER」でなくても大丈夫です。好きな名前に変更したら、コード内の定数も同じに変更します。 // wp-cron で実行させたい処理 function cron_schedule_handler() { // ここに実際の処理を記述 echo "This is test for wp-cron schedule."; // wp-cron.phpに直接アクセスしていると表示されます。サイトアクセス時には表示されません。 wp_mail('xxxxx@mail.example.jp', 'メールの件名', 'メールのメッセージ本文'); // 指定時間後に再度起動 $time_interval = 10 * 60; // 10分待つのが面倒な場合は、「2 * 60」など短くして確認してみてください。 wp_schedule_single_event(time() + $time_interval, CRON_SCHEDULE_HANDLER); } // wp-cron でスケジュールされていなければ、スケジュール登録 $crons = _get_cron_array(); $enabled = false; //wp_clear_scheduled_hook(CRON_SCHEDULE_HANDLER); // 動作が上手くいかなかった時は、ここを一旦有効にして実行し、登録済みの同じ名前のイベントを削除してから、再度コメントアウトしてから実行してください。(※新規に登録されるようにします。) foreach ( $crons as $time => $tasks ) { foreach ( $tasks as $procname => $task ) { if ($procname === CRON_SCHEDULE_HANDLER) { $enabled = true; break; } } if ($enabled) break; } if (!$enabled) wp_schedule_single_event(time(), CRON_SCHEDULE_HANDLER); unset($tasks); unset($crons); // スケジュール実行 add_action(CRON_SCHEDULE_HANDLER, 'cron_schedule_handler');
動作確認の方法が上手くない部分があったのではないかと思いますが、メール送信で確認したでしょうか?
wp-cron.phpはバックグラウンドで動作するようですので、文字列等表示の場合は動作している事を視認できません。(※wp-cron.phpに直接アクセスして実行した場合、文字列等表示でも動作を確認できます。)
Apacheのログを確認できる場合、アクセスログを確認してみてください。
wp-cron.phpが実行されたアクセスは、「"POST /wp-cron.php?doing_wp_cron=実行時のタイムスタンプ HTTP/1.0"」のように記録されます。
指定した時間単位(※アクセスがあった時)で実行されている事が分かると思います。
このようなプラグインもありました。
まだ動作確認していませんが、利用できるかもしれません。
「WP-Crontrol」
http://wordpress.org/extend/plugins/wp-crontrol/
※デフォルトの1時間、1日2回、1日の他に、5分単位など任意のスケジュール「cron schedules」が登録できるようです。
http://wordpress.org/extend/plugins/wp-crontrol/screenshots/
wp_cron 関数は、
CRON動作するものでなくて
ブログ(Wordpress)にアクセスがあった時に、
設定した時間を経過していて、まだ実行されていないときに
実行されるものだからです。
はてなアンテナに自分のブログを登録すれば
1日に1-3回ぐらいは呼び出してくれると思います。
-------
もしくは、
Cronが使えるサーバーを使っているのなら、
Cronでwgetで、自身のブログを定期的に呼び出せば、
wp_cronを利用した自作のプラグインを変更を最小限で実現できます。
Cronで
/usr/local/bin/wget http://あなたのブログ/
みたいな感じで呼び出すだけです。
コメント(4件)
10分に1回は必ずアクセスがあるのでしたらwp-cronでも大丈夫ですが、時間帯によってアクセスがまったく無い事がある場合などは、通常のcronで起動した方がいいかもしれません。
ですがスクリプトも問題なく動くものなのに、wp-cronでは起動しないのです。
PHPの経験が浅いので、フックとかが間違っているのかもしれないとおもいご質問させて頂きました。
nginxとかではデフォルト設定ではwp-cron動かなかった気がしますが。
nginxかはわからないのですが、
http://hostgator.com/shared.shtml
こちらのサーバを使用しておりますが、例えば「WASSUP リアルタイムAnalytics」というような名前の、ブラウザアクセスしていれば一定秒ごとに画面更新するアクセス解析プラグイン等は動いています。