首页 文章

如何在WooCommerce中仅使用电子邮件和密码登录

提问于
浏览
1

插件名称:WooCommerce

插件\ woocommerce \模板\全球\表单的login.php

<label for="username"><?php _e( 'Email', 'woocommerce' ); ?> <span class="required">*</span></label>

它显示电子邮件而不是我想要的用户名或电子邮件

包括\类-WC-形状handler.php

if ( empty( $username ) ) {
    throw new Exception( '<strong>' . __( 'Error:', 'woocommerce' ) . '</strong> ' . __( 'Email is required.', 'woocommerce' ) );
}

它显示正确的电子邮件验证,但它也使用用户名登录

我希望它在结账前只用电子邮件和密码登录

1 回答

  • 1

    如果仔细查看第878行的wp-content / plugins / woocommerce / includes / class-wc-form-handler.php,会有一个过滤器woocommerce_process_login_errors,它接受验证错误,用户名和密码 . 所以你可以通过这个过滤器帮助覆盖它 .

    这是代码:

    // define the woocommerce_process_login_errors callback 
    function filter_woocommerce_process_login_errors($validation_error, $post_username, $post_password)
    {
        //if (strpos($post_username, '@') == FALSE)
        if (!filter_var($post_username, FILTER_VALIDATE_EMAIL)) //<--recommend option
        {
            throw new Exception( '<strong>' . __( 'Error', 'woocommerce' ) . ':</strong> ' . __( 'Please Enter a Valid Email ID.', 'woocommerce' ) );
        }
        return $validation_error;
    }
    
    // add the filter 
    add_filter('woocommerce_process_login_errors', 'filter_woocommerce_process_login_errors', 10, 3);
    

    代码位于活动子主题(或主题)的functions.php文件中 . 或者也可以在任何插件php文件中 .
    Code is tested and works. 在WooCommerce 2.6.X中

    希望这可以帮助!

相关问题