在您的问题中,您是说验证规则不起作用,我猜它是以错误的方式编写的。您可以使用正则表达式工具在线测试它,例如Regex101 或其他人。
要更笼统地回答这个主题,可以通过以下方式安全地更改验证规则:
将class-wc-validation.php 复制到your_theme_path/woocommerce/includes/class-wc-validation.php 中的主题目录并自定义验证规则。
那么你应该为checkout.js中提交的电话制定一个验证规则,否则你的字段总是会有绿色边框,尽管它是无效的。
所以我的解决方案是将自定义正则表达式验证器添加到 checkout.js 关于第 192 行:
if ( $parent.is( '.validate-phone' ) ) {
if ( $this.val() ) {
var pattern = new RegExp(/^([0-9\s\/\+\-\#\_\(\)]*)$/);
if ( ! pattern.test( $this.val() ) ) {
$parent.removeClass( 'woocommerce-validated' ).addClass( 'woocommerce-invalid woocommerce-invalid-phone' );
validated = false;
}
}
}
并包含您自定义的 .js 文件(在 functions.php 中)
add_action( 'wp_enqueue_scripts', 'my_checkoutjs_enqueue_scripts', 100 );
function gv_checkoutjs_enqueue_scripts() {
if ( is_checkout() ) {
wp_deregister_script( 'wc-checkout' );
wp_enqueue_script( 'wc-checkout', get_template_directory_uri() . '/js/modified_checkout.js', array( 'jquery', 'woocommerce', 'wc-country-select', 'wc-address-i18n' ) );
}}
希望这会有所帮助!