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);
- Kod sprawdza, czy WooCommerce jest aktywny w systemie WordPress. Jeśli nie, nic nie robi i zakończy działanie.
- Zdefiniowana jest funkcja
auto_complete_paid_orders
, która przyjmuje jako parametr identyfikator zamówienia ($order_id
). - W funkcji, jeśli identyfikator zamówienia nie jest ustawiony, zwraca
null
i kończy działanie. - Dla podanego identyfikatora zamówienia, kod pobiera obiekt zamówienia za pomocą funkcji
wc_get_order
. - Następnie sprawdza, czy status zamówienia to „on-hold” (oczekuje na płatność) lub „pending” (oczekujące).
- Jeśli tak, kod sprawdza, czy zamówienie jest opłacone za pomocą metody
is_paid
. - Jeśli zamówienie jest opłacone, funkcja aktualizuje status zamówienia na „completed” (zrealizowane) za pomocą metody
update_status
. - Na koniec, kod dodaje funkcję
auto_complete_paid_orders
do hookawoocommerce_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.