Comment réorganiser les champs de facturation dans le modèle WooCommerce Checkout?
3 réponses
- votes
-
- 2013-01-06
Merci à Dbranespour la réponse.
Remplacer:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?> <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?> <?php endforeach; ?>
Avec:
<?php // order the keys for your custom ordering or delete the ones you don't need $mybillingfields=array( "billing_first_name", "billing_last_name", "billing_company", "billing_address_1", "billing_address_2", "billing_city", "billing_state", "billing_postcode", "billing_country", "billing_email", "billing_phone", ); foreach ($mybillingfields as $key) : ?> <?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?> <?php endforeach; ?>
Thanks to Dbranes for the answer.
Replace:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?> <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?> <?php endforeach; ?>
With:
<?php // order the keys for your custom ordering or delete the ones you don't need $mybillingfields=array( "billing_first_name", "billing_last_name", "billing_company", "billing_address_1", "billing_address_2", "billing_city", "billing_state", "billing_postcode", "billing_country", "billing_email", "billing_phone", ); foreach ($mybillingfields as $key) : ?> <?php woocommerce_form_field( $key, $checkout->checkout_fields['billing'][$key], $checkout->get_value( $key ) ); ?> <?php endforeach; ?>
-
ce codeprovient d'unefonctioninterne de Woocommerce.utiliser le code de lapremière réponse [unfiltre] seraitbien mieux.this code is from an internal Woocommerce function. using the first answer's code [a filter] would be much better.
- 2
- 2015-11-05
- Adeerlike
-
Pourmoi,çane marchepas.Lameilleurefaçonest d'utiliser la "priorité" de chaque champ,quelque chose comme ceci: $fields ['billing'] ['billing_country'] ['priority']=10; $fields ['billing'] ['billing_phone'] ['priority']=20; C'estpeut-être à cause desnouvelles versions de Woocommerce,maisje ne saispas.For me it doesn't work. The best way is to use the "priority" of each field, something like this: $fields['billing']['billing_country']['priority'] = 10; $fields['billing']['billing_phone']['priority'] = 20; Maybe it is because of new versions of Woocommerce, but I don't know.
- 0
- 2018-04-16
- ruhanbidart
-
- 2013-12-23
Lamême chosepeut êtrefaite via
functions.php
dans votrethème (enfant):add_filter("woocommerce_checkout_fields", "order_fields"); function order_fields($fields) { $order = array( "billing_first_name", "billing_last_name", "billing_company", "billing_address_1", "billing_address_2", "billing_postcode", "billing_country", "billing_email", "billing_phone" ); foreach($order as $field) { $ordered_fields[$field] = $fields["billing"][$field]; } $fields["billing"] = $ordered_fields; return $fields; }
Same can be done through
functions.php
in your (child) theme:add_filter("woocommerce_checkout_fields", "order_fields"); function order_fields($fields) { $order = array( "billing_first_name", "billing_last_name", "billing_company", "billing_address_1", "billing_address_2", "billing_postcode", "billing_country", "billing_email", "billing_phone" ); foreach($order as $field) { $ordered_fields[$field] = $fields["billing"][$field]; } $fields["billing"] = $ordered_fields; return $fields; }
-
Meilleure réponse caril utilise lesmeilleurespratiques wp/wcpourfiltrer les données avant qu'ellesn'atteignent lemodèle afin qu'aucunfichier demodèlene doive être remplacé.Best answer as it uses the wp/wc best practice with filtering the data before it reaches the template so no template file has to be overridden.
- 0
- 2016-08-22
- Larzan
-
N'apastravaillépourmoidid not work for me
- 0
- 2017-07-12
- Yahya Hussein
-
Celafonctionnemaisne fonctionneplus.Jepense que c'estparce que la commande JSmodifie dynamiquement la commande.This use to work but no longer does. I think it's because the checkout JS dynamically alters the order.
- 0
- 2017-07-28
- codekipple
-
Lafaçon actuelle de lefaireest d'attribuer unepriorité: - `$fields ['billing'] ['billing_country'] ['priority']=10;` `$fields ['billing'] ['billing_phone'] ['priority']=20;` Voirici [https://wordpress.org/support/topic/change-order-of-billing-fields-on-checkout-page/(https://wordpress.org/support/topic/change-order-of-billing-fields-on-checkout-page/)The current way to do it is to assign a priority:- `$fields['billing']['billing_country']['priority'] = 10;` `$fields['billing']['billing_phone']['priority'] = 20;` See here [https://wordpress.org/support/topic/change-order-of-billing-fields-on-checkout-page/](https://wordpress.org/support/topic/change-order-of-billing-fields-on-checkout-page/)
- 4
- 2017-07-28
- codekipple
-
- 2013-01-05
Vouspouvezfaire une copie dans votrethèmeet modifier lemodèle qui rend leformulaire depaiement.
Adapté de la documentation duplugin :
Exemple
Pour remplacer lanotification de commande de l'administrateur,copiez:woocommerce/templates/checkout/form-checkout.php
à
yourtheme/woocommerce/checkout/form-checkout.php
< [update
Dans cefichier,juste avant l'impression des champs,il y a ce hook d'action:
do_action('woocommerce_before_checkout_billing_form', $checkout);
.Il suffit donc d'ajouter cette action dans le
functions.php
duthème ou dans unpluginpersonnaliséet de réorganiser les champs comme lemontre l'OP dans sa réponse.Pasbesoin de remplacer lemodèle,ou oui si d'autrespersonnalisations sontnécessaires.You can make a copy into your theme and edit the template that renders the checkout form.
Adapted from the plugin documentation:
Example
To overide the admin order notification, copy:woocommerce/templates/checkout/form-checkout.php
to
yourtheme/woocommerce/checkout/form-checkout.php
[update]
In this file, just before the fields being printed, there's this action hook:
do_action('woocommerce_before_checkout_billing_form', $checkout);
.So, it's just a matter of adding this action in the theme's
functions.php
or in a custom plugin and reordering the fields as the OP shows in his Answer. No need of overriding the template, or yes if further customizations are needed.-
Lemodèle que vous avezmentionné vouspermet uniquement de déplacer ` Php do_action ('woocommerce_checkout_billing');?> `autour de la venteen gros.The template you mentioned only allows you to move `` around wholesale.
- 0
- 2013-01-06
- m-torin
-
J'aurais dûmentionner queje n'aipas vérifié lesfichiers duplugin.Réponsemise àjouret élargiegrâce à votre réponse.I should've mention that I didn't checked the actual plugin files. Answer updated and expanded thanks to your answer.
- 0
- 2013-01-06
- brasofilo
Je crée unformulaire depaiement de stylemadliben utilisant Personnalisation des champs depaiement à l'aide d'actionset defiltres .
Les champs defacturation dumodèle depaiement
form-billing.php
sont affichés avec cet appel:Commentmodifier l'ordre d'affichage des champs?
L'ordre actuel (par défaut) des champsest:
prénom
nom
entreprise (cachéepourmoi)
ville/ville
codepostal
pays
état
email
téléphone
Ordrepar défaut:
Je veux que les champs soient dans un ordreplusnaturelpour les Américains (là oùje vis),donc:
prénom
nom
entreprise (cachéepourmoi)
ville/ville
état
codepostal
pays
email
téléphone
Commentpuis-jefaire cela aumieux?