简体   繁体   English

Woocommerce确认密码不显示

[英]Woocommerce confirm password not showing

I have added the following code to my functions.php file to allow password confirmation on the checkout page. 我已将以下代码添加到我的functions.php文件中,以允许在结帐页面上确认密码。

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' );
        }
    }
}

Here is the link to the site checkout page. 这是网站结帐页面的链接。 You will have to add a product to the cart and then go back to the checkout page. 您将必须将产品添加到购物车,然后返回到结帐页面。 Once a product is in the cart and you are on the Checkout page you will notice that the password field has been highlighted red and there is no password confirmation field. 将产品放入购物车,然后进入“结帐”页面,您会注意到密码字段以红色突出显示,并且没有密码确认字段。 This is broken. 这已破了。

http://staging.vawk.ca/checkout/ http://staging.vawk.ca/checkout/

However if you go to the following url and do the same thing the password confirmation is there and everything works correctly. 但是,如果您转到以下URL并执行相同的操作,则密码确认在那里,并且一切正常。 As far as I am concerned all of the code is the same and the database is the same. 就我而言,所有代码都是相同的,而数据库是相同的。

http://jolangreen.com/other/clients/vawk/checkout/ http://jolangreen.com/other/clients/vawk/checkout/

How can I get the password confirmation to work on http://staging.vawk.ca/checkout/ 如何在http://staging.vawk.ca/checkout/上获取密码确认

Please try the modified code below, working on WordPress 4.7.3+ with WooCommerce 3.0.3+. 请尝试以下修改后的代码,在WooCommerce 3.0.3+上的WordPress 4.7.3+上运行。

logicdigger 逻辑挖掘者

**
 * Add a confirm password field to the checkout registration form.
 */
function o_woocommerce_confirm_password_checkout( $checkout ) {
    if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) {

        $fields = $checkout->get_checkout_fields();

        $fields['account']['account_confirm_password'] = array(
            'type'              => 'password',
            'label'             => __( 'Confirm password', 'woocommerce' ),
            'required'          => true,
            'placeholder'       => _x( 'Confirm Password', 'placeholder', 'woocommerce' )
        );

        $checkout->__set( 'checkout_fields', $fields );
    }
}
add_action( 'woocommerce_checkout_init', 'o_woocommerce_confirm_password_checkout', 10, 1 );

/**
 * Validate that the two password fields match.
 */
function o_woocommerce_confirm_password_validation( $posted ) {
    $checkout = WC()->checkout;
    if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) {
        if ( strcmp( $posted['account_password'], $posted['account_confirm_password'] ) !== 0 ) {
            wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' );
        }
    }
}
add_action( 'woocommerce_after_checkout_validation', 'o_woocommerce_confirm_password_validation', 10, 2 );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM