このプラグインを使用すると、WooCommerce メンバーシップを Discourse グループと同期できます。
前提条件
この機能を使用するには、DiscourseConnect を有効にする必要があります。DiscourseConnect のプロバイダーとして WordPress または Discourse のいずれかを選択してください。
手順
-
この WordPress プラグインをインストールします: GitHub - paviliondev/discourse-woocommerce · GitHub
-
WordPress のテーマエディターを使用して、同期させたい WooCommerce の plan_id、Discourse の group_id、group_name に応じて以下の数値を更新してください。
$member_group_map[] = (object) array('plan_id' => 51, 'group_id' => 43, 'group_name' => 'group1'); $member_group_map[] = (object) array('plan_id' => 62, 'group_id' => 44, 'group_name' => 'group2');必要に応じてエントリを自由に追加(または既存のエントリを削除)できます。
-
WooCommerce メンバーシッププランの ID は、WordPress でプランを編集している際の URL から確認できます: https://site/wp-admin/post.php?post=441&action=edit
-
Discourse グループの ID は、こちらで確認できます: Login | HSTS Redirection Community
-
オプションの手順
- WP Crontrol – WordPress plugin | WordPress.org をインストールし、
run_full_wc_membership_syncを 24 時間ごとに実行するようにスケジュールを設定してください。これにより、整合性を確保するための完全な同期が実行されます。
技術的な注記
WooCommerce において、メンバーシップの作成とステータス変更の両方を確実に捕捉する唯一の方法は、wc_memberships_user_membership_saved という管理用フックを使用することです。wc_memberships_user_membership_status_changed フックと組み合わせて使用することも可能ですが、通常は必要ありません。
このコードは WooCommerce のログ機能を使用して、情報を /wp-content/uploads/wc-logs/{log_file} に記録します。動作しない場合は、その出力を確認してください。ロジックの各段階を示す、以下のようなログが表示されます。
2019-05-23T07:01:57+00:00 INFO Running handle_wc_membership_saved 1, 92, 1
2019-05-23T07:01:57+00:00 INFO angus@email.com membership of VIP Membership changed to wcm-active
2019-05-23T07:01:57+00:00 INFO Sending PUT request to http://localhost:3000/groups/41/members with angus@email.com
2019-05-23T07:01:57+00:00 INFO Response from Discourse: 200 OK
使用上の注記
WordPress の管理画面で「ユーザーメンバーシップを削除」をクリックしても、同期は機能しません。その操作が実行された際に発火する WooCommerce のフックが存在しないためです。代わりに、メンバーシップのステータスを変更してください。


