Wie ordne ich Abrechnungsfelder in der WooCommerce Checkout-Vorlage neu an?
3 Antworten
- Stimmen
-
- 2013-01-06
Danke an Dbranesfür die Antwort.
Ersetzen:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?> <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?> <?php endforeach; ?>
Mit:
<?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; ?>
-
Dieser Code stammt auseinerinternen Woocommerce-Funktion.Die Verwendung des Codes derersten Antwort [eines Filters] wäre vielbesser.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
-
Beimirfunktioniertesnicht.Derbeste Wegist,die "Priorität"jedes Feldes zu verwenden,ungefähr so: $fields ['billing'] ['billing_country'] ['priority']=10; $fields ['billing'] ['billing_phone'] ['priority']=20; Vielleicht liegtes anneuen Versionen von Woocommerce,aberich weißesnicht.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
Dasselbe kann über
functions.php
in Ihrem (untergeordneten) Themaerfolgen: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; }
-
Beste Antwort,da diebewährte Methode wp/wc zum Filtern der Daten verwendet wird,bevor sie die Vorlageerreichen,sodass keine Vorlagendatei überschrieben werdenmuss.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
-
hatbei mirnichtfunktioniertdid not work for me
- 0
- 2017-07-12
- Yahya Hussein
-
Diesfunktioniert,funktioniert abernichtmehr.Ich denke,das liegt daran,dass die Kasse JS die Reihenfolge dynamisch ändert.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
-
Die derzeitige Vorgehensweisebesteht darin,eine Priorität zuzuweisen: `$fields ['billing'] ['billing_country'] ['priority']=10;` `$fields ['billing'] ['billing_phone'] ['priority']=20;` Siehe hier [https://wordpress.org/support/topic/change-order-of-billing-fields-on-checkout-page/lightboxes(https://wordpress.org/support/topic/change-order-of-abrechnungsfelder-an-kasse-seite/)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
Sie könneneine Kopiein Ihr Themaerstellen und die Vorlagebearbeiten,mit der das Checkout-Formulargerendert wird.
Angepasst an die Plugin-Dokumentation :
Beispiel
Kopieren Sie:woocommerce/templates/checkout/form-checkout.php
,um die Benachrichtigung über die Administratorbestellung zu überschreiben zu
yourtheme/woocommerce/checkout/form-checkout.php
[Update]
In dieser Dateigibt es kurz vor dem Drucken der Felder diesen Aktions-Hook:
do_action('woocommerce_before_checkout_billing_form', $checkout);
.Esgeht alsonur darum,diese Aktionin die
functions.php
des Themas oderin einbenutzerdefiniertes Plugineinzufügen und die Felderneu zu ordnen,wie das OPin seiner Antwort zeigt.Keine Notwendigkeit,die Vorlage zu überschreiben,oderja,wenn weitere Anpassungenerforderlich sind.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.-
Mit der von Ihnenerwähnten Vorlage können Sienur " Php do_action" ("woocommerce_checkout_billing") verschieben.?> `rund um den Großhandel.The template you mentioned only allows you to move `` around wholesale.
- 0
- 2013-01-06
- m-torin
-
Ich hätteerwähnen sollen,dassich dietatsächlichen Plugin-Dateiennicht überprüft habe.Antwort aktualisiert underweitert dank Ihrer Antwort.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
Icherstelleein Checkout-Formularim Madlib-Stilmit WooThemes Anpassen von Checkout-Feldernmithilfe von Aktionen und Filtern .
Abrechnungsfelderin der Checkout-Vorlage
form-billing.php
werdenmit diesem Aufruf angezeigt:Wie kann die Reihenfolgegeändert werden,in der die Felder angezeigt werden?
Die aktuelle (Standard-) Feldreihenfolge lautet:
Vorname
Nachname
Firma (fürmich versteckt)
Stadt
Stadt
Postleitzahl
Land
Zustand
E-Mail
Telefon
Standardreihenfolge:
Ichmöchte,dass die Felderfür Amerikaner (woich wohne)in einernatürlicheren Reihenfolge sind,also:
Vorname
Nachname
Firma (fürmich versteckt)
Stadt
Stadt
Zustand
Postleitzahl
Land
E-Mail
Telefon
Wie kannich das ambestenmachen?