Woocommerce-Bestellung formatierte Rechnungsadressen-Neuordnung und benutzerdefiniertes Rechnungsfeld

Lesezeit: 3 Minuten

Benutzer-Avatar
José María Lamela Real

Dank des Filters „WooCommerce-Admin-Abrechnungsfelder“ habe ich die Abrechnungsfelder in der Benachrichtigungsfußzeile per E-Mail bestellt, aber wenn ich versuche, mein benutzerdefiniertes Abrechnungsfeld einzufügen, wird es nicht angezeigt.

add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_reorder_billing_fields', 10, 2 );

function woo_reorder_billing_fields( $address, $wc_order ) {

    $address = array(
        'first_name'    => $wc_order->billing_first_name,
        'last_name'     => $wc_order->billing_last_name,
        'company'       => $wc_order->billing_company,
        'my_field'      => $wc_order->billing_my_field,
        'country'       => $wc_order->billing_country
        );

    return $address;
}

Bei der Bearbeitung durch den Administrator kann ich mein benutzerdefiniertes Abrechnungsfeld dank des Filters „woocommerce_admin_billing_fields“ anzeigen, indem ich zuerst das Feld hinzufüge und dann das Array neu anordne.

Ich stelle fest, dass ich dieses Feld zuvor hinzugefügt und in meiner Kasse mit dem Filter “woocommerce_checkout_fields” neu angeordnet habe.

Warum mein benutzerdefiniertes Feld nicht anzeigen, wenn das Objekt “$ wc_order” das Feld in der Kasse speichert?

Irgendwelche Ideen?

Danke im Voraus!

  • Ich habe die Lösung gefunden, es ist in den “Klassen-WC-Ländern”, das Format der Rechnungsadresse. Ich schreibe die Lösung bald

    – José María Lamela Real

    28. April 2016 um 9:55 Uhr

  • Überprüfen Sie diesen Link, vielleicht ist es Ihre Fragelösung:wordpress.stackexchange.com/questions/120347/…

    – RKBhardwaj

    9. Juli 2016 um 8:11 Uhr

  • @RonnieEsponja: wie hast du es gelöst?

    – Sefran2

    31. August 2017 um 19:18 Uhr

  • Antwort unten, Sefran2.

    – José María Lamela Real

    5. September 2017 um 11:30 Uhr

Benutzer-Avatar
José María Lamela Real

Ja, hier die Erklärung:

Wir registrieren das neue benutzerdefinierte Feld, in diesem Beispiel das Feld “VAT”, um das Steuerdokument für Unternehmen in der Europäischen Union zu speichern. Es gibt eine Menge Dokumentation darüber, wie man die benutzerdefinierten Felder registriert und sie im Admin-/Benutzerbereich anzeigt.

add_filter( 'woocommerce_default_address_fields', 'woo_new_default_address_fields' );

function woo_new_default_address_fields( $fields ) {

    $fields['vat'] = array(

        'label' => __( 'VAT number', 'woocommerce' ),
        'class' => array( 'form-row-wide', 'update_totals_on_change' ),

    );
    
    return $fields;

}

Dann fügen Sie das neue Feld “VAT” nur zur Registrierung der Abrechnungsfelder für E-Mails hinzu, wir möchten nicht, dass es im Abschnitt “Adressfelder” erscheint.

add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_custom_order_formatted_billing_address', 10, 2 );

function woo_custom_order_formatted_billing_address( $address, $WC_Order ) {
    
    $address = array(
        'first_name'    => $WC_Order->billing_first_name,
        'last_name'     => $WC_Order->billing_last_name,
        'vat'           => $WC_Order->billing_vat,
        'company'       => $WC_Order->billing_company,
        'address_1'     => $WC_Order->billing_address_1,
        'address_2'     => $WC_Order->billing_address_2,
        'city'          => $WC_Order->billing_city,
        'state'         => $WC_Order->billing_state,
        'postcode'      => $WC_Order->billing_postcode,
        'country'       => $WC_Order->billing_country
        );
    
    return $address;

}

Der folgende Code passt das Erscheinungsbild der Adressen an, hier müssen wir den Aufruf zum neuen Mehrwertsteuerfeld hinzufügen. Dadurch können wir die Adressansicht für jedes Land individuell anpassen.

add_filter( 'woocommerce_formatted_address_replacements', function( $replacements, $args ){
    
    $replacements['{vat}'] = $args['vat'];
    return $replacements;

}, 10, 2 );

add_filter( 'woocommerce_localisation_address_formats' , 'woo_includes_address_formats', 10, 1);

function woo_includes_address_formats($address_formats) {

    $address_formats['ES'] = "{name}\n{company}\n{vat}\n{address_1}\n{address_2}\n{postcode} {city}\n{state}\n{country}";
    $address_formats['default'] = "{name}\n{company}\n{vat}\n{nif}\n{address_1}\n{address_2}\n{city}\n{state}\n{postcode}\n{country}";
    
    return $address_formats;

}

Fragen stellen!

1115980cookie-checkWoocommerce-Bestellung formatierte Rechnungsadressen-Neuordnung und benutzerdefiniertes Rechnungsfeld

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy