繁体   English   中英

如何在 WooCommerce 的注册页面上创建密码并确认密码

[英]How to create a password and confirm password on register page on WooCommerce

我正在学习WooCommerce开发。 我在注册页面上,输入 email 并单击按钮,我正在获取 email 上的密码。

现在我的问题是,我不想要 email 作为密码。 我已经使用密码创建了注册页面并确认了密码字段。

我希望可以在那里输入自己的密码,而不是获取 email 这个密码。

function woocom_extra_register_fields() {
    ?>
    <p class="form-row form-row-wide mb-4">
        <label for="reg_billing_password" class="text-uppercase"><?php _e('Password', 'woocommerce' ); ?><span class="required">*</span></label><input type="password" class="input-text form-control" name="billing_password" id="reg_billing_password" value="<?php if ( ! empty( $_POST['billing_password'] ) ) esc_attr_e( $_POST['billing_password'] ); ?>" placeholder="Password" />
    </p>
    
    <p class="form-row form-row-wide">
        <label for="reg_billing_confirmpassword" class="text-uppercase"><?php _e('Confirm Password', 'woocommerce'); ?><span class="required">*</span></label><input type="password" class="input-text form-control" name="billing_confirmpassword" id="reg_billing_confirmpassword" value="<?php if ( ! empty( $_POST['billing_confirmpassword'] ) ) esc_attr_e( $_POST['billing_confirmpassword'] ); ?>" placeholder="Confirm Password"/>
    </p>
    <?php
}
    
add_action('woocommerce_register_form', 'woocom_extra_register_fields');
    
function woocom_validate_extra_register_fields( $username, $email, $validation_errors )
{
    if (isset($_POST['billing_password']) && empty($_POST['billing_password']) ) 
    {
        $validation_errors->add('billing_password_error', __('Password is required!', 'woocommerce'));
    }
    
    if (isset($_POST['billing_confirmpassword']) && empty($_POST['billing_confirmpassword']) ) 
    {
        $validation_errors->add('billing_confirmpassword_error', __('Confirm password is required!', 'woocommerce'));
    }
    return $validation_errors;
}
    
add_action('woocommerce_register_post', 'woocom_validate_extra_register_fields', 10, 3);
    
function woocom_save_extra_register_fields($customer_id) {
    
    if (isset($_POST['billing_password'])) 
    {
        update_user_meta($customer_id, 'billing_password', sanitize_text_field($_POST['billing_password']));
    }
    
    if (isset($_POST['billing_confirmpassword'])) 
    {
        update_user_meta($customer_id, 'billing_confirmpassword', sanitize_text_field($_POST['billing_confirmpassword']));
    }
}
    
add_action('woocommerce_created_customer', 'woocom_save_extra_register_fields');

你能帮我解决这个问题吗?

要在创建新帐户时禁用自动生成密码,您必须从 WooCommerce 管理页面禁用创建帐户时自动生成帐户密码选项。

为此,go 到WooCommerce >设置>帐户和隐私

禁用帐户密码的自动生成

您可以在此处找到更多信息: WooCommerce - 帐户和隐私设置

暂无
暂无

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

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