
WooCommerce brezplačnih naročil za digitalne izdelke ne zaključi vedno samodejno. Naročilo z vrednostjo 0,00 € lahko tako ostane v statusu V obdelavi, čeprav pri njem ni več potrebna nobena dodatna obdelava.
S spodnjim WooCommerce snippetom lahko takšna naročila samodejno prestavimo v status Zaključeno.
Snippet preveri, ali je naročilo brezplačno in ali vsebuje samo virtualne oziroma prenosljive izdelke. Plačljivih naročil in naročil s fizičnimi izdelki ne spreminja.
Zakaj samodejno zaključevanje brezplačnih naročil?
Pri digitalnih izdelkih z vrednostjo 0,00 € pogosto ni razloga, da bi naročilo po oddaji ostalo v statusu V obdelavi.
To je še posebej uporabno pri:
- brezplačnih PDF dokumentih,
- e-knjigah in drugih datotekah za prenos,
- brezplačnih digitalnih vsebinah,
- brezplačnih licencah ali drugih virtualnih izdelkih.
Ročno zaključevanje takšnih naročil predstavlja nepotrebno administracijo, predvsem če jih je v trgovini veliko.
Kaj točno naredi ta snippet?
Koda ob prehodu naročila v status V obdelavi preveri:
- ali je skupna vrednost naročila 0,00 €,
- ali naročilo vsebuje izdelke,
- ali so vsi izdelki virtualni ali prenosljivi.
Če so vsi pogoji izpolnjeni, se status naročila samodejno spremeni:
V obdelavi → Zaključeno
Če naročilo vsebuje plačljiv ali fizični izdelek, snippet naročila ne spremeni.
Primer
Kupec naroči brezplačen PDF:
Cena: 0,00 €
Vrsta izdelka: Prenosljiv
Status po oddaji: V obdelavi
Snippet naročilo samodejno spremeni v:
Status: Zaključeno
Pri običajnem plačljivem ali fizičnem naročilu pa se ne zgodi nič in WooCommerce nadaljuje s svojim običajnim postopkom.
Navodila: kako dodati kodo s Code Snippets vtičnikom
Namestite Code Snippets vtičnik
V WordPress skrbniški plošči:
Vtičniki → Dodaj novega → poišči Code Snippets → Namesti → Aktiviraj
Dodaj nov snippet
- Pojdi na Snippets → Add New
- Naslov snippeta:
WooCommerce – Samodejno zaključi brezplačna digitalna naročila
- V polje za kodo prilepi celotno kodo spodaj.
- Nastavi izvajanje na:
Run snippet everywhere
- Shrani in aktiviraj snippet.
Celotna koda (kopiraj brez sprememb)
/**
* @snippet WooCommerce – Samodejno zaključi brezplačna digitalna naročila
* @opis Samodejno spremeni status naročila iz "V obdelavi" v "Zaključeno", če je vrednost naročila 0,00 € in vsebuje samo virtualne ali prenosljive izdelke.
* @verzija 1.0
* @avtor WP Lab – https://wplab.si
*/
add_action( 'woocommerce_order_status_processing', 'wplab_complete_free_digital_orders' );
function wplab_complete_free_digital_orders( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if ( ! $order ) {
return;
}
// Naročilo mora imeti skupno vrednost 0,00 €.
if ( (float) $order->get_total() > 0 ) {
return;
}
// Preverimo vse izdelke v naročilu.
foreach ( $order->get_items() as $item ) {
$product = $item->get_product();
if ( ! $product ) {
return;
}
// Izdelek mora biti virtualen ALI prenosljiv.
if ( ! $product->is_virtual() && ! $product->is_downloadable() ) {
return;
}
}
// Samodejno spremeni status v "Zaključeno".
$order->update_status(
'completed',
'Brezplačno digitalno naročilo je bilo samodejno zaključeno.'
);
}Kako preveriti, ali snippet deluje?
Za test lahko v WooCommerce ustvariš izdelek:
- cena: 0,00 €
- označi Virtualno ali Prenosljivo
- oddaj testno naročilo.
Ko naročilo preide v status V obdelavi, ga mora snippet samodejno prestaviti v Zaključeno.
V opombah naročila se bo dodal tudi zapis:
Brezplačno digitalno naročilo je bilo samodejno zaključeno.
Zaključek
S tem WooCommerce snippetom lahko avtomatiziraš obdelavo brezplačnih digitalnih naročil:
- naročila z vrednostjo 0,00 € se samodejno zaključijo,
- preverjajo se samo virtualni oziroma prenosljivi izdelki,
- fizična naročila ostanejo nespremenjena,
- plačljiva naročila ostanejo nespremenjena,
- ni potrebe po dodatnem WooCommerce vtičniku.
To je preprosta rešitev za trgovine, ki ponujajo brezplačne digitalne vsebine in želijo zmanjšati količino ročnega upravljanja naročil.



