Ocultar precios y funcionalidad de pago en WooCommerce
Sé que esta pregunta puede ser demasiado amplia, pero estoy buscando algo de orientación. Mi cliente tiene una tienda WooCommerce con 30-40 productos. Por alguna razón, ya no quieren vender en línea, pero desean mantener las páginas de productos, información, etc. en su sitio web.
¿Hay alguna manera, usando hooks u otros métodos, de ocultar elementos como precios, botón de añadir al carrito, etc. en WooCommerce? ¿O debería simplemente editar los archivos de plantilla PHP?

Afortunadamente WooCommerce tiene muchos hooks, esto elimina precios y botones:
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 );
Puedes profundizar en content-product.php
y content-single-product.php
si necesitas eliminar más elementos.
Imagino que hay más que solo los precios/botones que quieres ocultar/eliminar (como páginas/funciones), este tutorial te da algunas pistas

¿Estoy en lo correcto al pensar que esos hooks deben insertarse en functions.php? Si es así, ¿hay alguna sección en particular donde deba colocarlos? Si funcionan, presumiblemente la funcionalidad del carrito ya no será visible, aparte de algunos estilos, ¿es correcto?

sí, puedes ponerlos en functions.php y no importa dónde los coloques dentro de otra función. Por lo general, colocarlos al final del archivo es lo más seguro, siempre y cuando no los pongas después del último ?>
. Esto no eliminará la página del carrito, pero sí eliminará la posibilidad de agregar cualquier cosa al carrito. Si no quieres ver la página del carrito en ningún lugar, deberías estar relativamente seguro.

Funciona. Pero esto es extraño. Después de aplicar esto, las imágenes de los productos dejaron de aparecer. Muestra un espacio vacío para su ubicación, y cuando paso el mouse sobre ellas y hago clic, me muestran la imagen correcta. ¿Tienes alguna idea de por qué está sucediendo esto?

Extendiendo el código anterior (gracias Ewout), el siguiente código eliminará todos los precios y botones de 'añadir al carrito' en todos los productos de WooCommerce, además de proporcionar una explicación del porqué. Necesitaba este código para un sitio web que ofrece productos de venta directa y para cumplir con sus normas, no puedo mostrar precios al público en general.
Añade el filtro al archivo functions.php de tu 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 los <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Usuarios Registrados</a> pueden ver los precios.';
}
}

Esto es extraño. Después de aplicar esto, las imágenes del producto dejaron de aparecer. Muestra un espacio vacío en su ubicación, y cuando paso el mouse sobre ellas y las hago clic, me muestran la imagen correcta. ¿Tienes alguna idea de por qué está sucediendo esto?

add_filter( 'woocommerce_is_purchasable', '__return_false' );
add_filter( 'woocommerce_get_price_html', '__return_empty_string' );
Esto evitará completamente el proceso de compra y ocultará todos los precios al:
- Hacer que todos los productos no sean comprables (línea 1)
- Vaciar el HTML del precio (línea 2)
