【问题标题】:Woocommerce confirm password not showingWoocommerce 确认密码未显示
【发布时间】:2018-03-19 14:37:46
【问题描述】:

我已将以下代码添加到我的 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' );
        }
    }
}

这是网站结帐页面的链接。您必须将产品添加到购物车,然后返回结帐页面。一旦产品进入购物车并且您在结帐页面上,您会注意到密码字段已突出显示为红色并且没有密码确认字段。这已破了。

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

但是,如果您转到以下网址并执行相同的操作,则密码确认就在那里,并且一切正常。就我而言,所有的代码都是一样的,数据库也是一样的。

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

如何获得密码确认以在http://staging.vawk.ca/checkout/上工作

【问题讨论】:

    标签: php wordpress forms woocommerce


    【解决方案1】:

    请尝试以下修改后的代码,在 WordPress 4.7.3+ 和 WooCommerce 3.0.3+ 上工作。

    逻辑挖掘机

    **
     * 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 );
    

    【讨论】:

    • 这行得通!密码输入字段在页面加载时仍显示为红色或无效,但这是我可以弄清楚的。
    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 2021-04-04
    • 1970-01-01
    • 2020-02-14
    • 2015-04-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多