Filtrar productos con rebaja en la administración de WooCommerce

Filtrar productos con rebaja en la administración de WooCommerce

Tabla de contenido

Si manejas una tienda en WooCommerce con muchos productos, seguro en algún momento quisiste ver rápidamente cuáles tienen descuento sin tener que revisarlos uno por uno. Aunque WooCommerce no ofrece esta opción por defecto, con un pequeño ajuste podemos añadir un filtro en el panel de administración para facilitar esta tarea.

¿Por qué filtrar productos con rebaja?

Cuando tienes una tienda con muchas referencias, identificar qué productos tienen descuento te ayuda a gestionar mejor las promociones, ajustar precios o revisar el inventario sin perder tiempo. Afortunadamente, podemos agregar un filtro fácilmente con un poco de código.

Agregando el filtro de productos rebajados

  • Para que este filtro funcione, puedes agregar el siguiente código en tu sitio de diferentes maneras:
  • En un child theme: Una buena opción si sueles personalizar tu tema y quieres mantener los cambios organizados. Aquí te explico cómo crear un child theme en Elementor.
  • Usando el plugin Code Snippets: Si prefieres no modificar archivos del tema, este plugin permite agregar código de manera fácil y segura. Aquí tienes una guía sobre cómo usarlo.
  • En un plugin personalizado de funciones para WooCommerce: Ideal si prefieres centralizar este tipo de ajustes en un solo lugar. Te explico cómo crear uno aquí.

Ahora, agreguemos el filtro con este código:

/* Filtro productos por estado de oferta en el administrador de Woocommerce*/
add_action( 'restrict_manage_posts', 'sw_filtrar_productos_rebajados', 9999 );
function sw_filtrar_productos_rebajados() {
    global $typenow;
    if ( 'product' === $typenow ) {
        $selected = isset( $_GET['sale_status'] ) ? $_GET['sale_status'] : '';
        ?>
        <select name="sale_status">
            <option value="">Filtrar rebajados</option>
            <option value="on_sale" <?php selected( $selected, 'on_sale' ); ?>>Con descuento</option>
            <option value="not_on_sale" <?php selected( $selected, 'not_on_sale' ); ?>>Sin descuento</option>
        </select>
        <?php
    }
}

add_filter( 'request', 'sw_filtrar_productos_estado_oferta' );
function sw_filtrar_productos_estado_oferta( $query_vars ) {
    global $typenow;

    if ( 'product' === $typenow && isset( $_GET['sale_status'] ) && '' !== $_GET['sale_status'] ) {
        $sale_status = sanitize_text_field( wp_unslash( $_GET['sale_status'] ) );

        if ( 'on_sale' === $sale_status ) {
            // Mostrar solo productos con precio en oferta
            $query_vars['meta_query'][] = array(
                'key'     => '_sale_price',
                'value'   => '',
                'compare' => '!=',
            );
        } elseif ( 'not_on_sale' === $sale_status ) {
            // Mostrar solo productos sin rebaja
            $query_vars['meta_query'][] = array(
                'relation' => 'OR',
                array(
                    'key'     => '_sale_price',
                    'value'   => '',
                    'compare' => '='
                ),
                array(
                    'key'     => '_sale_price',
                    'compare' => 'NOT EXISTS' // Para productos que nunca han tenido rebaja
                )
            );
        }
    }
    return $query_vars;
}

¿Cómo funciona este código?

Básicamente, estamos añadiendo una opción de filtro en el panel de administración de productos:

  1. Creamos un selector desplegable: Con la función sw_filtrar_productos_rebajados(), añadimos un filtro en la parte superior de la lista de productos en WooCommerce. Este filtro se implementa utilizando el gancho restrict_manage_posts de WordPress, que permite insertar elementos personalizados en las tablas de administración antes del botón de «Filtrar». Puedes obtener más información sobre este gancho en la documentación oficial de WordPress.
  2. Aplicamos el filtro a la consulta de productos: La función sw_filtrar_productos_estado_oferta() modifica la consulta de productos para mostrar solo aquellos con o sin descuento, según la selección realizada en el filtro.

¿Qué resultado obtendrás?

Después de agregar este código, verás un nuevo filtro en la administración de productos de WooCommerce, con estas opciones:

Rebajados: Muestra solo los productos que tienen un precio en oferta.

Filtro productos rebajados

Sin rebajar: Muestra solo los productos sin descuento activo.

Filtro productos sin rebaja

Espero que te resulte útil y te permita ahorrar tanto tiempo como a mis clientes. Si tienes alguna duda, no dudes en dejarla en los comentarios. 🚀

Picture of Sobre el autor:<br>Sebastián echeverri Jaramillo - Sebasweb

Sobre el autor:
Sebastián echeverri Jaramillo - Sebasweb

Apasionado de WordPress, diseñador web y creador de contenido. Ayudo a emprendedores y negocios a construir su presencia online con sitios web funcionales y bien optimizados. Fundador de SEBASWEB, donde comparto tutoriales, guías y recursos sobre desarrollo web.

Enamorado de mis dos hijos y mi esposa, quienes son el motor de mi vida. Me encanta la fotografía y disfruto compartir conocimientos con profesionales de los sectores en los que trabajo. Siempre explorando nuevas herramientas digitales y tendencias del mundo web.

Sígueme en YouTube para más consejos sobre WordPress y desarrollo web.

Comparte este artículo

¿Que tal te pareció este artículo?

Deja una respuesta

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

Información base sobre privacidad:
Responsable: Sebastián Echeverri (portafolio@salmon-clam-238724.hostingersite.com)
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

Recomiendo:

Sobre la afiliación…

Este blog se mantiene en parte gracias a enlaces de afiliación, que me generan una pequeña comisión sin costo adicional para ti. Solo recomiendo productos que he probado y confío. ¡Mil gracias por tu apoyo, significa muchísimo para mí!

También te podría interesar ver estos artículos

Eliminar las imágenes al borrar un producto en WooCommerce

Eliminar las imágenes al borrar un producto en WooCommerce es clave para evitar que tu biblioteca de medios...

Cómo Ocultar el Precio Fijo de Envío en WooCommerce Cuando el Pedido es Gratis

En el mundo del comercio electrónico, ofrecer una experiencia de compra fluida y atractiva es fundamental para aumentar...

Recordar la información del cliente al volver a pagar en WooCommerce

Cuando se trata de comercio electrónico, cada pequeño detalle cuenta para que la experiencia del usuario sea lo...

Cupón de descuento en la URL con Woocommerce

Implementar un cupón de descuento en la URL con WooCommerce es una estrategia sumamente efectiva para atraer más...

Desactivar los correos electrónicos al administrador de cambio de contraseña de los usuarios (WooCommerce)

Si gestionas una tienda online con WooCommerce, seguro que ya estás acostumbrado a recibir montones de correos cada...

Excluir correos en un cupón de WooCommerce con código

En WooCommerce, los cupones son una herramienta esencial para aumentar las ventas y fomentar la fidelidad de los...

Algunas plataformas con las que trabajo

Suscríbete y aprende gratis

¿Te apasiona el mundo web? Únete a la newsletter y recibe en tu correo un pequeño resumen donde hablo sobre WordPress, diseño y desarrollo web.