私はこのようにWordPressとSalesforceをリンクするプラグインを作成しています(プラグインが何をするのかを明確にするためにここで更新します)。
salesforce_Push
:WordPressからSalesforceにデータを送信します。これは、新しいアイテム(マップ設定によっては投稿、ユーザーなど)がWordPressで作成/更新/削除され、そのデータがSalesforce APIに送信されてマッピングオブジェクトが作成/更新/削除されたときに発生します。マッピングはアイテムのID(たとえば、ユーザーIDから連絡先IDへ)に基づいて行われます。salesforce_pull
:(マップ設定に基づいて)WordPressに戻ってくるべき作成/更新/削除されたオブジェクトについてSalesforceを確認してください。たとえば、連絡先はSalesforceで更新されます。これでWordPressの対応するユーザーが更新されます。2つのwp_schedule_event
メソッドがあります。1つはPush用、もう1つはpull用です。上記のメソッドがイベントにデータを送信してから、処理が行われます(Salesforce APIメソッドまたはWordPressメソッドを呼び出してアイテムを作成/更新/削除します)。
現在のところ、これが起こります。
wp_schedule_event
が実行されるときに、Salesforceでも同じことが起こります。たとえば、5分ごとにSalesforceに新しいユーザを送信して連絡先を作成したり、すでにWordPressユーザにマッピングされている場合はそれらを更新したりします。wp_schedule_event
が実行されるとき、Salesforce APIからそのアイテムのデータをロードし、それをsalesforce_pull
に送信します。ここで、WordPressでオブジェクトを作成/更新/削除するメソッドを呼び出します(この部分はまだ完成していません)。問題はこれです:
#1では、SalesforceアイテムがWordPressアクティビティ(salesforce_Push
)に基づいて作成または更新されたときに、Salesforceで何かが変更されたことを認識しているため、salesforce_pull
メソッドも呼び出そうとします。
これは、各システムが他のシステムを更新しようとし続けるため、満足できないループを作成します。私は各メソッドが他のメソッドによって呼び出されたかどうかを確認するためにどのような種類のチェックを実行するのかを決定しようとしていますが、システムの正当な編集を止めることのできないものを作成することはできません。
やめたいイベントは次のようになります。
(これは現在起こっていることです、明確にするために)
許可したいイベントは次のようになります。
増分を変更するたびに、ユーザーデータバージョンインデックス変数を作成する必要があります。これは、データセットの最新バージョンがどれであるかを追跡するのに役立ちます。そのインデックスの値を使用して、更新が発生するかどうかを判断できます。
(コメントからの回答)