Samodejno zaključevanje brezplačnih digitalnih WooCommerce naročil

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

  1. Pojdi na Snippets → Add New
  2. Naslov snippeta:

WooCommerce – Samodejno zaključi brezplačna digitalna naročila

  1. V polje za kodo prilepi celotno kodo spodaj.
  2. Nastavi izvajanje na:

Run snippet everywhere

  1. Shrani in aktiviraj snippet.

Celotna koda (kopiraj brez sprememb)

PHP
/**
 * @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.'
	);
}
Prikaži več

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.

Deli vsebino