Pour le champ de facturation WooCommerce checkout, comment puis-je faire en sorte que ce champ nécessite 9 chiffres et insérer des tirets pour un formatage correct du téléphone? Par exemple, au lieu de taper 3053453212 dans le champ du numéro de téléphone, il affiche: (305-345-3212)
3 Réponses :
Vous pouvez essayer ceci
/** * Require 9 digit number. Format to 000-000-0000 at submission * stackoverflow/54700465 */ add_filter( 'woocommerce_billing_fields', 'wc_filter_phone', 10, 1 ); function wc_filter_phone( $address_fields ) { $address_fields['billing_phone']['min-lenght="9"']; $format_number = preg_replace("/^(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $address_fields); return $format_number; } // End
Pas de chance: (je suis vraiment reconnaissant d'avoir tenté cela
Basé sur le " Formater un numéro de téléphone dans un formulaire en utilisant jquery "code de réponse, voici la façon de formater le téléphone de facturation Woocommerce:
add_action('wp_footer', 'format_checkout_billing_phone'); function format_checkout_billing_phone() { if ( is_checkout() && ! is_wc_endpoint_url() ) : ?> <script type="text/javascript"> jQuery( function($){ $('#billing_phone').on( 'input focusout', function() { var p = $(this).val(); p = p.replace(/[^0-9]/g, ''); p = p.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3"); $(this).val(p); }); }); </script> <?php endif; }
Le code va dans le fichier function.php de votre thème enfant actif (ou thème actif). Testé et fonctionne.
Une autre approche qui a fonctionné pour moi est donnée ici .
$_POST['billing_phone'] = preg_replace("/^(\d{3})(\d{3})(\d{4})$/", "$1-$2-$3", $number);