会員グループ管理::会員ランク管理アドオンは、購入金額や購入回数に応じて会員グループを自動で登録するアドオンです。ゴールド会員、シルバー会員、ブロンズ会員といった運用ができます。
EC-CUBE 4.4 対応ブランチができたので、機能とあわせて 4.4 で直した内容も書いておきます。
ランクが付くしくみ
ゴールド会員やシルバー会員にあたる会員グループを作って、それぞれに購入金額と購入回数を登録しておきます。すると会員がログインしたときに、条件に合った会員グループが会員に登録されます。
条件に合うグループが複数あった場合は、優先度が最上位のものが登録されます。優先度は会員グループ一覧のドラッグアンドドロップの並び順です。意図しないランクが付くときは、まず並び順を疑ってください。
更新のタイミングがログイン時である点は運用に影響します。購入した直後にランクを上げたいなら、後述のカスタマイズで購入完了時や発送済みへの変更時に差し替えることになります。
送料無料条件
このアドオンには会員グループごとの送料無料条件も入っています。
- 送料無料条件(税込み金額)… 設定した金額以上の購入で送料無料
- 送料無料条件(数量)… 設定した数量以上の購入で送料無料
ゴールド会員は5,000円以上で送料無料、シルバー会員は10,000円以上で送料無料、といった設定ができます。会員グループ編集画面から設定します。
昇格条件を差し替える
デフォルトの条件は購入金額と購入回数ですが、これは差し替えられます。RankInterface を実装したランク決定クラスを作り、services.yaml でランク決定用のタグを付けて登録します。priority を99以下にすると、デフォルトの判定より先に効きます。
最終購入日から1ヶ月過ぎていたら会員グループから除外する、といった条件も書けます。このブログにも実装例を置いています。
EC-CUBE 4.4 対応で直したところ
共通の対応(属性記法への変換、Symfony 7 の Security 差し替え、SensioFrameworkExtraBundle の削除、テストの final 化対応)は本体プラグインの記事のとおりです。固有のものは2つでした。
エンティティに戻り値型が付いてモックが組めない
4.4 で本体エンティティのメソッドに戻り値型が宣言されました。テストのモックが型不一致で組めなくなったので、合わせています。
| メソッド | 4.4 での戻り値型 |
|---|---|
OrderItem::getPriceIncTax() | string |
OrderItem::getQuantity() | string |
Shipping::getProductOrderItems() | array |
Shipping::getOrderItems() | ItemCollection |
数量が string で返ってくるのは何度見てもとまどいます。decimal 列の getter が string を返すようになった影響で、値の比較を assertSame から assertEquals に変えたテストもありました。
4.2 向けの分岐を落とした
services.php に Constant::VERSION でEC-CUBEのバージョンを見て切り替える分岐が残っていました。4.4 専用ブランチでは常にタグ側だけが通るので、4.2 用の ArrayCollection 定義と、それを検証していた4件のテストを削除しています。このテストは 4.3 以降ずっとスキップされていました。
専用ブランチに分けると、こういう「もう通らない分岐」がまとめて消せます。4.2 / 4.3 版と両立させようとしていたら残り続けていたはずです。
動作要件といまの状況
| 項目 | 内容 |
|---|---|
| EC-CUBE | 4.4 系 |
| PHP | 8.2 / 8.3 |
| データベース | MySQL 8、PostgreSQL 13 以上 |
| 依存プラグイン | 会員グループ管理(CustomerGroup44)^4.4 |
パッケージ名は ec-cube/customergrouprank44、プラグインコードは CustomerGroupRank44 です。
2026年7月27日時点で CI は通っていますが、EC-CUBE 4.4 本体が未リリースのため配布は本体のリリース後です。4.2 / 4.3 版は引き続き更新しています。
応用として、Stripeと組み合わせて有料会員を管理する方法も書いています。