Ich erstelle ein Checkout-Formular im Madlib-Stil mit WooThemesAnpassen von Checkout-Feldern mit Aktionen und Filtern.
Mit diesem Aufruf werden die Rechnungsfelder in der Checkout-Vorlage form-billing.php
angezeigt:
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
<?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
<?php endforeach; ?>
Wie kann die Reihenfolge der Felder geändert werden?
Die aktuelle (Standard-) Feldreihenfolge lautet:
Vorname
Nachname
Firma (für mich versteckt)
Stadt
Postleitzahl
Land
Zustand
Email
Telefon
Standardreihenfolge:
Ich möchte, dass die Felder für Amerikaner (wo ich wohne) in einer natürlicheren Reihenfolge sind, also:
Vorname
Nachname
Firma (für mich versteckt)
Stadt
Zustand
Postleitzahl
Land
Email
Telefon
Wie kann ich das am besten machen?
Vielen Dank an Dbranes fü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; ?>
Dasselbe kann durch functions.php
in Ihrem (untergeordneten) Thema geschehen:
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;
}
Sie können eine Kopie in Ihr Design einfügen und die Vorlage bearbeiten, die das Checkout-Formular darstellt.
Angepasst aus der Plugin-Dokumentation :
Beispiel
Um die Admin-Bestellbenachrichtigung zu überschreiben, kopieren Sie:woocommerce/templates/checkout/form-checkout.php
zuyourtheme/woocommerce/checkout/form-checkout.php
[update]
In dieser Datei befindet sich unmittelbar vor dem Drucken der Felder der folgende Aktionshook: do_action('woocommerce_before_checkout_billing_form', $checkout);
.
Es geht also nur darum, diese Aktion in den functions.php
des Themas oder in ein benutzerdefiniertes Plugin einzufügen und die Felder neu anzuordnen, wie das OP in seiner Antwort zeigt. Keine Notwendigkeit, die Vorlage zu überschreiben, oder ja, wenn weitere Anpassungen erforderlich sind.