...

Ten kod PHP jest przeznaczony dla sklepów opartych na platformie WooCommerce w systemie WordPress. Gdy dodasz ten kod do pliku functions.php w aktywnym motywie lub motywie potomnym, pozwoli on automatycznie zmienić status zamówienia z „oczekuje na płatność” na „zrealizowane” po zaksięgowaniu płatności.

// Sprawdź, czy WooCommerce jest aktywny
if (!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
    return;
}

// Funkcja do automatycznej zmiany statusu zamówienia
function auto_complete_paid_orders($order_id) {
    if (!$order_id) {
        return;
    }

    $order = wc_get_order($order_id);

    if ('on-hold' === $order->get_status() || 'pending' === $order->get_status()) {
        // Sprawdź, czy zamówienie jest opłacone
        if ($order->is_paid()) {
            // Ustaw status zamówienia na "zrealizowane"
            $order->update_status('completed');
        }
    }
}

// Dodaj funkcję do odpowiedniego hooka
add_action('woocommerce_payment_complete', 'auto_complete_paid_orders', 10, 1);
  1. Kod sprawdza, czy WooCommerce jest aktywny w systemie WordPress. Jeśli nie, nic nie robi i zakończy działanie.
  2. Zdefiniowana jest funkcja auto_complete_paid_orders, która przyjmuje jako parametr identyfikator zamówienia ($order_id).
  3. W funkcji, jeśli identyfikator zamówienia nie jest ustawiony, zwraca null i kończy działanie.
  4. Dla podanego identyfikatora zamówienia, kod pobiera obiekt zamówienia za pomocą funkcji wc_get_order.
  5. Następnie sprawdza, czy status zamówienia to „on-hold” (oczekuje na płatność) lub „pending” (oczekujące).
  6. Jeśli tak, kod sprawdza, czy zamówienie jest opłacone za pomocą metody is_paid.
  7. Jeśli zamówienie jest opłacone, funkcja aktualizuje status zamówienia na „completed” (zrealizowane) za pomocą metody update_status.
  8. Na koniec, kod dodaje funkcję auto_complete_paid_orders do hooka woocommerce_payment_complete, który jest wywoływany po zaksięgowaniu płatności dla zamówienia. Dzięki temu, funkcja zostanie automatycznie wywołana, gdy tylko płatność zostanie zaksięgowana.

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 *