はじめ
WooCommerce 2.1以降、「マイアカウント」ページの登録フォームをカスタマイズできます。 以下の内容は ウーthemes Support サイトの内容を移したのです。
「マイアカウント」 ページの登録フォームにフィールドを追加するには、まず「登録」を有効にする必要があります。
WordPress ダッシュボードから WooCommerce >設定 ページに移動した後にアカウント(Accounts)]タブを選択します。 次に Registration Options(登録オプション)の 「Enable Registration(登録を有効にする)」から Enable registration on the "My Account" pageをチェックします。
基本的に「マイアカウント「ページは次のように表示されます。
上図のように」メールアドレス「と」비밀번호「のみ表示されます。
新しいフィールドを追加する
「マイアカウント」では、会員登録フォームには基本的にXNUMXつのフィールドしかなく、簡単に会員登録が可能になっています。 追加フィールドを指定するには、次のアクションを使用できます。
- woocommerce_register_form_start - 「Eメールアドレス」フィールドの後に表示されます。
- woocommerce_register_form - 「パスワード」フィールドの後に表示されます。
たとえば、次のコードを使用して、「名前」、「姓」、「電話番号」フィールドを追加できます。
/** * Add new register fields for WooCommerce registration. * WooCommerce 등록 폼에 새로운 필드 추가 * * @return string Register fields HTML. */ function wooc_extra_register_fields() { ?> <p class="form-row form-row-first"> <label for="reg_billing_first_name"><?php _e( 'First name', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="text" class="input-text" name="billing_first_name" id="reg_billing_first_name" value="<?php if ( ! empty( $_POST['billing_first_name'] ) ) esc_attr_e( $_POST['billing_first_name'] ); ?>" /> </p> <p class="form-row form-row-last"> <label for="reg_billing_last_name"><?php _e( 'Last name', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="text" class="input-text" name="billing_last_name" id="reg_billing_last_name" value="<?php if ( ! empty( $_POST['billing_last_name'] ) ) esc_attr_e( $_POST['billing_last_name'] ); ?>" /> </p> <div class="clear"></div> <p class="form-row form-row-wide"> <label for="reg_billing_phone"><?php _e( 'Phone', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="text" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php if ( ! empty( $_POST['billing_phone'] ) ) esc_attr_e( $_POST['billing_phone'] ); ?>" /> </p> <?php } add_action( 'woocommerce_register_form_start', 'wooc_extra_register_fields' );
ちなみに"billing_*"としてフィールドを使用して後で WooCommerceで、顧客アカウントのフィールドと接続することができます。
次のようなフィールドを使用することができます。
- 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
上記のコードを使用している WordPress 関数ファイルに追加すると、次のように変わります。
カスタムフィールドの検証
ユーザーがすべてのフィールドを埋めるために検証をすることが重要です。 この機能のために woocommerce_register_post アクションを使用することができます。
以下は、検証例です。 (参考までに、検証コードを入れなくても、フィールドを満たさないと、エラーメッセージが表示されるようです。このコードを使用する前にテストしてみてください。)
/** * Validate the extra register fields. * 추가 등록 필드 유효성 검사 * * @param string $username Current username 현재 ユーザー명. * @param string $email Current email 현재 이메일. * @param object $validation_errors WP_Error object. * * @return void */ function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) { if ( isset( $_POST['billing_first_name'] ) && empty( $_POST['billing_first_name'] ) ) { $validation_errors->add( 'billing_first_name_error', __( '<strong>Error</strong>: First name is required!', 'woocommerce' ) ); } if ( isset( $_POST['billing_last_name'] ) && empty( $_POST['billing_last_name'] ) ) { $validation_errors->add( 'billing_last_name_error', __( '<strong>Error</strong>: Last name is required!.', 'woocommerce' ) ); } if ( isset( $_POST['billing_phone'] ) && empty( $_POST['billing_phone'] ) ) { $validation_errors->add( 'billing_phone_error', __( '<strong>Error</strong>: Phone is required!.', 'woocommerce' ) ); } } add_action( 'woocommerce_register_post', 'wooc_validate_extra_register_fields', 10, 3 );
カスタムフィールドを保存する
もう最後にカスタムフィールドをデータベース(DB)に保存する必要があります。
ユーザープロファイルにカスタムフィールドを保存する必要があり、この機能は、 woocommerce_created_customer アクションを使用するようにします。
/** * Save the extra register fields. * 추가 등록 필드 저장하기 * * @param int $customer_id Current customer ID 현재 고객 ID. * * @return void */ function wooc_save_extra_register_fields( $customer_id ) { if ( isset( $_POST['billing_first_name'] ) ) { // WordPress default first name field WordPress 기본 ユーザー '이름' 필드. update_user_meta( $customer_id, 'first_name', sanitize_text_field( $_POST['billing_first_name'] ) ); // WooCommerce billing first name WooCommerce 청구지 ユーザー '이름'. update_user_meta( $customer_id, 'billing_first_name', sanitize_text_field( $_POST['billing_first_name'] ) ); } if ( isset( $_POST['billing_last_name'] ) ) { // WordPress default last name field WordPress 기본 ユーザー '성' 필드. update_user_meta( $customer_id, 'last_name', sanitize_text_field( $_POST['billing_last_name'] ) ); // WooCommerce billing last name WooCommerce 청구지 ユーザー '성'. update_user_meta( $customer_id, 'billing_last_name', sanitize_text_field( $_POST['billing_last_name'] ) ); } if ( isset( $_POST['billing_phone'] ) ) { // WooCommerce billing phone WooCommerce 청구지 전화번호 update_user_meta( $customer_id, 'billing_phone', sanitize_text_field( $_POST['billing_phone'] ) ); } } add_action( 'woocommerce_created_customer', 'wooc_save_extra_register_fields' );
これで、すべてのフィールドが正常に保存され、希望通りに正しく動作します。
ちなみにWP-Membersを有効にした場合、予想されるとして機能していない可能性がありますので、WP-Membersプラグインを無効にするようにします。 メンバーシップのプラグインを使用する他の メンバーシップのプラグインや WooCommerce 専用メンバーシップのプラグイン(例えば、 WooCommerceメンバーシップ)の使用を検討してください。
このcssはどこコピーして貼り付けると、なるんです?
/ **
* Add new register fields for WooCommerce registration。
* WooCommerce 登録フォームに新しいフィールドを追加
*
* @return string Register fields HTML。
*/
function wooc_extra_register_fields(){
?>
*
*
*
<?php
}
add_action(「woocommerce_register_form_start '、' wooc_extra_register_fields ');
こんにちは?
コードは、テーマの関数ファイルに追加します。
https://www.thewordcracker.com/basic/how-to-add-custom-codes-to-wordpress/
参考までに、上記の文は、作成されたか、少し長くなりましたね。 最新 WooCommerce와 WordPressで正常に動作しない可能性もあります。