Loading...

Ceny tylko dla zalogowanych w Woocommerce

Home / Sklepy internetowe / Ceny tylko dla zalogowanych w Woocommerce

Ostatnio miałem zlecenie ukrycia cen w sklepie oparty o WooCommerce dla niezalogowanych użytkowników. Klient zażyczył sobie dodatkowo aby aktywacja świeżo zarejestrowanych kont odbywała się tylko za zgodą administracji. Tak więc do zrobienia były trzy główne zadania: ukrycie cen, brak możliwości zrobienia zamówienia (znika dodaj do koszyka) oraz konta po rejestracji nie są aktywne.

Co zdziwiło mnie po przeszukaniu Internetu to fakt że nie znalazłem odpowiadającej mi wtyczki do WordPress, która ukrywałaby ceny dla niezalogowanych. Na szczęście było kilka przykładów jak zrobić to poprzez dodatkowy skypt do szablonu.Po połączeniu kilku wątków otrzymałem taki kod który dodajemy do pliku functions.php w aktywnym szablnie strony.

add_action('after_setup_theme','activate_filter') ; 
function activate_filter(){
	add_filter('woocommerce_get_price_html', 'my_woocommerce_get_price_html');
	add_filter('woocommerce_is_purchasable', 'my_woocommerce_is_purchasable', 10, 2);
}

function my_woocommerce_is_purchasable($is_purchasable, $product) {
        return is_user_logged_in();
}

function my_woocommerce_get_price_html($price){
    	if(is_user_logged_in() ){
    		return $price;
    	}
    	else
    	{
    		remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
    		remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    		remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    		remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    		return '<a href="' . wp_login_url() . '">Ceny widoczne po zalogowaniu</a>'; } }
    	}
}

W przykładzie najważniejsze są dwie funkcje:

  • my_woocommerce_is_purchasable – odpowiada za możliwość dodania produktu do koszyka i zamówienia. Jeśli funkcja zwraca false to tak jakby prpdukt nie był w ogóle możliwy do zamówienia. Chroni nas również przed wywołaniem adresu dodania do koszyka produktu;
  • my_woocommerce_get_price_html – odpowiada za wyświetlenie ceny produktu na listach oraz na fiszce produktowej. W tym wypadku zwracamy link do zalogownia się do WordPress.

Do aktywacji ręcznej użytkowników wystarczyła wtyczna New User Approve. W ten oto sposób mamy sklep bez możliwości zamawiania produktów i widocznych cen, ale z prezentacją produktów. W ten łatwy sposób osiągamy cenę dostępną po zalogowaniu w Woocommerce.

Comments(0)

    Leave a Comment