Zobrazenie dodacej adresy, ak ju má prihlásený zákazník už vyplnenú

Obtiažnosť:
Začiatočník
Pokročilý
Skúsený
Expert

Vo WooCommerce je možné zadať dodaciu adresu inú, ako fakturačnú. Ak je zákazník prihlásený, táto adresa sa uloží do profilu. V prípade opakovaného nákupu sa však táto adresa nezobrazuje a po odoslaní objednávky, sa táto adresa v nastaveniach prepíše fakturačnou. Nižšie si ukážeme, ako zobrazovať dodaciu adresu, ak je vyplnená a zákazník je prihlásený.

/**
 * Zobrazenie dodacej adresy v pokladni, ak ju má zákazník vyplnenú
 * url: https://wp-admin.sk/snippets/zobrazenie-dodacej-adresy-ak-ju-ma-prihlaseny-zakaznik-uz-vyplnenu/
 * author: Peter Bohuš
 * @param $bool
 *
 * @return bool
 */
function viking_display_shipping_address_if_is_set ( $bool ) {
	// ak nie je prihlásený, vrátime pôvodnú hodnotu
	if( ! is_user_logged_in() ) {
		return $bool;
	}
	$current_id = get_current_user_id();
	$customer = new WC_Customer( $current_id ); // získanie objektu zákazníka z ID
	// získanie dodacej adresy - povinné polia
	$shipping_first_name = $customer->get_shipping_first_name();
	$shipping_last_name  = $customer->get_shipping_last_name();
	$shipping_address_1  = $customer->get_shipping_address_1();
	$shipping_city       = $customer->get_shipping_city();
	$shipping_postcode   = $customer->get_shipping_postcode();
	$shipping_country    = $customer->get_shipping_country();
	// kontrola, či adresa je vyplnená
	if( $shipping_first_name
       && $shipping_last_name
       && $shipping_country
       && $shipping_address_1
       && $shipping_city
       && $shipping_postcode ) {
		// ak je vyplnená, nastavíme premennú na TRUE
		$bool = true;
	}
	// vrátime hodnotu zobrazenia dodacej adresy
	return $bool;
}
add_filter( 'woocommerce_ship_to_different_address_checked', 'viking_display_shipping_address_if_is_set', 10, 1 );

V našej funkcii na začiatku skontrolujeme, či zákazník je prihlásený. Použijeme na to funkciu is_user_logged_in(). Ak je zákazník prihlásený, získame ID prihláseného zákazníka, pomocou funkcie get_current_user_id(). Získame objekt zákazníka WC_Customer() a ako argument, použijeme ID zákazníka.

Potom, pomocou jednotlivých metód tohto objektu, získame povinné polia z dodacej adresy. Následne tieto polia overíme, či všetky obsahujú hodnotu a ak áno, nastavíme parameter na true a ten vrátime.

Použili sme na to filter woocommerce_ship_to_different_address_checked.

A nakoniec dva snippety, ktoré zobrazia/schovajú dodaciu adresu v pokladni, bez ohľadu na to, či zákazník má, alebo nemá vyplnenú dodaciu adresu vo svojom profile. Toto bude platiť aj pre neprihlásených zákazníkov:

/**
 * Zobrazenie dodacej adresy
 */
add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true' );
/**
 * Schovanie dodacej adresy
 */
add_filter( 'woocommerce_ship_to_different_address_checked', '__return_false' );

Samozrejme, toto sú iba pomocné snippety a vo väčšine prípadov, ich nebudete potrebovať. Ak však máte napríklad B2B obchod a zákazník – firma ma sídlo v jednom meste, ale tovar posiela na svoju pobočku v inom meste a faktúru, potrebuje mať vystavenú na adresu sídla firmy, toto je cesta ako to zákazníkom zjednodušiť.


Tento snippet môžte umiestniť do functions.php vašej aktuálnej témy, ale vhodnejšie je si na to vytvoriť vlastný plugin. Viac o vytvorení pluginu, nájdete TU.

0 0 votes
Hodnotenie článku
Autor
Navigácia
Odoberať
Upozorniť na
guest
0 Komentáre
Inline Feedbacks
View all comments