Ascunde prețurile și funcționalitatea de finalizare comandă în WooCommerce
Știu că această întrebare ar putea fi prea generală, dar caut puțină îndrumare. Clientul meu are un magazin WooCommerce cu 30-40 de produse. Din anumite motive, nu mai doresc să vândă online, dar vor să păstreze paginile produselor, informațiile și alte detalii pe site-ul lor.
Există vreo modalitate, folosind hook-uri sau alte metode, de a ascunde elemente precum prețuri, butonul de adăugare în coș etc. în WooCommerce? Sau ar trebui să editez direct fișierele template PHP?

din fericire, WooCommerce are o mulțime de hook-uri, acestea elimină prețurile și butoanele:
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 );
poți investiga fișierele content-product.php
și content-single-product.php
dacă ai nevoie să elimini mai multe elemente.
Presupun că există mai multe lucruri pe care dorești să le ascunzi/elimini, nu doar prețurile/butoanele (cum ar fi pagini/funcții), acest tutorial îți oferă câteva indicații

Am dreptate să cred că acele hook-uri trebuie introduse în functions.php? Dacă da, există o secțiune anume în care trebuie să le pun? Dacă funcționează, probabil funcționalitatea coșului nu va mai fi vizibilă, în afară de unele stilizări, corect?

da, le poți pune în functions.php și nu contează unde le introduci în interiorul altei funcții. De obicei, cel mai sigur este să le pui la sfârșitul fișierului, atâta timp cât nu le pui după ultimul ?>
. Acest lucru nu va elimina pagina coșului, dar va elimina posibilitatea de a adăuga orice în coș. Dacă nu vrei să apară pagina coșului nicăieri, ar trebui să fii relativ în siguranță.

Extindând codul de mai sus (mulțumesc Ewout), următorul cod va elimina toate prețurile și butoanele 'adaugă în coș' de pe toate produsele WooCommerce, precum și va oferi o explicație pentru aceasta. Am avut nevoie de acest cod pentru un site care oferă produse în vânzare directă și pentru a respecta regulile lor, nu pot afișa prețurile publicului larg.
Adăugați filtrul în fișierul functions.php al temei dumneavoastră.
add_filter('woocommerce_get_price_html','members_only_price');
function members_only_price($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 'Doar <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Utilizatorii Înregistrați</a> pot vizualiza prețurile.';
}
}

Este ciudat. După aplicarea acestui lucru, imaginile produselor au încetat să mai apară. Se afișează un spațiu gol în locul lor, iar când trec mouse-ul peste ele și fac clic, îmi arată imaginea corectă. Ai idee de ce se întâmplă asta?

add_filter( 'woocommerce_is_purchasable', '__return_false' );
add_filter( 'woocommerce_get_price_html', '__return_empty_string' );
Acest cod va împiedica complet finalizarea comenzii și va ascunde toate prețurile prin:
- Marcarea tuturor produselor ca fiind necomandabile (linia 1)
- Golirea conținutului HTML al prețurilor (linia 2)
