WooCommerceはWordpressでECサイトを作るための便利なプラグインです。
WordPress+WooCommerceの組み合わせは、手数料を下げるために好まれる組み合わせですが、個人的には、売り上げが小さい段階ではShopifyやBaseなどを使う方が断然ストレスが少ないと思います。
WooCommerceはユーザー登録フォームにメールアドレス入力欄しか出てきません。
このユーザー登録フォームに項目を追加するカスタマイズは可能ですが、結構な手間がかかります。
検索するとフックを使ったカスタマイズがいくつも出てきますが、使われているフックも違っていたり、どれが正解なのかわかりません。
WooCommerceは、ユーザー登録情報をカスタマイズできる有料プラグインをリリースしています。
ですが、項目を少し追加するだけなら、有料プラグインの購入は避けたいところです。
この記事では、WP-Membersというプラグインを使って、簡単にWooCommerceのユーザー登録フォームを拡張する方法をお伝えします。
WP-MembersはWoocommerce拡張機能が無料で使える
WP-Membersという会員プラグインがあります。
WP-MembersにはWooCommerceと連携する機能があります。
この機能を有効化することで、WP-Membersからフォームの項目をカスタマイズすることが可能です。
WP-Membersはインストール直後は、すべての機能がOFFになっています。
WP-Membersの必要な項目だけ有効化できます。
WP-MembersのWooCommerceの設定
設定⇒WP-Membersと進み、WP-Membersオプションタブを開きます。
WooCommerceの設定を確認します。
WooCommerce購入手続き、WooCommerceアカウントでフィールドを追加するかどうかを指定できます。
フォームのフィールド追加
設定⇒WP-Membersと進み、フィールドタブを開きます。
項目ごとに、登録、必須、ユーザー、検索のチェックボックスがあります。
- 登録は、登録時に表示するかどうか
- 必須は、必須項目かどうか
- ユーザーは、ユーザー一覧に列を表示するかどうか
- 検索は、検索対象にするかどうか
項目を新規に追加したい場合は、フィールドを追加ボタンから追加できます。
メタキーの部分をWooCommerceと同じにすれば、WooCommerceの顧客情報もフィールドに追加できます。
- Billing
billing_first_name
billing_last_name
billing_company
billing_address_1
billing_address_2
billing_city
billing_postcode
billing_country
billing_state
billing_email
billing_phone
- Shipping
shipping_first_name
shipping_last_name
shipping_company
shipping_address_1
shipping_address_2
shipping_city
shipping_postcode
shipping_country
shipping_state
- Account
account_username
account_password
account_password-2
- Order
order_comments
参考:https://developer.woocommerce.com/docs/customizing-checkout-fields-using-actions-and-filters/
ユーザー情報のエクスポート
ユーザー一覧から、ユーザー情報をCSVでエクスポートできます。
WP-MembersのWooCommerce拡張の問題点
ご紹介した方法は、プラグインを組み合わせているがゆえに、小回りが利きにくい問題があります。
WordPress、WooCommerce、WP-Membersの機能を組み合わせているため、機能の分担がかわかりにくいためです。
例えば、WP-MembersはWooCommerceのactionフックを使って機能を実現しているので、WP-Membersが用意しているフックを通りません。
そのため、WP-Membersのフックで対応できるのかと思うと、そこを通らなかったりして、Wordpress、WooCommerce、WP-Membersのソースを見ながらカスタマイズしていく必要があります。
フォームの出力をカスタマイズしにくい問題
フォームの出力をカスタマイズしたい場合は、
$rows = apply_filters( 'wpmem_native_form_rows', $rows );
からカスタマイズを行います。
参考:https://github.com/wp-plugins/wp-members/blob/master/inc/wp-registration.php#L132C4-L132C61
ユーザー登録時のメールが登録者にしか届かない問題
WooCommerceの登録フォームから登録した際、登録者にはWoocommerceから簡単なメールが届くだけです。
実は、Wordpressのユーザー登録メールも、WP-Membersのユーザー登録メールも送られません。
もし、登録フォームに追加した項目を含め、登録内容をメールで管理者宛てに送りたい場合は、WooCommerceとWordpressのフックを組み合わせてカスタマイズする必要があります。
まとめ
WooCommerceのちょっとしたカスタマイズに更にプラグインを追加するのはいかがなものかという話もありますが、WP-Membersを利用することでユーザー一覧からユーザー情報をCSV出力することもできますので、独自フィールドで顧客情報を管理したい場合には、それなりに意味のあるプラグインだと思います。