人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ワードプレスでwp_cronで実行の自作プラグインを作りましたが定時起動しません。
そこで、定時起動してテストメールを送信、というだけのスクリプトを教えてください。

それで自分に定時にメールが送られれば、定時起動の部分を流用させて頂きたく思います。
可能であれば10分毎でお願いします。

「ワードプレス プラグイン Cronで起動」でGoogle検索した1ページめのサイトは見ましたが、未熟なもので動作に至りませんでした。

●質問者: maintour15
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● rouge_2008
●50ポイント ベストアンサー

「ワードプレス プラグイン 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/


2 ● taroe
●50ポイント

wp_cron 関数は、
CRON動作するものでなくて
ブログ(Wordpress)にアクセスがあった時に、
設定した時間を経過していて、まだ実行されていないときに
実行されるものだからです。


はてなアンテナに自分のブログを登録すれば
1日に1-3回ぐらいは呼び出してくれると思います。

-------
もしくは、
Cronが使えるサーバーを使っているのなら、

Cronでwgetで、自身のブログを定期的に呼び出せば、
wp_cronを利用した自作のプラグインを変更を最小限で実現できます。

Cronで
/usr/local/bin/wget http://あなたのブログ/

みたいな感じで呼び出すだけです。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ