<< powrót
Opublikowano 9 komentarzy

Ceny tylko dla zalogowanych użytkowników w WooCommerce

Ceny tylko dla zalogowanych w WooCommerce

Masz sklep internetowy i chcesz, aby ceny produktów były widoczne tylko dla zalogowanych użytkowników? Jeśli tak, to świetnie trafiłeś! W artykule tym przedstawię prosty sposób na zrealizowanie tego zadania bez użycia wtyczki. Wystarczy skopiować gotowy kod i wkleić go do jednego pliku w aktualnie zainstalowanym motywie. Dla bardziej dociekliwych dodałam krótki opis 😉

Ceny tylko dla zalogowanych użytkowników – co jest do ukrycia

Jeśli chcemy pozostawić ceny widoczne tylko dla zalogowanych użytkowników, to musimy dokonać zmian w dwóch miejscach. Po pierwsze należy ukryć cenę i przycisk „Dodaj do koszyka” w katalogu produktów. Po drugie te dwa elementy musimy ukryć także na stronie z pojedynczym produktem. Na koniec warto przy każdym produkcie umieścić informację, że ceny widoczne są po zalogowaniu. Informację tą można podlinkować do formularza rejestracji/logowania.

Gdzie wprowadzamy zmiany

Wszystkie zmiany wprowadzamy w pliku functions.php. Plik ten znajduje się w głównym folderze z naszym motywem: wp-content -> themes -> Twój motyw -> functions.php.

Połącz się z serwerem poprzez FTP, skopiuj plik functions.php i otwórz go w dowolnym edytorze kodu (polecam edytor kodu Atom). Zobacz jak połączyć się z serwerem przy pomocy programu WinSCP. Artykuł jest głównie o tym, jak wykonać kopię zapasową, ale poniżej znajduje się krótki tutorial do WinSCP.

Ukrywamy cenę i przycisk w katalogu produktów

W pierwszej kolejności zajmiemy się ukryciem ceny i przycisku „Dodaj do koszyka” w katalogu produktów. Zadanie to wykonamy przy użyciu poniższego kodu.

Ceny tylko dla zalogowanych w WooCommerce
add_action( 'init', 'fanka_kodowania_prices_only_for_logged_user' );

function fanka_kodowania_prices_only_for_logged_user()
{
    if ( ! is_user_logged_in() ) 
    { 
    //usunięcie przycisku "Dodaj do koszyka" w katalogu produktów
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); 

    //usunięcie ceny w katalogu produktów
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); 
    }
    
}

W kodzie znajduje się instrukcja warunkowa sprawdzająca, czy użytkownik jest zalogowany. Jeśli nie jest, to ukrywana jest cena i przycisk „Dodaj do koszyka”.

Ceny tylko dla zalogowanych w WooCommerce

Ukrywamy cenę i przycisk na stronie z pojedynczym produktem

Do ukrycia ceny i przycisku na stronie z pojedynczym produktem wykorzystamy wcześniejszą funkcję. Dodamy do niej dwie linijki do usuwania akcji.

Ceny tylko dla zalogowanych w WooCommerce
//usunięcie przycisku "Dodaj do koszyka" na stronie z pojedynczym produktem
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

//usunięcie ceny na stronie z pojedynczym produktem
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

Teraz kod będzie miał postać:

add_action( 'init', 'fanka_kodowania_prices_only_for_logged_user' );

function fanka_kodowania_prices_only_for_logged_user()
{
    if ( ! is_user_logged_in() ) 
    { 
    //usunięcie przycisku "Dodaj do koszyka" w katalogu produktów
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); 

    //usunięcie ceny w katalogu produktów
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); 

    //usunięcie przycisku "Dodaj do koszyka" na stronie z pojedynczym produktem
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

    //usunięcie ceny na stronie z pojedynczym produktem
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    }
    
}
Sklep WooCommerce

Dodajemy link przekierowujący do rejestracji / logowania

To zadanie również nie jest trudne. Najpierw utworzymy funkcję generującą link:

function fanka_kodowania_my_account_link() {
    echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Ceny widoczne po zalogowaniu', 'nazwa_motywu') . '</a>';
}

Link jest dostosowany do wielojęzyczności, dlatego tekst jest opakowany w funkcję __(. Żeby wszystko zadziałało, musisz dodać nazwę swojego motywu, tam gdzie jest tekst nazwa motywu.

Teraz musimy jedynie podpiąć link do produktów w katalogu, a także na stronie z pojedynczym produktem. Ostatecznie kod będzie miał postać:

add_action( 'init', 'fanka_kodowania_prices_only_for_logged_user' );

function fanka_kodowania_prices_only_for_logged_user()
{
    if ( ! is_user_logged_in() ) 
    { 
    //usunięcie przycisku "Dodaj do koszyka" w katalogu produktów
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); 

    //usunięcie ceny w katalogu produktów
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); 

    //usunięcie przycisku "Dodaj do koszyka" na stronie z pojedynczym produktem
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

    //usunięcie ceny na stronie z pojedynczym produktem
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    }

    //dodanie linku do katalogu produktów
    add_action( 'woocommerce_after_shop_loop_item', 'fanka_kodowania_my_account_link', 11 );

    //dodanie linku na stronie z pojedynczym produktem
    add_action( 'woocommerce_single_product_summary', 'fanka_kodowania_my_account_link', 31 );    
}

function fanka_kodowania_my_account_link() {
    echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Ceny widoczne po zalogowaniu', 'nazwa_motywu') . '</a>';
}

Tak więc wystarczy, że skopiujesz powyższy kod do pliku functions.php i zmienisz nazwę motywu. Od teraz ceny i przycisk „Dodaj do koszyka” widoczne są jedynie dla zalogowanych użtkowników 🙂

Sklep WooCommerce
Subskrybuj
Powiadom o
guest
9 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
Dariusz
Dariusz
3 lat temu

Super przydało się! Pytanie czy można dopisać kod aby po zalogowaniu nie był widoczny link 'Ceny widoczne po zalogowaniu’?

Dariusz
Dariusz
3 lat temu
Reply to  Monika Szeliga

Dziękuję za odpowiedź. Chce aby link przed zamówieniem byl widoczny, a już po nie. Pozdrawiam

Tomasz
Tomasz
2 lat temu

Ten kod dobrze nie działa.
Kod ↓
//usunięcie przycisku „Dodaj do koszyka” na stronie z pojedynczym produktem
remove_action( 'woocommerce_single_product_summary’, 'woocommerce_template_single_add_to_cart’, 30 );

//usunięcie ceny na stronie z pojedynczym produktem
remove_action( 'woocommerce_single_product_summary’, 'woocommerce_template_single_price’, 10 );

usuwa obsługę również dla uwierzytelnianionych

Sebastian
2 lat temu

Bardzo dobra wskazówka jednak w moim przypadku nie wszystko działa mam motyw Divi, po wpisaniu nazwy motywu cana się wyświetla na karcie produktu bez zalogowania – co mogę zrobić? Tak to wygląda na stronie chemia.la.pl

Last edited 2 lat temu by Sebastian
Hubert
1 rok temu

Kod bardzo pomocny- wykorzystałem u siebie, dziękuję. Mam zainstalowany motyw Neve.

Żeby napis „ceny widoczne po zalogowaniu” NIE był widoczny jak będzie użytkownika zalogowany. Wystarczy nawias klamrowy zamykający „}” umieścić pod akcją dodanie tego napisu „ceny widoczne po zalogowaniu”.

Alternatywnie można zamiast zmiany nawiasu wrzucić jeszcze jednego ifa:

if ( is_user_logged_in() ) 
  { 

  //dodanie linku na stronie z pojedynczym produktem
  remove_action( 'woocommerce_single_product_summary’, 'fanka_kodowania_my_account_link’, 31 ); 
  }

——————–
Tutaj wkleję Twój cały kod ale ze zmienionym nawiasem:

add_action( 'init’, 'fanka_kodowania_prices_only_for_logged_user’ );

function fanka_kodowania_prices_only_for_logged_user()
{
  if ( ! is_user_logged_in() ) 
  { 
  //usunięcie przycisku „Dodaj do koszyka” w katalogu produktów
  remove_action( 'woocommerce_after_shop_loop_item’, 'woocommerce_template_loop_add_to_cart’, 10 ); 

  //usunięcie ceny w katalogu produktów
  remove_action( 'woocommerce_after_shop_loop_item_title’, 'woocommerce_template_loop_price’, 10 ); 

  //usunięcie przycisku „Dodaj do koszyka” na stronie z pojedynczym produktem
  remove_action( 'woocommerce_single_product_summary’, 'woocommerce_template_single_add_to_cart’, 30 );

  //usunięcie ceny na stronie z pojedynczym produktem
  remove_action( 'woocommerce_single_product_summary’, 'woocommerce_template_single_price’, 10 );
  

  //dodanie linku do katalogu produktów
  add_action( 'woocommerce_after_shop_loop_item’, 'fanka_kodowania_my_account_link’, 11 );

  //dodanie linku na stronie z pojedynczym produktem
  add_action( 'woocommerce_single_product_summary’, 'fanka_kodowania_my_account_link’, 31 );
   }
}

function fanka_kodowania_my_account_link() {
  echo '<a href=”’ . get_permalink(wc_get_page_id(’myaccount’)) . '”>’ . __(’Ceny widoczne po zalogowaniu’, 'nazwa_motywu’) . '</a>’;
}

W załączniku dodałem zdjęcie który nawias można przenieść.

Screenshot 2023-01-11 at 09.07.13.png