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

时间:2017-04-26 09:35:33

标签: php wordpress authentication woocommerce hook-woocommerce

插件名称: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 个答案:

答案 0 :(得分:1)

  

如果仔细观察   wp-content/plugins/woocommerce/includes/class-wc-form-handler.php at   第878行有一个过滤器   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文件中。
代码经过测试并正常运行。 在WooCommerce 2.6.X中

希望这有帮助!