W swoim pytaniu mówisz, że zasada walidacji nie działa i myślę, że została napisana w niewłaściwy sposób. Możesz przetestować go w trybie online za pomocą narzędzi regexp, np. Regex101 lub innych.
Aby odpowiedzieć bardziej ogólnie na ten temat, zmieniając zasady walidacji bezpiecznie można zrobić w ten sposób:
zrobić kopię class-wc-validation.php
do katalogu tematycznego w your_theme_path/woocommerce/includes/class-wc-validation.php
i uczynić dostosowanie do reguł walidacji.
Następnie należy wprowadzić regułę sprawdzania poprawności dla telefonu złożonego w numerze checkout.js
. W przeciwnym razie pole będzie zawsze zielone, mimo że jest nieprawidłowe.
Więc moje rozwiązanie było dodanie zwyczaj regularnego Walidator wyrażenie do checkout.js
o linii 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;
}
}
}
oraz swój dostosować.Plik js (w 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'));
}}
Mam nadzieję, że to pomoże!