通常のcronとはWordPress cron
とどのように異なりますか単一のイベントのスケジューリング
トラフィックが多すぎないWebサイトがあり、正確な時間に実行する必要があるタスクがある場合、WordPressは、誰かがあなたのウェブサイトにアクセスするまでタスクが期限が来ることを知りません。たとえそれがあなたのウェブサイトをrawった検索エンジンボットであっても。
コードの数行でスケジュールできる2つのフレーバーのクロンイベントがあります:
日常的にポストリビジョンを削除する次の例を見てみましょう。
最初に、フックがCronによって呼び出されたときに実行したい関数を添付するカスタム「アクション」を作成します。
繰り返しのイベントのスケジューリングについては、wp_schedule_event($ timestamp、$ recurrence、$ hook、$ args)機能を使用します。
<span><span><?php </span></span><span><span>// delete_post_revisions will be call when the Cron is executed </span></span><span><span>add_action( 'delete_post_revisions', 'delete_all_post_revisions' ); </span></span><span> </span><span><span>// This function will run once the 'delete_post_revisions' is called </span></span><span><span>function delete_all_post_revisions() { </span></span><span> </span><span> <span>$args = array( </span></span><span> <span>'post_type' => 'post', </span></span><span> <span>'posts_per_page' => -1, </span></span><span> <span>// We don't need anything else other than the Post IDs </span></span><span> <span>'fields' => 'ids', </span></span><span> <span>'cache_results' => false, </span></span><span> <span>'no_found_rows' => true </span></span><span> <span>); </span></span><span> </span><span> <span>$posts = new WP_Query( $args ); </span></span><span> </span><span> <span>// Cycle through each Post ID </span></span><span> <span>foreach( (array)$posts->posts as $post_id ) { </span></span><span> </span><span> <span>// Check for possible revisions </span></span><span> <span>$revisions = wp_get_post_revisions( $post_id, array( 'fields' => 'ids' ) ); </span></span><span> </span><span> <span>// If we got some revisions back from wp_get_post_revisions </span></span><span> <span>if( is_array( $revisions ) && count( $revisions ) >= 1 ) { </span></span><span> </span><span> <span>foreach( $revisions as $revision_id ) { </span></span><span> </span><span> <span>// Do a final check on the Revisions </span></span><span> <span>if( wp_is_post_revision( $revision_id ) ) { </span></span><span> <span>// Delete the actual post revision </span></span><span> <span>wp_delete_post_revision( $revision_id); </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
$再発 - (文字列)(必須)イベントが再発する頻度。有効な値は、「時給」、「Twicedaily」、「Daily」です。後で独自の時間間隔を作成する方法を確認します。
その名前が示すように、単一のイベントは一度実行されたイベントであり、その後停止します。この単一のイベントは、必要に応じて再度再スケジュールすることができます。
その背後にある概念は、繰り返されるイベントと同じです。最初に、サーバーで実行されたときにCronによって呼び出されるカスタムフックを登録します。 Cronがフックを呼び出すと、その機能が実行され、それが基本的に物事を成し遂げる方法です。例として、投稿の有効期限を設定する予定です。投稿は公開されてから30日後に期限切れになります。 Publish_Postに接続して、投稿が公開されてカウントダウンが始まるとすぐに1つのイベントをスケジュールできるようにします。 30日後に投稿を削除する関数を設定します。
かなり簡単ですよね?ここで、投稿が実際に公開されたら、イベントをスケジュールする必要があります。このタスクを達成するには、wp_schedule_single_event($ timestamp、$ hook、$ args)関数を使用する必要があります。
<span><span><?php </span></span><span><span>// delete_post_revisions will be call when the Cron is executed </span></span><span><span>add_action( 'delete_post_revisions', 'delete_all_post_revisions' ); </span></span><span> </span><span><span>// This function will run once the 'delete_post_revisions' is called </span></span><span><span>function delete_all_post_revisions() { </span></span><span> </span><span> <span>$args = array( </span></span><span> <span>'post_type' => 'post', </span></span><span> <span>'posts_per_page' => -1, </span></span><span> <span>// We don't need anything else other than the Post IDs </span></span><span> <span>'fields' => 'ids', </span></span><span> <span>'cache_results' => false, </span></span><span> <span>'no_found_rows' => true </span></span><span> <span>); </span></span><span> </span><span> <span>$posts = new WP_Query( $args ); </span></span><span> </span><span> <span>// Cycle through each Post ID </span></span><span> <span>foreach( (array)$posts->posts as $post_id ) { </span></span><span> </span><span> <span>// Check for possible revisions </span></span><span> <span>$revisions = wp_get_post_revisions( $post_id, array( 'fields' => 'ids' ) ); </span></span><span> </span><span> <span>// If we got some revisions back from wp_get_post_revisions </span></span><span> <span>if( is_array( $revisions ) && count( $revisions ) >= 1 ) { </span></span><span> </span><span> <span>foreach( $revisions as $revision_id ) { </span></span><span> </span><span> <span>// Do a final check on the Revisions </span></span><span> <span>if( wp_is_post_revision( $revision_id ) ) { </span></span><span> <span>// Delete the actual post revision </span></span><span> <span>wp_delete_post_revision( $revision_id); </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
$タイムスタンプ - (整数)(必須)イベントを発生させたい時間。これは、UNIXタイムスタンプ形式でなければなりません
$ hook - (string)(必須)実行するアクションフックの名前。minute_in_seconds = 60(秒)
<span><span><?php </span></span><span><span>// Make sure this event hasn't been scheduled </span></span><span><span>if( !wp_next_scheduled( 'delete_post_revisions' ) ) { </span></span><span> <span>// Schedule the event </span></span><span> <span>wp_schedule_event( time(), 'daily', 'delete_post_revisions' ); </span></span><span><span>}</span></span>
hour_in_seconds = 60 * minute_in_seconds
スケジューリングのクロンイベントは比較的簡単です。知っておく必要があるのは、フックの名前であり、特定のクロンが実行するはずの次のスケジュール時間はいつですか。 wp_next_scheduled()を使用して、次の発生がいつ行われるかを見つけることになりますが、wp_unschedule_event()。
を使用してスケジュールを解除できます。最初の例を考慮して、次の方法でイベントをスケジュールしません。
CRON間隔のカスタマイズ
Cronを使用してイベントをスケジュールするときに使用できるカスタムCron間隔を設定することができます。そのためには、cron_schedulesフィルターに接続して独自のフィルターを追加する必要があります。 10分ごとに実行するカスタムインターバルセットの追加を見てみましょう。
<span><span><?php </span></span><span><span>// delete_post_revisions will be call when the Cron is executed </span></span><span><span>add_action( 'delete_post_revisions', 'delete_all_post_revisions' ); </span></span><span> </span><span><span>// This function will run once the 'delete_post_revisions' is called </span></span><span><span>function delete_all_post_revisions() { </span></span><span> </span><span> <span>$args = array( </span></span><span> <span>'post_type' => 'post', </span></span><span> <span>'posts_per_page' => -1, </span></span><span> <span>// We don't need anything else other than the Post IDs </span></span><span> <span>'fields' => 'ids', </span></span><span> <span>'cache_results' => false, </span></span><span> <span>'no_found_rows' => true </span></span><span> <span>); </span></span><span> </span><span> <span>$posts = new WP_Query( $args ); </span></span><span> </span><span> <span>// Cycle through each Post ID </span></span><span> <span>foreach( (array)$posts->posts as $post_id ) { </span></span><span> </span><span> <span>// Check for possible revisions </span></span><span> <span>$revisions = wp_get_post_revisions( $post_id, array( 'fields' => 'ids' ) ); </span></span><span> </span><span> <span>// If we got some revisions back from wp_get_post_revisions </span></span><span> <span>if( is_array( $revisions ) && count( $revisions ) >= 1 ) { </span></span><span> </span><span> <span>foreach( $revisions as $revision_id ) { </span></span><span> </span><span> <span>// Do a final check on the Revisions </span></span><span> <span>if( wp_is_post_revision( $revision_id ) ) { </span></span><span> <span>// Delete the actual post revision </span></span><span> <span>wp_delete_post_revision( $revision_id); </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>} </span></span><span> <span>} </span></span><span><span>}</span></span>
WordPressのCronを使用するのは簡単ではなく、プラグインをより堅牢にするのに役立つ非常に優れた興味深いツールです。これらすべての機能を学び、実際のアプリケーションでそれらを実践することは、イベントのスケジューリングのためにWordPressのCronをマスターする最良の方法です。
WordPress Cronの習得についてよく尋ねる質問WordPress Cronジョブが機能しているかどうかをテストするにはどうすればよいですか? WordPress Cronのジョブが機能しているかどうかをテストする方法。 1つの方法は、WP Crontrolなどのプラグインを使用することです。これにより、WP-Cronシステムで何が起こっているかを表示および制御できます。別の方法は、デバッグツールを使用することです。 WP-Config.phpファイルでwp_debugを有効にすることにより、Cronジョブが実行されたときに発生するエラーを確認できます。 PHPのERROR_LOG関数を使用して、エラーをファイルにログに記録することもできます。特定の時間に実行するジョブ。 wp_schedule_event関数を使用すると、イベントが最初に発生する時間と、再発する間隔を指定できます。 wp_schedule_single_event関数を使用すると、イベントが発生する正確な時間を指定できます。この関数には、イベントのタイムスタンプと、予約する機能へのアクションフックの2つのパラメーターが必要です。この関数を呼び出すと、指定されたイベントは発生しなくなります。
WordPress Cronアクションフックは、Cronイベントのユニークな識別子です。イベントをスケジュールするときは、アクションフックに関連付けます。次に、このアクションフックに関数を添付すると、イベントが実行されると実行されます。これにより、特定の時間に特定のアクションを実行できます。
以上がイベントのスケジューリングのためのWordPress Cronのマスターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。