在你的问题中,你说验证规则不起作用,我猜测它可能写错了。你可以使用正则表达式工具在线测试,例如
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' ) );
}}
希望这能帮到你!