ワードプレスのwp_next_scheduled関数の使用方法・解説

概要

wp_next_scheduled関数は、スケジュールに登録されているアクションの実行時間を取得するために使用されるWordPressの関数です。この関数は、特定の「フック」名が指定された場合、そのフックに関連付けられた次回実行予定の時間を返します。主にCronジョブや定期的に実行する必要があるアクションの管理に使用されます。

wp_next_scheduledがよく使用される機能の例は以下の通りです。

  1. 定期的なバックアップのスケジュール設定
  2. データベースのクリーンアップ処理
  3. 定期的なメール通知の送信
  4. プラグインやテーマの更新チェック
  5. RSSフィードの更新
  6. 外部APIからのデータ取得
  7. カスタム投稿タイプの定期的な処理
  8. 定期的なログの記録や監視

構文

wp_next_scheduled( string $hook, array $args = array() )

パラメータ

  • $hook (string): 取得したいフックの名前。
  • $args (array) [オプション]: フックに渡す引数。

戻り値

  • (int|false): 次回の実行時間のUnixタイムスタンプを返します。スケジュールが存在しない場合はfalseを返します。

関連する関数

使用可能なバージョン

  • これは、WordPress 3.0.0以降で使用可能です。

コアファイルのパス

  • wp-includes/cron.php

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1: 次回実行予定時刻の取得

$next_run = wp_next_scheduled( 'my_custom_hook' );
if ( $next_run ) {
    echo '次回実行予定時刻: ' . date( 'Y-m-d H:i:s', $next_run );
}

このサンプルは、特定のカスタムフック「my_custom_hook」の次回の実行時刻を取得し、表示しています。

サンプル2: フックが未スケジュールの場合の処理

if ( !wp_next_scheduled( 'my_custom_hook' ) ) {
    wp_schedule_event( time(), 'hourly', 'my_custom_hook' );
}

このサンプルは、指定したフックがまだスケジュールされていない場合に、1時間ごとに実行するようスケジュールしています。

サンプル3: 特定の引数を持つスケジューリング

$args = array( 'post_id' => 123 );
if ( !wp_next_scheduled( 'my_custom_hook', $args ) ) {
    wp_schedule_event( time(), 'daily', 'my_custom_hook', $args );
}

このサンプルは、特定の投稿IDを引数として持つフック「my_custom_hook」のスケジュールを設定します。

サンプル4: 次回実行時刻が過去の場合の確認

$next_run = wp_next_scheduled( 'my_custom_hook' );
if ( $next_run && $next_run < time() ) {
    echo 'フックは過去にスケジュールされています。';
}

このサンプルは、次回の実行時刻が現在の時間よりも過去であれば警告メッセージを表示します。

サンプル5: スケジュールのクリアと再スケジュール

$hook = 'my_custom_hook';
if ( wp_next_scheduled( $hook ) ) {
    wp_clear_scheduled_hook( $hook );
}
wp_schedule_event( time(), 'twicedaily', $hook );

このサンプルは、既にスケジュールされているフックをクリアし、2日に1回実行するよう再スケジュールしています。

この関数について質問する


上の計算式の答えを入力してください