WOOCommerce登録ページの確認パスワードフィールドを追加する方法? -- wordpress フィールド 関連 問題

How to Add Confirm Password Field In WooCommerce Registration Page?












0
vote

問題

日本語

コードを追加しようとしています

<事前> <コード> <?php // Add the code below to your theme's functions.php file to add a confirm password field on the register form under My Accounts. add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) { global $woocommerce; extract( $_POST ); if ( strcmp( $password, $password2 ) !== 0 ) { return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) ); } return $reg_errors; } add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() { ?> <p class="form-row form-row-wide"> <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" /> </p> <?php } ?>

on function.phpではなく... woocommerce / myaccout / form-login.php

のパスワードの仕上げフィールドを追加する方法を指示する
英語

Am trying to add the code

<?php // Add the code below to your theme's functions.php file to add a confirm password field on the register form under My Accounts. add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {     global $woocommerce;     extract( $_POST );     if ( strcmp( $password, $password2 ) !== 0 ) {         return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) );     }     return $reg_errors; } add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() {     ?>     <p class="form-row form-row-wide">         <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label>         <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" />     </p>     <?php } ?> 

on function.php but not working... Any on tell how to add the password conformation field on woocommerce/myaccout/form-login.php

</div
  

回答リスト

6
 
vote
vote
ベストアンサー
 

までのフォローとして John's Answer :

woocommerce_checkout_init は、 account2 フィールドのみを返すマジック・ゲッターを導入したため、WooCommerce 3.xでは機能しなくなりました。 /コード>。これが機能かバグであるかどうかわかりません。

WOOCommerce 3.xの場合、それをする正しい方法はフィルタを使用することです。検証は同じままです。

<事前> <コード> // Add a second password field to the checkout page in WC 3.x. add_filter( 'woocommerce_checkout_fields', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout_fields ) { if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) { $checkout_fields['account']['account_password2'] = array( 'type' => 'password', 'label' => __( 'Confirm password', 'woocommerce' ), 'required' => true, 'placeholder' => _x( 'Confirm Password', 'placeholder', 'woocommerce' ) ); } return $checkout_fields; } // Check the password and confirm password fields match before allow checkout to proceed. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) { $checkout = WC()->checkout; if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) { if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) { wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' ); } } }
 

As a follow up to John's answer:

Hooking to woocommerce_checkout_init no longer works in Woocommerce 3.x, as they introduced a magic getter that will only return the original $checkout->checkout_fields['account'] field, without account2. I don't know if this is a feature or a bug.

For Woocommerce 3.x, the correct way to do it is to use a filter. The validation stays the same.

// Add a second password field to the checkout page in WC 3.x. add_filter( 'woocommerce_checkout_fields', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout_fields ) {     if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {         $checkout_fields['account']['account_password2'] = array(                 'type'              => 'password',                 'label'             => __( 'Confirm password', 'woocommerce' ),                 'required'          => true,                 'placeholder'       => _x( 'Confirm Password', 'placeholder', 'woocommerce' )         );     }      return $checkout_fields; }  // Check the password and confirm password fields match before allow checkout to proceed. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) {     $checkout = WC()->checkout;     if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {         if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) {             wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' );         }     } } 
</div
 
 
2
 
vote

あなたの関数の中であなたはこれを行うことができます:

<事前> <コード> // Add a second password field to the checkout page. add_action( 'woocommerce_checkout_init', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout ) { if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) { $checkout->checkout_fields['account']['account_password2'] = array( 'type' => 'password', 'label' => __( 'Confirm password', 'woocommerce' ), 'required' => true, 'placeholder' => _x( 'Confirm Password', 'placeholder', 'woocommerce' ) ); } } // Check the password and confirm password fields match before allow checkout to proceed. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) { $checkout = WC()->checkout; if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) { if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) { wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' ); } } }
 

inside your function.php you can do this :

// Add a second password field to the checkout page. add_action( 'woocommerce_checkout_init', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout ) {     if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {         $checkout->checkout_fields['account']['account_password2'] = array(             'type'              => 'password',             'label'             => __( 'Confirm password', 'woocommerce' ),             'required'          => true,             'placeholder'       => _x( 'Confirm Password', 'placeholder', 'woocommerce' )         );     } } // Check the password and confirm password fields match before allow checkout to proceed. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) {     $checkout = WC()->checkout;     if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {         if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) {             wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' );         }     } } 
</div
 
 
1
 
vote
<事前> <コード> <?php // Add the code below to your theme's functions.php file to add a confirm password field on the register form under My Accounts. add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) { global $woocommerce; extract( $_POST ); if ( strcmp( $password, $password2 ) !== 0 ) { return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) ); } return $reg_errors; } add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() { ?> <p class="form-row form-row-wide"> <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" /> </p> <?php } ?>

ソース:このコードを見つけることができますここで私は私のウェブサイト上でテストすることができます

 
    <?php // Add the code below to your theme's functions.php file to add a confirm password field on the register form under My Accounts. add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {     global $woocommerce;     extract( $_POST );     if ( strcmp( $password, $password2 ) !== 0 ) {         return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) );     }     return $reg_errors; } add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() {     ?>     <p class="form-row form-row-wide">         <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label>         <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" />     </p>     <?php } ?> 

source : you can find this code here i test before on my website

</div
 
 
0
 
vote

ここではチェックアウトのための2つの方法と私のアカウントの2番目の方法は、両方のコード

を言及しました <事前> <コード> add_action( 'woocommerce_checkout_init', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout ) { if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) { $checkout->checkout_fields['account']['account_password2'] = array( 'type' => 'password', 'label' => __( 'Confirm password', 'woocommerce' ), 'required' => true, 'placeholder' => _x( 'Confirm Password', 'placeholder', 'woocommerce' ) ); } } // Check the password and confirm password fields match before allow checkout to proceed. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) { $checkout = WC()->checkout; if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) { if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) { wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' ); } } } add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) { global $woocommerce; extract( $_POST ); if ( strcmp( $password, $password2 ) !== 0 ) { return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) ); } return $reg_errors; }

マイアカウントページ

# <事前> <コード> add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() { ?> <p class="form-row form-row-wide"> <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" /> </p> <?php }
 

here Two Method one for Checkout and second for My Account below i mentioned both code

add_action( 'woocommerce_checkout_init', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout ) {     if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {         $checkout->checkout_fields['account']['account_password2'] = array(             'type'      => 'password',             'label'     => __( 'Confirm password', 'woocommerce' ),             'required'      => true,             'placeholder'   => _x( 'Confirm Password', 'placeholder', 'woocommerce' )         );     } } // Check the password and confirm password fields match before allow checkout to proceed. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) {     $checkout = WC()->checkout;     if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {         if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) {             wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' );         }     } }  add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {     global $woocommerce;     extract( $_POST );     if ( strcmp( $password, $password2 ) !== 0 ) {         return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) );     }     return $reg_errors; } 
#

My Account Page

#
add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() {     ?>     <p class="form-row form-row-wide">         <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label>         <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" />     </p>     <?php } 
</div
 
 
0
 
vote

それほど努力した後、私のアカウントページに確認パスワードを表示するための私の要求に従って、最後に次のコードを修正しました。関数で次のコードを試してください.php

<事前> <コード> // Add the code below to your theme's functions.php file to add a confirm password field on the register form under My Accounts. add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) { global $woocommerce; extract( $_POST ); if ( strcmp( $password, $password2 ) !== 0 ) { return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) ); } return $reg_errors; } add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() { ?> <div class="form-row form-row-wide addtafterpassword" style=" margin-top: 20px; margin-bottom: 0;"> <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label> <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" /> </div> <?php } ?>
 

After so much effort, finally worked the following code with revised a little bit as per my requirement to display Confirm password in my account page. Please try the following code in functions.php

// Add the code below to your theme's functions.php file to add a confirm password field on the register form under My Accounts. add_filter('woocommerce_registration_errors', 'registration_errors_validation', 10,3); function registration_errors_validation($reg_errors, $sanitized_user_login, $user_email) {     global $woocommerce;     extract( $_POST );     if ( strcmp( $password, $password2 ) !== 0 ) {         return new WP_Error( 'registration-error', __( 'Passwords do not match.', 'woocommerce' ) );     }     return $reg_errors; } add_action( 'woocommerce_register_form', 'wc_register_form_password_repeat' ); function wc_register_form_password_repeat() {     ?>     <div class="form-row form-row-wide  addtafterpassword" style=" margin-top: 20px;    margin-bottom: 0;">         <label for="reg_password2"><?php _e( 'Password Repeat', 'woocommerce' ); ?> <span class="required">*</span></label>         <input type="password" class="input-text" name="password2" id="reg_password2" value="<?php if ( ! empty( $_POST['password2'] ) ) echo esc_attr( $_POST['password2'] ); ?>" />     </div>     <?php } ?> 
</div
 
 

関連する質問

0  WP-eCommerceはLinkPoint Gatewayで動作しますか?  ( Does wp ecommerce works with linkpoint gateway ) 
OSCommerceを使ったオンラインストアがあり、実際にはうまく機能します。しかし、WordPress Fortunatellyにあるストアブログとの統合はありません。 今すぐWP-eコマースと呼ばれるWordPress用の新しい支払いプラグインを見ました...

8  WordPressの特定のタグ/カテゴリの投稿を選択する方法  ( How to select posts with specific tags categories in wordpress ) 
これは、 WordPress で実装されているように、 mysql に関する非常に具体的な質問です。 特定の「タグ」を持つ投稿を示すプラグインを開発し、特定の 'カテゴリ'(両方とも複数)に属します。 / P> カテゴリとタグの仕方が保存されているため、不可能...

0  「何かが何かの場合 - >印刷する」「何もない」「何も印刷しない」を書く方法  ( How to write if something print else if nothing print nothing ) 
XMLフィードを介して実行されるWordPressのPHP機能を書きます。したがって、私たちはフィードを除いてから、当社のウェブサイトにそれらを配置するノードに基づいています。私が助ける必要があるのは、私たちが必要なのは、私が必要なものが必要なのは、BBBへ...

0  WordPressオプション  ( Wordpress options ) 
今日私は尋問しています.P とにかく...今、私は無料のWordPressテーマを開発しています。問題はできるだけ柔軟にしたいということですので、いくつかのCSSの色、幅などを設定するためのテーマオプションを使用します。私の質問はこれです: このテーマの1つ...

0  サブフィールドの状態でしばらくする方法  ( How to do a while with condition of a subfield ) 
私はしばらくしようとしていて、3列の李の内容を表示しようとしています。 これまでのところとても良いですが、文字A、またはB、またはCで始まるApearの言葉だけを調整したいです。 問題は、 li を作成するための条件を作成することだけが管理されているため、コー...

3  Wordpress MediaWiki Cookieの統合  ( Wordpress mediawiki cookie integration ) 
私は私のWordPressのインストールとMediaWiki 同じログイン情報を共有する。残念ながら、ユーザーは両方とも別々にログインする必要がありますが、少なくとも同じ資格情報を使用します。 私がやりたいことは、WordPressブログでのログインが成功す...

0  つまり互換性の問題W / Wordpress  ( Ie compatibility issues w wordpress ) 
通常、WordPressテンプレートはあなたにとってクロスブラウザの互換性の世話をしますが、基本的に私自身のものを構築していて、私はしばらくの問題に対処していませんでした。 #social #menu を除いて、すべてがうまく機能しているようです。これらの...

0  タイトル長に基づくWordPress POSTのX額を表示する  ( Display x amount of wordpress posts based on title length ) 
私は私が開発したテーマの上部にナビゲーションドロップダウンを持っています。基本的にナビゲーションには2列があり、1つは検索されたポストタイトル(これは簡単です)を表示します。 しかし、ポストタイトルと特定の投稿へのリンクを表示したいが、スペースは約40文字に制...

3  ワードプレスからWordPressの投稿にアクセスして表示します  ( Access and display wordpress posts from out of wordpress ) 
私は商業部位(PHP)を持っており、サブディレクトリにWordPressブログを持っています。 WordPressの外にあるホームページで最新の投稿を表示する必要があります:/ サイト: http://www.blabla.com ブログ: http...

1  3ページのレイアウトでWordPressでカスタムコンポーネントを作成する  ( Creating a custom component in wordpress with 3 page layout ) 
私は私のWordPressサイトのホームページにコンポーネントを含めたい https://imgur.com/a/jviu7 私のユーザーがイメージテキストをアップロードできるようにするためにCMS部品を作成する方法を教えてください。私は正しい用語を使っ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有