Come riordinare i campi di fatturazione nel modello di pagamento di WooCommerce?
3 risposta
- voti
-
- 2013-01-06
Grazie a Dbranesper la risposta.
Sostituisci:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?> <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?> <?php endforeach; ?>
Con:
<?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; ?>
-
questo codiceproviene da unafunzioneinterna di Woocommerce.sarebbemoltomeglio usareil codice dellaprima risposta [unfiltro].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
-
Perme nonfunziona.Ilmodomigliore è usare la "priorità" di ogni campo,qualcosa delgenere: $fields ['billing'] ['billing_country'] ['priority']=10; $fields ["billing"] ["billing_phone"] ["priority"]=20; Forse è a causa dellenuove versioni di Woocommerce,manon lo so.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
Lo stessopuòesserefattotramite
functions.php
neltuotema (figlio):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; }
-
Lamigliore rispostain quanto utilizza labestpractice wp/wc conilfiltraggio dei datiprima che raggiunganoilmodello,quindinessunfilemodello deveessere sovrascritto.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
-
Non hafunzionatopermedid not work for me
- 0
- 2017-07-12
- Yahya Hussein
-
Questofunzionamanonfunzionapiù.Penso che siaperchéil JS di checkout altera dinamicamente l'ordine.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
-
Ilmodo attualeperfarlo è assegnare unapriorità: - `$fields ['billing'] ['billing_country'] ['priority']=10;` `$ campi ['fatturazione'] ['billing_phone'] ['priorità']=20;` Vedi qui [https://wordpress.org/support/topic/change-order-of-billing-fields-on-checkout-page/escore(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
Puoi creare una copianeltuotemae modificareilmodello che riproduceilmodulo dipagamento.
Adattato dalla documentazione delplug-in :
Esempio
Perignorare lanotifica dell'ordine dell'amministratore,copia:woocommerce/templates/checkout/form-checkout.php
a
yourtheme/woocommerce/checkout/form-checkout.php
<"[update""
In questofile,appenaprima chei campi vengano stampati,c'è questo action hook:
do_action('woocommerce_before_checkout_billing_form', $checkout);
.Quindi,è solo questione di aggiungere questa azionenel
functions.php
deltema oin unpluginpersonalizzatoe riordinarei campi comemostra l'OPnella sua risposta.Non ènecessario sovrascrivereilmodello o sì se sononecessarie ulterioripersonalizzazioni.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.-
Ilmodello che hai citatoti permette solo di spostare ` Php do_action ('woocommerce_checkout_billing');?> `ingiro all'ingrosso.The template you mentioned only allows you to move `` around wholesale.
- 0
- 2013-01-06
- m-torin
-
Avrei dovuto dire chenon ho controllatoi fileeffettivi delplugin.Risposta aggiornatae ampliatagrazie allatua risposta.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
Sto creando unmodulo dipagamentoin stilemadlib utilizzando Personalizzarei campi dipagamento utilizzando azionie filtri .
I campi difatturazionenelmodello di checkout
form-billing.php
vengono visualizzati con questa chiamata:In chemodo èpossibilemodificare l'ordine di visualizzazione dei campi?
L'ordine dei campi corrente (predefinito) è:
nome
cognome
azienda (nascostaperme)
città/città
codicepostale
paese
stato
email
telefono
Ordinepredefinito:
Voglio chei campi sianoin un ordinepiùnaturalepergli americani (dove vivo),quindi:
nome
cognome
azienda (nascostaperme)
città/città
stato
codicepostale
paese
email
telefono
Comepossofarlo almeglio?