it-swarm.com.de

Wie ordne ich Rechnungsfelder in der WooCommerce Checkout-Vorlage neu an?

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:
screenshot

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?

15
torinagrippa

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; ?>
5
torinagrippa

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;

}
29
Roy Milder

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
zu
yourtheme/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.

2
brasofilo