Ocultar productos sin categoría de la página de tienda

24 abr 2018, 18:01:05
Vistas: 20.8K
Votos: 4

Cuando WooCommerce se actualizó a la versión 3.3, se agregó la categoría de producto 'Sin categoría' y luego apareció en todas las páginas (incluida la página de la tienda WooCommerce) donde se mostraban productos. Todos los productos que no tienen al menos una categoría asignada se asignan entonces (lógicamente) a la categoría 'Sin categoría'.

Siempre usé el enfoque (posiblemente no ideal) de ocultar productos de temporada eliminando todas las categorías de estos productos cuando estaban fuera de temporada. Este nuevo cambio significó que estos productos 'ocultos' aparecieran de repente en el sitio para la venta en esta nueva categoría, lo cual no quiero en ninguna página.

He buscado en la web una forma de ocultar la categoría de producto 'Sin categoría' y descubrí que este problema está muy extendido. Se propusieron varias soluciones, incluyendo hacer que la categoría "Sin categoría" sea una subcategoría y luego ocultar todas las subcategorías u ocultar categorías usando CSS.

Ver https://wordpress.org/support/topic/uncategorized-product-category-still-showing-after-3-3-1/

Sin embargo, ninguna de estas soluciones es lo suficientemente 'limpia' o robusta.

Mi solución alternativa ha sido mostrar solo los productos que quiero que sean visibles usando el shortcode de categorías de productos (sin el ID de la categoría sin categorizar). Por ejemplo:

[product_categories ids="11, 19, 18, 14, 7, 8, 9, 10, 15, 98, 16, 17"]

pero esto no resuelve el problema en la página de la tienda (que no usa shortcodes).

Me pregunto si alguien tiene un método robusto para ocultar la categoría de producto 'Sin categoría', ya que es un problema que es actual y parece estar muy extendido en este momento.

0
Todas las respuestas a la pregunta 2
1
11

Resolví este problema basándome en el código amablemente proporcionado por rynoldos (https://gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994) de la siguiente manera:

Incluye el siguiente código en tu archivo functions.php:

/** Eliminar categorías de la tienda y otras páginas
 * en Woocommerce
 */
function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
        foreach ( $terms as $key => $term ) {
              if ( ! in_array( $term->slug, array( 'uncategorized' ) ) ) {
                $new_terms[] = $term;
              }
        }
        $terms = $new_terms;
    }
    return $terms;
}
add_filter( 'get_terms', 'wc_hide_selected_terms', 10, 3 );

Este código se aplica a la página de tienda en WooCommerce. Si deseas aplicarlo a una página diferente, reemplaza is_shop() con is_page('TU_SLUG_DE_PAGINA').

Yo también tuve que buscar bastante para encontrar una solución a este problema, pero el código anterior funciona bien para mí.

24 abr 2018 18:21:41
Comentarios

Nota para lectores fuera de EE.UU., el slug está localizado, por lo que en el Reino Unido, por ejemplo, el slug se escribe con una 's', no con una 'z'. Error difícil de detectar cuando parece que no funciona.

izb izb
8 abr 2020 11:24:11
2

He encontrado una forma sencilla de ocultar la categoría "Sin categorizar" en la página de la tienda: he cambiado su categoría padre de "Ninguna" por otra categoría que ya tenía.

Espero que te ayude :-)

Marianne

14 may 2018 19:33:40
Comentarios

¿Puedes aclarar... cómo hiciste eso?

Prajwol Onta Prajwol Onta
8 ago 2019 05:08:13

No hay una "categoría principal" - esta respuesta no tiene ningún sentido.

wickywills wickywills
6 abr 2022 17:03:30