...

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.

Nie znalazłeś funkcji, która Cię interesuje?
Napisz do mnie.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *