SmythSys IT Consulting

Ocultar categorías y productos de ciertas categorías en la tienda de WooCommerce

En ocasiones queremos ocultar ciertas categorías del listado de categorías de WooCommerce, o productos de la tienda. Por ejemplo la categoría Sin Categoría, o ciertas subcategorías que quieras sólo para algún cliente.

Hoy os dejamos unos códigos para hacerlo.

Ocultar categorías y productos de ciertas categorías en la tienda de WooCommerce.

Como no es una funcionalidad de WooCommerce, que sólo deja ocultar ciertos productos, tenemos que implementar código. Para ello, como siempre, podemos editar el fichero functions.php de nuestra plantilla, preferiblemente hija, o (mejor) poner un Snippet.

Os vamos a dejar dos. El primero quita la categoría del listado de categorías y del menú de categorías (widget) de la tienda. Pero los productos siguen apareciendo.

/**
* @snippet Hide Products From Specific Category @ Shop
* @how-to Watch tutorial @ https://businessbloomer.com/?p=19055
* @sourcecode https://businessbloomer.com/?p=572
* @author Rodolfo Melogli
* @testedwith WooCommerce 3.1.2
*/

add_action( ‘woocommerce_product_query’, ‘bbloomer_hide_products_category_shop’ );

function bbloomer_hide_products_category_shop( $q ) {

$tax_query = (array) $q->get( ‘tax_query’ );

$tax_query[] = array(
‘taxonomy’ => ‘product_cat’,
‘field’ => ‘slug’,
‘terms’ => array( ‘ponerslugaqui’ ), // Category slug here
‘operator’ => ‘NOT IN’
);

$q->set( ‘tax_query’, $tax_query );

}

Fuente aquí. Recuerda que tienes que poner el slug de la categoría donde pongo ponerslugaqui.

El segundo código oculta los productos del listado de productos de la tienda. Pero no quita la categoría del listado de categorías o del widget de categorías. Así que, en mi opinión, lo más completo es implementar ambos en el mismo Snippet.

/**
* Show products only of selected category.
*/
function get_subcategory_terms( $terms, $taxonomies, $args ) {

$new_terms = array();
$hide_category = array( XXX ); // Ids of the category you don’t want to display on the shop page

// if a product category and on the shop page
if ( in_array( ‘product_cat’, $taxonomies ) && !is_admin() && is_shop() ) {
foreach ( $terms as $key => $term ) {
if ( ! in_array( $term->term_id, $hide_category ) ) {
$new_terms[] = $term;
}
}
$terms = $new_terms;
}
return $terms;
}
add_filter( ‘get_terms’, ‘get_subcategory_terms’, 10, 3 );

Fuente aquí. Tenéis que poner el número de categoría donde pongo XXX. Si dais a editar a la categoría, el ID aparece en la url.

Con esto veréis como podéis elegir qué categorías o productos de las mismas aparecen en vuestra tienda.

2 comentarios en «Ocultar categorías y productos de ciertas categorías en la tienda de WooCommerce»

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).