Easy Digital Downloads 3.2.0では、非推奨となったafter payment actionsに代わりafter order actionsが導入されました。このフックは、開発者が購入完了時の速度やパフォーマンスに影響を与えることなく、支払いが完了したときに集中的なアクションを処理する方法を提供します。これは、注文後のアクションを追加する方法に関するガイドです。
注文後のアクションの紹介
注文が「完了」とマークされたときに追加のアクションを実行したい場合は、edd_complete_purchaseフックの代わりにedd_after_order_actionsフックを使用することをお勧めします。これら2つのフックの違いは何ですか?
edd_complete_purchase– ユーザーが「購入を完了」ボタンをクリックした後、および「購入確認」ページが読み込まれる前に、購入プロセス中に実行されます。このフックは、「ミッションクリティカル」なタスクに使用する必要があります。これは、ユーザーが購入を完了するためにかかる時間として認識される時間に影響するためです。このフックを使用する例としては、ライセンスキーの作成、サブスクリプションの生成、または領収書ページでユーザーに表示する必要があるものなどが挙げられます。edd_after_order_actions–WP_Cronシステムを介して、購入完了後約30秒後に実行されます。このフックは、追加のAPI呼び出し、高負荷なデータベースクエリ、およびユーザーが購入を完了するために非ミッションクリティカルと見なされるべきタスクを実行するために使用する必要があります。これの良い例としては、メーリングリストへのユーザーの追加、ユーザーの統計情報の計算、キャッシュの更新などがあります。
フックに渡される引数は何ですか?
edd_after_order_actionsフックは3つの引数を送信します:
- 注文ID(整数)
EDD\Orders\OrderオブジェクトEDD_Customerオブジェクト
「完了」に含まれる注文ステータスは何ですか?
Easy Digital Downloadsでは、completeステータスを使用して注文を完了としてマークします。Recurring Payments拡張機能を統合または使用している場合、edd_subscriptionステータスも「完了」注文と見なされます。最初の購入のみでアクションを実行し(サブスクリプションの更新は無視する)、$order->statusをcompleteの値でチェックしてから統合を続行する必要がある場合は、そのようにしてください。
なぜWP_Cronが必要なのですか?
WP_Cronは、WordPressサイトがユーザーのサイト表示エクスペリエンスに影響を与えることなくタスクを完了するために使用するバックグラウンドプロセスです。サイトにトラフィックが発生すると、ページが読み込みを完了する前に、WordPressは完了する必要のあるバックグラウンドタスクがあるかどうかを判断します。ある場合、保留中のタスクを処理するためにバックグラウンドプロセスを起動します。
ホストがWP_Cronを無効にしている場合はどうなりますか?
WP_Cronが機能しているかどうかを検出する最善を尽くしていますが、適切に検出できない場合があります。ホストまたはサーバーでWP_Cronが無効になっているか、事前に決定された頻度で実行するように変更されている場合は、この機能を手動で無効にする必要がある場合があります。アクションフックの後を使用しないことを選択した場合のフィルターがあります。その場合、EDDはフォールバックして完了時にアクションを実行し、遅延プロセスを回避します。
注意: この注文後のアクションシステムはWP_Cronに依存しているため、「ミッションクリティカル」と見なされるものには使用しないでください。これは、購入データに直接影響しないAPIや大量のデータとの統合をオフロードする方法にすぎません。
注文後のアクションに関する主なポイント
WP_Cronを介してトリガーされます- フィルター(
edd_use_after_payment_actions)で無効にできます - デフォルトでは、購入後30秒後にスケジュールされますが、フィルターで変更できます。
- 注文のデータベーステーブルには、アクションが完了した時間を示す列が含まれています。
例はありますか?
WP Codeライブラリのedd_after_order_actionsフックとの統合のための「テンプレート」を作成しました。こちらで表示できます。
edd_after_payment_actionsからコードを移行する
以前にedd_after_payment_actionsフックと統合していた場合、朗報は、この新しくより効率的なフックに移行するのは非常に簡単であるということです。
主な違いは、2番目のパラメーターの変更です。EDD_Paymentオブジェクトを送信する代わりに、Orderオブジェクトが送信されます。
