Ten kod dodaje niestandardowy typ zamówienia „rpm2_order ( rpm2 możesz zamienić na własną nazwę zamówienia )” i zmienia numer zamówienia tylko dla produktu o ID 2996 ( id produktu zmień na własny ) w WooCommerce. Numer zamówienia zostanie zmieniony na „#RPM2/numer”, gdzie „numer” to kolejny numer zamówienia tylko dla tego produktu.
// Dodajemy niestandardowy typ zamówienia RPM2 add_filter('woocommerce_order_types', 'rpm2_order_type'); function rpm2_order_type($order_types) { $order_types[] = 'rpm2_order'; return $order_types; } // Zmienia numer zamówienia tylko dla produktu o ID 2996 add_filter('woocommerce_order_number', 'customize_order_number_for_product_2996', 10, 2); function customize_order_number_for_product_2996($order_number, $order) { // Pobierz elementy zamówienia $order_items = $order->get_items(); // Sprawdź, czy w zamówieniu znajduje się produkt o ID 2996 $product_2996_in_order = false; foreach ($order_items as $item) { $product_id = $item->get_product_id(); if ($product_id == 2996) { $product_2996_in_order = true; break; } } // Jeśli produkt o ID 2996 jest w zamówieniu, zmień nazwę zamówienia na "#RPM2/numer" if ($product_2996_in_order) { $order_id = $order->get_id(); $rpm2_order_number = get_post_meta($order_id, '_rpm2_order_number', true); if (empty($rpm2_order_number)) { $current_count = get_option('rpm2_order_count', 1); update_post_meta($order_id, '_rpm2_order_number', $current_count); update_option('rpm2_order_count', $current_count + 1); $rpm2_order_number = $current_count; } return "RPM2/{$rpm2_order_number}"; } // W przeciwnym razie zwróć oryginalny numer zamówienia return $order_number; }
add_filter(’woocommerce_order_types’, 'rpm2_order_type’);: Dodaje nowy filtr do tablicy dostępnych typów zamówień w WooCommerce.
function rpm2_order_type($order_types) {: Definiuje funkcję rpm2_order_type, która przyjmuje jako argument tablicę $order_types.
$order_types[] = 'rpm2_order’;: Dodaje nowy element 'rpm2_order’ do tablicy $order_types.
return $order_types;: Zwraca zmodyfikowaną tablicę $order_types.
add_filter(’woocommerce_order_number’, 'customize_order_number_for_product_2996′, 10, 2);: Dodaje filtr do zmiany numeru zamówienia, przekazując funkcję customize_order_number_for_product_2996.
function customize_order_number_for_product_2996($order_number, $order) {: Definiuje funkcję customize_order_number_for_product_2996, która przyjmuje dwa argumenty: $order_number (oryginalny numer zamówienia) i $order (obiekt zamówienia).
Pobiera elementy zamówienia i sprawdza, czy produkt o ID 2996 jest w zamówieniu.
Jeśli produkt o ID 2996 jest w zamówieniu:
a ). Pobiera wartość metadanych _rpm2_order_number dla bieżącego zamówienia.
b ). Jeśli wartość metadanych jest pusta, pobiera bieżący licznik zamówień rpm2_order_count i zwiększa go o 1.
c ). Zapisuje nową wartość metadanych i licznika zamówień.
d ). Zwraca nowy numer zamówienia z prefiksem „#RPM2/”.
Jeśli produkt o ID 2996 nie jest w zamówieniu, zwraca oryginalny numer zamówienia.
Dzięki temu kodowi, tylko zamówienia zawierające produkt o ID 2996 będą miały zmieniony numer zamówienia na „#RPM2/numer”, gdzie „numer” to kolejny numer zamówienia tylko dla tego produktu. Inne zamówienia nie zostaną zmienione i będą miały standardowy numer zamówienia.