CMS Woocommerce WordPress

WooCommerce: Ocultar categorías de productos en tu tienda

No mostrar determinados productos en tu tienda online o en cualquier otra página que liste productos

Imaginemos que tenemos una tienda online, pero que gran parte de los productos de nuestro catálogo no queremos que aparezcan en la portada de la misma.

Sí queremos que estén indexables en Google, y que estén accesibles para los usuarios, pero no desde la portada de la tienda. Así que… ¿Cómo hacemos esto?

 

Vamos al functions.php de nuestro tema activo, y añadimos la siguiente función:

add_action( 'woocommerce_product_query', 'prefix_custom_pre_get_posts_query' );

function prefix_custom_pre_get_posts_query( $q ) {
	
	if( is_shop() ) { //No se mostrarán en estas páginas
	    $tax_query = (array) $q->get( 'tax_query' );
	
	    $tax_query[] = array(
	           'taxonomy' => 'product_cat',
	           'field'    => 'slug',
	           'terms'    => array( 'productos-fotos', 'cat2' ), // Categorías que no mostraremos
	           'operator' => 'NOT IN'
	    );
	
	
	    $q->set( 'tax_query', $tax_query );
	}
}

 

Donde:

if( is_shop() ) {

Serán las páginas donde no vamos a mostrar los productos. En este caso, en la tienda (shop). Pero también podemos poner tantas como deseemos. Ej:

if( is_shop() || is_page('awards') ) {

 

Por otro lado, en el array, especificaremos la categoría o categorías que contendrán los productos a ocultar. En nuestro ejemplo, no se mostrarán los productos de las categorías: productos-fotos y cat2

'terms'    => array( 'productos-fotos', 'cat2' ),

 

¿Y para qué nos puede servir esto?
Pues, por ejemplo, para crear landing pages específicas de productos concretos.

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

2 Comentarios

Haz clic aquí para dejar tu comentario

  • Bienvenido Rafael!

    Puedes utilizar los filters:
    “widget_categories_args” y “widget_categories_dropdown_args”.

    Quedando algo como:

    function exclude_widget_categories($args) {

    //ID de la categoría a excluir
    $excluded = ’25’;
    $args[‘exclude’] = $excluded;
    return $args;

    }

    add_filter( ‘widget_categories_args’, ‘exclude_widget_categories’, 10, 1 );
    add_filter( ‘widget_categories_dropdown_args’, ‘exclude_widget_categories’, 10, 1 );