WooCommerce-Bestellungen ein Präfix oder Suffix hinzufügen

Manchmal ist es notwendig, den Bestellnummern ein Präfix voranzustellen, wenn man einen WooCommerce-Shop betreibt und diesen mit einem eigenen ERP verbunden hat. WooCommerce selbst bietet leider keine Möglichkeit dazu, aber es gibt einen Hook, den wir verwenden können, um ein Präfix/Suffix hinzuzufügen. Hier wird erklärt, wie dieser Hook aufgerufen wird.

Wichtig ist, dass dies nur bei neuen Bestellungen der Fall ist. Ältere Bestellungen werden damit nicht bearbeitet. Es ist auch wichtig zu wissen, dass z.B. WooCommerce Germanized mit dem Hook arbeitet und dass unsere Änderungen auch für die anderen Plugins gelten können.

Präfix vorsetzen

// Hinzufügen eines Filters für die WooCommerce-Bestellnummer
add_filter('woocommerce_order_number', 'prefix_order_number', 10, 2);

function prefix_order_number($oldnumber, $order) {
    // Hinzufügen eines Präfixes "PXBT-" vor der Bestellnummer
    $new_order_number = 'PXBT-' . $order->get_id();
    // Zurückgeben der modifizierten Bestellnummer
    return $new_order_number;
}Code-Sprache: PHP (php)

Suffix anhängen

// Hinzufügen eines Filters für die WooCommerce-Bestellnummer
add_filter('woocommerce_order_number', 'suffix_order_number', 10, 2);

function suffix_order_number($oldnumber, $order) {
    // Hinzufügen eines Suffixes "-PXBT" nach der Bestellnummer
    $new_order_number = $order->get_id() . '-PXBT';
    // Zurückgeben der modifizierten Bestellnummer
    return $new_order_number;
}Code-Sprache: PHP (php)

In beiden Beispielen ersetzt du -PXBT mit deinem Präfix oder Suffix. Alle neuen Bestellungen werden dann automatisch erweitert. In deiner functions.php oder deinem Plugin kannst du diesen Code hinzufügen.

Es ist notwendig, die ID der Bestellung mit get_id() abzufragen. Die Properties sind seit einiger Zeit nicht mehr erlaubt. Die Verwendung ist zwar noch möglich, aber es wird ein Hinweis in die Logs geschrieben. Deswegen wird in den Beispielen von Anfang an mit der entsprechenden Methode gearbeitet.

Zur Verdeutlichung ist hier ein Beispiel, wie es nicht sein sollte:

// Hinzufügen eines Filters für die WooCommerce-Bestellnummer
add_filter('woocommerce_order_number', 'prefix_order_number', 10, 2);

function prefix_order_number($oldnumber, $order) {
    // Hinzufügen eines Präfixes "PXBT-" vor der Bestellnummer
    // Verwendung der Eigenschaft "id" des $order-Objekts, was Fehler verursacht, weil die Eigenschaft auf protected steht
    $new_order_number = 'PXBT-' . $order->id;
    // Zurückgeben der modifizierten Bestellnummer
    return $new_order_number;
}Code-Sprache: PHP (php)