Nascondere i prezzi e la funzionalità di checkout in WooCommerce
So che questa domanda potrebbe essere troppo generica, ma sto cercando un po' di indicazioni. Il mio cliente ha un negozio WooCommerce con 30-40 prodotti. Per qualche motivo non vogliono più vendere online, ma desiderano mantenere le pagine dei prodotti, le informazioni, ecc. sul loro sito web.
Esiste un modo, utilizzando gli hook o altri metodi, per nascondere elementi come prezzi, pulsante "aggiungi al carrello", ecc. in WooCommerce? O dovrei semplicemente modificare i file template PHP?

Fortunatamente WooCommerce ha molti hook, questo codice rimuove prezzi e pulsanti:
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 );
Puoi approfondire esaminando i file content-product.php
e content-single-product.php
se hai bisogno di rimuovere altri elementi.
Immagino ci sia più di semplicemente prezzi/pulsanti che vuoi nascondere/rimuovere (come pagine/funzioni), questo tutorial ti dà alcuni suggerimenti

Ho ragione nel pensare che quegli hook debbano essere inseriti in functions.php? Se è così, c'è una sezione particolare in cui devo inserirli? Se funzionano, presumibilmente la funzionalità del carrello non sarà più visibile, a parte qualche stile, è corretto?

sì, puoi inserirli in functions.php e non importa dove li metti all'interno di un'altra funzione. Di solito alla fine del file è la soluzione più sicura, purché non li metti dopo l'ultimo ?>
. Questo non rimuoverà la pagina del carrello, ma effettivamente rimuoverà la possibilità di aggiungere qualsiasi cosa al carrello. Se non vuoi vedere la pagina del carrello da nessuna parte, dovresti essere relativamente al sicuro.

Funziona. Ma è strano. Dopo aver applicato questo, le immagini dei prodotti hanno smesso di apparire. Mostra uno spazio vuoto per la loro posizione, e quando passo il mouse sopra e clicco su di esse, mi mostra l'immagine corretta. Hai un'idea sul perché sta succedendo?

Estendendo il codice sopra (grazie Ewout), il seguente codice eliminerà tutti i prezzi e i pulsanti 'aggiungi al carrello' su tutti i prodotti woocommerce, oltre a fornire una spiegazione del perché. Avevo bisogno di questo codice per un sito che offre prodotti di vendita diretta e, per conformarmi alle loro regole, non posso mostrare i prezzi al pubblico generico.
Aggiungi il filtro al file functions.php del tuo tema.
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 'Solo gli <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Utenti Registrati</a> possono visualizzare i prezzi.';
}
}

Questo è strano. Dopo aver applicato questo, le immagini dei prodotti hanno smesso di apparire. Mostra uno spazio vuoto al loro posto, e quando passo il mouse sopra e clicco su di esse, mi mostra l'immagine corretta. Hai un'idea sul perché questo stia accadendo?

add_filter( 'woocommerce_is_purchasable', '__return_false' );
add_filter( 'woocommerce_get_price_html', '__return_empty_string' );
Questo codice impedirà completamente il checkout e nasconderà tutti i prezzi attraverso:
- Rendendo tutti i prodotti non acquistabili (riga 1)
- Svuotando l'HTML del prezzo (riga 2)
