ホームページ > CMS チュートリアル > &#&プレス > イベントのスケジューリングのためのWordPress Cronのマスター

イベントのスケジューリングのためのWordPress Cronのマスター

Christopher Nolan
リリース: 2025-02-19 11:51:14
オリジナル
359 人が閲覧しました

イベントのスケジューリングのためのWordPress Cronのマスター

キーテイクアウト

  • WordPress Cronは、WordPressサイトでタスクのスケジューリングを可能にする一連の関数であり、ページがロードされたときに実行されます。 UnixのCronとは異なり、常に新しいタスクを目指しているわけではありません。代わりに、ページの読み込みでタスクを実行します。
  • スケジュールできるCronイベントには2つのタイプがあります。シングルイベントは、1回、再スケジュールが変更されるまで実行されることはありません。どちらのタイプでも、Cronに登録する必要があるカスタム「アクション」の作成が必要です。 WordPressはプラグインが無効または削除された後でもイベントを実行し続けるため、特にプラグインを使用する場合は特にプラグインを使用する場合は、スケジュール解除イベントが不可欠です。イベントをスケジュールするには、フックの名前とクロンランの次のスケジュールされた時間を知る必要があります。
  • カスタムクロン間隔は、cron_schedulesフィルターに接続してカスタム間隔を追加することで設定できます。これは、cron。
  • を使用してイベントをスケジュールするときに使用できます
  • WordPress Cronは、私のように、あなたがWordPressで作業するのに多大な時間を費やしているかどうかを学び、理解したい最も便利な機能の1つです。
  • 緊密なスケジュールで特定の関数を実行できることは、CMSにとって不可欠であり、WordPressにはこのプロセスを非常にシンプルでほとんど楽にするのに役立つ一連の関数があります。 この記事では、次のWordPress Cron機能について説明します。

通常のcronとはWordPress cron

とどのように異なりますか イベントのスケジューリングのためのWordPress Cronのマスター繰り返しのイベントのスケジューリング

単一のイベントのスケジューリング
    イベントのスケジュールを解除する
  • カスタムクロン間隔の指定
  • cronとは?
  • UNIXシステムの時間ベースのスケジューラに関連しているため、「Cron」という用語に精通している可能性がありますが、WordPressのCronは異なります。その背後にある主なアイデアは同じです。
  • WordPressの使用方法のいくつかの例は、Cronシステムを内部的に使用していることです。テーマとプラグインの更新をチェックし、公開する準備ができている投稿があるかどうかを確認してください。
  • WordPress Cronはどのように違いますか?

UnixのCronに精通している場合、WordPressのCronは常に新しいタスクに目を光らせており、それらが来るときにそれらを実行していると思います。これは真実とはほど遠いものであり、その理由を説明します。

WordPress ’Cronは、フロントエンドページであろうとバックエンドページであろうと、ページがロードされると実行されます。言い換えれば、ページがあなたのウェブサイトにロードされると、WordPressは、それらを実行して実行する必要があるタスクまたはイベントがあるかどうかを確認します。あなたがこれが理想ではないと思っているなら、あなたは絶対に正しいです。

トラフィックが多すぎないWebサイトがあり、正確な時間に実行する必要があるタスクがある場合、WordPressは、誰かがあなたのウェブサイトにアクセスするまでタスクが期限が来ることを知りません。たとえそれがあなたのウェブサイトをrawった検索エンジンボットであっても。

cron

でイベントをスケジュールします

コードの数行でスケジュールできる2つのフレーバーのクロンイベントがあります:

  • シングルイベント - 再びスケジュールが変更されるまで、一度だけ実行しないでください。
  • 繰り返しのイベント - スケジュールで実行され、時間間隔を使用して無期限に再発するように設定されています。
繰り返しのイベントのスケジューリング

繰り返しのイベントのスケジューリングでは、Cronに登録する必要があるカスタム「アクション」を作成する必要があります。クロンが実行されると、以前に作成したカスタム「アクション」に添付された関数が実行されます。

日常的にポストリビジョンを削除する次の例を見てみましょう。

最初に、フックが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>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
$タイムスタンプ - (整数)(必須)イベントを初めて発生させたい。これは、UNIXタイムスタンプ形式でなければなりません。 WP Cronは、現地時間ではなくUTC/GMT時間を使用します。 WordPressで常にGMTであるTime()を使用します。 (current_time(「タイムスタンプ」)は、WordPressの現地時間です。)

$再発 - (文字列)(必須)イベントが再発する頻度。有効な値は、「時給」、「Twicedaily」、「Daily」です。後で独自の時間間隔を作成する方法を確認します。
    $ hook - (string)(必須)実行するアクションフックの名前。
  • $ args - (array)(オプション)hook関数に渡す引数。
  • 最初に、イベントが以前にスケジュールされていないことを確認します。そうでない場合は、先に進んでスケジュールします。
  • このコードのスニペットをアクションに加えることもできることに注意してください。プラグインライターの場合、スケジュールされたイベントをセットアップして、プラグインオプションページに初めてアクセスしたときに実行できます。はるかに簡単な例として、WordPressの初期アクションに結び付けます。
  • 定期的なイベントのスケジュール方法がわかったので、スケジュールが変更されるまで再び実行されない単一のイベントを作成することを見てみましょう。
  • 単一のイベントのスケジューリング

その名前が示すように、単一のイベントは一度実行されたイベントであり、その後停止します。この単一のイベントは、必要に応じて再度再スケジュールすることができます。

その背後にある概念は、繰り返されるイベントと同じです。最初に、サーバーで実行されたときに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)(必須)実行するアクションフックの名前。
    $ args - (配列)(オプション)フック関数に渡すための引数。
  • ここに、このすべてのアクションとフックがどのように組み立てられるかを簡単に見てください。
  • WordPressが整備している時間定数を使用して、私たちの生活を楽にしています。これらの定数の詳細については、「時間定数の使用」にアクセスできますが、ここに簡単な概要があります:

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

    day_in_seconds = 24 * hour_in_seconds
  • week_in_seconds = 7 * day_in_seconds
  • year_in_seconds = 365 * day_in_seconds
  • スケジュール解除イベント
  • 繰り返しのイベントと単一のイベントのスケジュール方法がわかったので、これらのイベントをスケジュールする方法を知ることも有用です。
  • あなたは疑問に思うかもしれません、なぜあなたはイベントをスケジュールしたいのですか?特にプラグインにいくつかのソートスケジュールイベントを含める場合、正当な理由があります。

クロンは、wp_optionsテーブルに保存され、プラグインを無効にして削除するだけで保存されます。 WordPressは、上記のプラグインが利用できなくなったにもかかわらず、イベントを実行しようとします。そうは言っても、プラグインまたはカスタム実装内でイベントを適切にスケジュールすることを確認してください。

スケジューリングのクロンイベントは比較的簡単です。知っておく必要があるのは、フックの名前であり、特定のクロンが実行するはずの次のスケジュール時間はいつですか。 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でイベントをスケジュールするために使用されます。 wp_schedule_event関数は、繰り返しのイベントをスケジュールするために使用されます。つまり、1時間ごと、毎日、または1日2回など、定期的に指定する間隔で実行されます。一方、wp_schedule_single_eventは、将来の特定の時間に実行される1回限りのイベントをスケジュールするために使用されます。イベントを一度に実行したいのか繰り返し実行したいのかに基づいて、正しい関数を選択することが重要です。仕事は機能していません。 1つの一般的な問題は、サーバーの時間設定の問題です。サーバーの時間が正しく設定されていない場合、スケジューリングの問題を引き起こす可能性があります。別の可能な問題は、プラグインまたはテーマとの競合です。一部のプラグインまたはテーマは、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アクションフックとは?

WordPress Cronアクションフックは、Cronイベントのユニークな識別子です。イベントをスケジュールするときは、アクションフックに関連付けます。次に、このアクションフックに関数を添付すると、イベントが実行されると実行されます。これにより、特定の時間に特定のアクションを実行できます。

WordPress Cronを使用して投稿をスケジュールできますか? WordPress自体は、Cronジョブを使用してスケジュールされた投稿を処理します。将来の日に公開するように投稿を設定すると、WordPressは指定された時間に投稿を公開するようにCronジョブをスケジュールします。 WP Crontrolなどのプラグインを使用して、スケジュールされたすべてのWordPress Cronジョブを表示できます。このプラグインは、スケジュールされたすべてのイベント、間隔、および次の実行時間を見ることができるユーザーフレンドリーなインターフェイスを提供します。また、Cronジョブを追加、編集、または削除するために使用することもできます。

WordPress Cronジョブを手動で実行できますか? WP Crontrolなどのプラグインを使用してこれを行うことができます。これにより、すぐにCronイベントを実行できます。これは、テストとデバッグの目的に役立つ場合があります。

WordPress Cronの仕事と本当のCronの仕事の違いは何ですか?サーバーレベルで実行されないため、実際のCronの仕事ではありません。代わりに、WordPressサイトにページがロードされると実行されます。一方、実際のCronジョブは、サーバーレベルでスケジュールされるタスクです。誰かがあなたのサイトにアクセスするかどうかに関係なく、特定の時間に実行されます。 WordPress Cronのジョブはセットアップと使用が簡単ですが、実際のCronのジョブはより信頼性が高く正確になります。

以上がイベントのスケジューリングのためのWordPress Cronのマスターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート