Benutzerdefinierte fortlaufende Bestellnummer für Woocommerce – Ist das möglich?Php

PHP-Programmierer chatten hier
Guest
 Benutzerdefinierte fortlaufende Bestellnummer für Woocommerce – Ist das möglich?

Post by Guest »

Bearbeitet:
Bezogen auf dieses Set in WooCommerce eine fortlaufende Bestellnummer mit Land- und Jahrespräfix
@LoicTheAztecs Codierung mit $country – ich habe es geschafft, einen Teil davon zu regeln Problem.

Code: Select all

// Set and save the order number as metadata
add_filter( 'woocommerce_checkout_create_order', 'save_order_number_metadata' );
function save_order_number_metadata( $order ) {
$prefix  = 'AS';
$digits  = 4; // Number of desired digits for the number part
$year    = date('Y', time()); // Get the current year
$data    = get_option('wc_sequential_order_number'); // Get order number sequencial helper registered data

$number = isset($data[$year]) ? intval($data[$year]) + 1 : 1;
$data[$year] = $number;

// Update order number sequencial helper registered data
update_option('wc_sequential_order_number', $data);

// Add order number as custom metadata
$order->add_meta_data('_order_number', sprintf('%s-%s-%s', $prefix, $year, str_pad($number, $digits, '0', STR_PAD_LEFT)), true);
}

// Read the order number from metadata
add_filter( 'woocommerce_order_number', 'define_order_number', 10, 2 );
function define_order_number( $order_id, $order ) {
if ( $order_number = $order->get_meta('_order_number') ) {
$order_id = $order_number;
}
return $order_id;
}
Die Frage ist jetzt, wie man das Zurücksetzen der Bestellnummer pro Jahr einbezieht – also AS-2025-SNo, im Jahr 2026 wird SNo auf 0001 zurückgesetzt. Ich verstehe @ nicht Disants Codierung in diesem Thread dafür (ich benötige keinen Sprachcode, da mein Präfix nur „AS“ ist:

Code: Select all

// Reset if year has changed
$stored_year = get_option($option_name . "_year", -1);
if ($year > $stored_year) {
update_option($option_name, 1);
update_option($option_name . "_year", $year);
}

$current_number = get_option($option_name, 1);
update_option($option_name, $current_number + 1);
Ich bin mir nicht sicher, wie ich dies in den obigen SNo-Generierungscode integrieren soll....

Ursprünglicher Beitrag:< /p>
Format der benutzerdefinierten fortlaufenden Bestellnummer gewünscht: AS-Y-SNo
AS = Firmenakronym, Y = Bestelljahr, SNo (generierte fortlaufende Nummer / Index )
Siehe unten versucht Codes:

Code: Select all

// Adding Prefix and Date
add_filter( 'woocommerce_order_number', 'ts_change_woocommerce_order_number', 1, 2 );
function ts_change_woocommerce_order_number( $order_id ) {
$prefix = 'AS';
$order = wc_get_order( $order_id );
$order_date = $order->get_date_created();
$display_date = $order_date->date('Y'); // Format date as 'y/m/d'
$new_order_id = $prefix . '-' . $display_date . '-' . $order_id; // Add a hyphen between date and order ID
return $new_order_id;
}
Bisher funktioniert das, aber es wird die ursprüngliche Bestell-ID von Wordpress verwendet. - Screenshot: https://snipboard.io/TJxy1j.jpg
Fügen Sie diesen SNo-Generierungscode in einer separaten Code-Snippet-Instanz hinzu:

Code: Select all

// Generate SNo
add_filter( 'woocommerce_checkout_create_order', 'ts_save_order_number_metadata' );
function ts_save_order_number_metadata( $order ) {
$digits  = 4; // Number of desired digits for the number part
$data    = get_option('wc_sequential_order_number'); // Get order number sequential helper registered data
$number = isset($data['sequential']) ? intval($data['sequential']) + 1 : 1;
$data['sequential'] = $number;
// Update order number sequential helper registered data
update_option('wc_sequential_order_number', $data);
// Add order number as custom metadata
$order->add_meta_data('_order_number', str_pad($number, $digits, '0', STR_PAD_LEFT), true);
}
// Read the order number from metadata
add_filter( 'woocommerce_order_number', 'ts_define_order_number', 10, 2 );
function ts_define_order_number( $order_id, $order ) {
if ( $order_number = $order->get_meta('_order_number') ) {
$order_id = $order_number;
}
return $order_id;
}

Ergebnis --- Nach dem Hinzufügen dieser Codierung der 2. SNo-Generation wird nur die generierte 4-stellige Nummer angezeigt. Das Präfix-Y ist im Bestellformat nicht mehr vorhanden.: https://snipboard. io/emRUVX.jpg
Screenshot – zeigt, wie die beiden Codes in Code-Snippets aufgelistet sind: https://snipboard.io/SLubAs.jpg – sie sind getrennt...< /p>
Gibt es überhaupt eine Möglichkeit, die Kodierungen so zu kombinieren, dass sie zusammenarbeiten?
Vielleicht kann irgendwo im zweiten Satz (SNo-Generation) der Kodierungen eine neue formatierte Bestellnummer eingefügt werden? ($new_order_number = $prefix . '-' . date('Y') . '-' . $order_number) ?
Vielen Dank. Schätzen Sie den Beitrag von Experten hierzu. :)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post