1. Home
  2. WooCommerce developer
  3. Action Scheduler
  4. Action Scheduler を利用した開発方法

Action Scheduler を利用した開発方法

WooCommerce をインストールして有効化している場合

使おうと思ったら、すぐに使えます。そんだけ。爆

ただ、一応 WooCommerce 用の拡張プラグインで利用する場合は、プラグインやテーマの中でライブラリーとして登録しておいたほうが良いです。何故ならバージョンアップすることもあり、その不具合で動かなくなる場合もありますので。

下に記載の「ライブラリとしての使用」に従って、プラグイン内にライブラリーとしてコードを入れて利用することをお勧めします。

使い方

Action Scheduler を使用するには、次のものが必要です。

  • ライブラリのインストール
  • アクションのスケジューリング

インストール

Action Scheduler をインストールするには、次の2つの方法があります。

  • 通常のWordPressプラグイン。
  • プラグインのコードベース内のライブラリ。

プラグインとしての使用法

Action Scheduler には、標準の WordPress プラグインとして使用するために必要なファイルヘッダーが含まれています。

プラグインとしてインストールするには:

  1. 最新の安定版リリースの .zip アーカイブをダウンロードします
  2. WordPress サイトの[プラグイン]> [新規追加]> [管理画面のアップロード]に移動します
  3. ダウンロードしたアーカイブファイルを選択します
  4. [今すぐインストール]をクリックします
  5. [アクティブ化]をクリックします
  6. または、Git リポジトリをサイトの wp-content/plugins フォルダーに複製します。

Action Scheduler をプラグインとして使用すると、コードベースのサブツリーを更新するよりも、新しいバージョンに対して開発する場合に便利です。 プラグインとしてインストールされた場合、Action Scheduler はアクションをスケジュールするためのユーザーインターフェイスを提供しません。 Action Scheduler と対話する唯一の方法は、コードを使用することです。

ライブラリとしての使用

Action Schedulerをライブラリとして使用するには:

  1. Action Scheduler コードベースを含める
  2. action-scheduler.php ファイルを含めてライブラリをロードします

プラグイン、テーマ、またはサイトの Git リポジトリでサブツリーを使用して Action Scheduler を含めることをお勧めします。 Composer も使用できます。

Action Scheduler を git サブツリーとして含めるには:

手順1.リポジトリをリモートとして追加する

git remote add -f subtree-action-scheduler https://github.com/woocommerce/action-scheduler.git

サブツリーをリモートとして追加すると、完全な GitHub URL の代わりに、 subtree-action-scheduler という名前からサブツリーを簡単に参照できます。

手順2.リポジトリをサブツリーとして追加する

git subtree add --prefix libraries/action-scheduler subtree-action-scheduler master --squash

これにより、Action Scheduler の master ブランチが libraries/action-scheduler フォルダー内のリポジトリに追加されます。

--prefixを変更して、コードが含まれる場所を変更できます。 または、master ブランチを 2.1.0 などのタグに変更して、安定バージョンのみを含めます。

手順3.サブツリーを更新する

Action Scheduler を新しいバージョンに更新するには、次のコマンドを使用します。

git fetch subtree-action-scheduler master
git subtree pull --prefix libraries/action-scheduler subtree-action-scheduler master --squash

アクションスケジューラの読み込み

インストール方法に関係なく、Action Scheduler をロードするには、 action-scheduler.php ファイルを含めるだけで済みます。

<?php
require_once( plugin_dir_path( __FILE__ ) . '/libraries/action-scheduler/action-scheduler.php' );

Action Scheduler を初期化するために、関数を呼び出したり、他の操作を行ったりする必要はありません。

action-scheduler.php ファイルが含まれている場合、Action Scheduler はそのファイルにバージョンを登録してから、それ自体の最新バージョンをサイトにロードします。 また、すべての API 関数の最新バージョンもロードされます。

注文の読み込み

Action Scheduler は、他のすべてのプラグインコードベースがロードされた後、そのバージョンを優先度 0 で「plugins_loaded」に登録します。 したがって、 action-scheduler.php ファイルは「plugins_loaded」優先度 0 の前に含める必要があります。

それを含むファイルが含まれているときにロードすることをお勧めします。 ただし、フックにロードする必要がある場合は、フックは「plugins_loaded」の前に発生する必要があります。または、-10 などの負の優先度で「plugins_loaded」を使用できます。

Action Scheduler は、後で優先度 1 の「init」で自身を初期化します。Action Scheduler API は、優先度 1 の「init」が終了するまで使用しないでください。

テーマでの使用法

テーマで Action Scheduler を使用する場合、Action Scheduler がプラグインによって登録されている場合は、テーマに含まれているバージョンではなく、プラグインによって登録されている最新バージョンが使用されることに注意してください。 これは、バージョン1.0以降の「plugins_loaded」を使用したバージョン依存関係処理コードが原因です。

アクションのスケジューリング

アクションをスケジュールするには、必要なパラメーターを渡して、目的のスケジュールタイプの API 関数を呼び出します。

以下のサンプルコードは、関数がまだスケジュールされていない場合に、関数を深夜に実行するようにスケジュールするために必要なすべてを示しています。

require_once( plugin_dir_path( __FILE__ ) . '/libraries/action-scheduler/action-scheduler.php' );

/**
 * フック「eg_midnight_log」を使用してアクションを毎日深夜に実行するようにスケジュールし、
 * コールバックが実行されるようにします。 
 */
function eg_schedule_midnight_log() {
	if ( false === as_next_scheduled_action( 'eg_midnight_log' ) ) {
		as_schedule_recurring_action( strtotime( 'tomorrow' ), DAY_IN_SECONDS, 'eg_midnight_log' );
	}
}
add_action( 'init', 'eg_schedule_midnight_log' );

/**
 * 'eg_midnight_log'スケジュールされたアクションが実行されたときに実行されるコールバック。
 */
function eg_log_action_data() {
	error_log( 'It is just after midnight on ' . date( 'Y-m-d' ) );
}
add_action( 'eg_midnight_log', 'eg_log_action_data' );

使用可能なすべての API 関数、およびそれらが受け入れるデータの詳細については、 API リファレンスを参照してください。

Updated on 2021年1月28日

Was this article helpful?

Related Articles

サポートが必要ですか?
もし、このサイトでわからない場合はこちらからお問い合わせください。
お問い合わせ

Leave a Comment

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください