Cómo ocultar productos agotados en WooCommerce

Aunque no es una estrategia que yo suela recomendar, pues muchas veces son precisamente los productos agotados los que dan una sensación de carencia que anima a comprar (cosas de la mercadotecnia), en ocasiones es interesante ocultar productos agotados, sin existencias, en una tienda online.

Ocultar productos agotados en WooCommerce es muy sencillo a priori.

Solo tienes que ir a WooCommerce > Ajustes > Productos > Inventario y seleccionar la casilla llamada «Ocultar en el catálogo los artículos agotados«.

Pero, si quieres tener más control sobre cómo ocultar productos agotados, puedes usar este código en tu plugin de personalizaciones o en el archivo functions.php del tema activo:

add_action( 'pre_get_posts', 'ayudawp_ocultar_agotados' );

function ayudawp_ocultar_agotados( $q ) {

    if ( ! $q->is_main_query() || is_admin() ) {
        return;
    }

    if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {

        $tax_query = (array) $q->get('tax_query');

        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field' => 'term_taxonomy_id',
            'terms' => array( $outofstock_term->term_taxonomy_id ),
            'operator' => 'NOT IN'
        );

        $q->set( 'tax_query', $tax_query );

    }

    remove_action( 'pre_get_posts', 'ayudawp_ocultar_agotados' );

}

La diferencia es que con el código se ocultan los productos agotados que tengan la taxonomía outofstock, que afecta también a variaciones.

(6 votos, promedio: 4.5) Valora este artículo para ayudar a mejorar la calidad del blog

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

6 comentarios en “Cómo ocultar productos agotados en WooCommerce”

  1. Muchas gracias por el truco, yo programo un poco sobre WordPress, y de ese código me llama la atención la última lína ¿por qué pones el remove_action al final de la función? Gracias de nuevo

  2. Hola, Fernando. Una pregunta: ¿y si quiero mostrar algunos productos de los que están agotados, aunque los haya ocultado usando tanto el selector de los ajustes de Woocommerce o el código? Oculto los productos agotados, ok, pero quiero que algunos de ellos aparezcan visibles porque tengo la opción de que alguien se añada a una lista de espera para avisarle por email cuando se reponga… ¿Es posible hacer esto? Estoy buscando como un loco y la verdad es que no encuentro nada 🙁

    1. Aunque un producto esté oculto en la tienda, con su URL siempre puedes mostrárselo a cualquiera, y los buscadores también los encuentran.

      Lo de avisar por correo cuando haya stock, si permites reservas WooCommerce lo hace solito

  3. Hola Buenos días y Feliz domingo.
    Saludos, necesito una ayuda.
    La opción de ocultar productos que ofrece woocomemerce, efectivamente oculta los productos, sin embargo, al tildar esa opción también oculta productos que tengo disponible y no entiendo el porqué.
    Quisiera saber que otra opción pudiera usar para ocultar esos productos agotados sin que afecte los que están disponibles.

    Otra cosa, es que quedan espacios en blanco donde estaban los productos agotados y la página de inicio queda desordenada.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido