Jalara Studio

veröffentlicht am

Die Adresse der letzten Bestellung für den Adressaufkleber ausgeben

#


Für WooCommerce gibt es das Plugin Woocommerce Order address Print1, das ein PDF mit Adressen erstellt. Nach der Installation und Aktivierung des Plugins, kann das PDF-Layout in den Plugin-Einstellungen (WooCommerceSortieren Adressaufkleber) eingerichtet werden. Hier lassen sich u.a. das Format (A4, Letter, Benutzerdefinierte Größe), die Ausrichtung (Portrait, Landscape), die Schriftgröße, die Anzahl der Spalten und die Zeilen für den Ausdruck festlegen.

Der Nachteil an diesem Plugin ist, dass zwar weniger als 10 Adressen ausgedruckt werden können, jedoch diese immer wieder an Platz eins des Druckbogens starten.

Daher kann es praktisch sein, die Adresse der letzten Bestellung z.B. auch über einen Shortcode auszugeben. Der Shortcode kann in den TinyMCE oder mit Hilfe der WordPress-Funktion do_shortcode() z.B. in ein Seiten-Template eingefügt werden, sofern die Seite vor einem Zugriff durch Unbefugte geschützt ist. (Denn bei Kundendaten handelt es sich, wie bekannt, um personenbezogene Daten, die u.a. dem Persönlichkeitsrecht unterstehen.) Alternativ kann auch ein eigener Bereich im Backend von WordPress angelegt2 werden, in dem sich z.B. eine Schaltfläche befindet, die mit Hilfe der PHP-Bibliothek mPDF ein PDF erstellt3 oder mit dem JavaScript-Befehl window.print() den Druckdialog öffnet.

Shortcode, der die Adresse der letzten Bestellung ausgibt

Im folgendem wird der Shortcode [shipping_address] erstellt, der den Namen und die Adresse des letzten Kunden ausgibt, um zu zeigen, wie die Versandadresse ausgelesen werden kann. Für den Fall, dass nicht nur die Adresse der letzten Bestellung, sondern auch eine Adresse einer anderen Bestell-ID ausgegeben werden soll, wurde dem Shortcode zusätzlich das Attribut id hinzugefügt, mit dem optional die Order-ID als Wert angegeben werden kann (z.B. [shipping_address id = "123"]).

Mit folgendem Codeschnipsel, der den Shortcode erstellt, lässt sich erkennen wie die Daten für den jeweiligen Zweck ausgelesen werden können:

function shipping_address( $atts ) {

    $args = array(
        'post_type' => wc_get_order_types( 'view-orders' ),
        'post_status'  => array_keys( wc_get_order_statuses() ),
        'posts_per_page' => 1,
        'orderby' => 'ID',
        'orderby' => 'DESC');

    $query = new WP_Query( $args );

    $atts = shortcode_atts( array(
        'id' => $query->posts[0]->ID,
    ), $atts );

    $order = new WC_Order( $atts['id'] ); 

    echo $order->shipping_first_name . ' ';
    echo $order->shipping_last_name . '<br>';
    if ($order->shipping_company){
     echo $order->shipping_company . '<br>';
    }
    if ($order->shipping_address_1){
        echo $order->shipping_address_1 . '<br>';
    }
    if ($order->shipping_address_2){
        echo $order->shipping_address_2 . '<br>';
    }
    echo $order->shipping_postcode . ' ';
    echo $order->shipping_city . '<br>';

}
add_shortcode( 'shipping_address', 'shipping_address' );

Weitere Attribute mitgeben

Möchtest du im Shortcode außer der Order-ID z.B. auch eine CSS-Klasse angeben, kannst du die Variable $atts wie folgt anpassen:

$atts = shortcode_atts( array(
    'id' => $query->posts[0]->ID,
    'class' => 'adressaufkleber'
 ), $atts );

Anschließend muss noch ein HTML-Element, das die CSS-Klasse entgegennimmt, ausgegeben werden:

echo '<div class="' . $atts['class'] . '">';
// echo $order->shipping_first_name . ' ';
// […]
// echo $order->shipping_city . '<br>';
echo '</div>';

Der Shortcode lässt sich daraufhin wie folgt verwenden:
[shipping_address id="123" class="spalte-1-zeile-1"]

Links

Buchempfehlung

Anzeige | Affiliate-Link*

Wer mehr über Daten­schutz­recht, Urheber­recht, Abmahnungen, Haftungs­fragen, AGB und die rechts­sichere Gestaltung der Shop- und Checkout-Seiten erfahren möchte, dem sei das über 500 Seiten starke Buch Recht für Webshop-Betreiber: Das umfassende Hand­buch des IT-Rechts­anwaltes Michael Rohrlich empfohlen, das 2017 im Rhein­werk Verlag erschien.