WooCommerce: Añadir filtrado por productos destacados

Ayer sin ir más lejos me preguntó Rafa, que me asalta de vez en cuando con preguntas de estas raras, que si se podía filtrar por productos destacados en los listados de WooCommerce, y tras hacer unas pruebas con slugs me di cuenta de que no.

Es verdad que yo nunca lo había necesitado ni ningún cliente me lo había pedido, pero la realidad es que es algo que no se puede hacer.

Pero claro, es que WooCommerce es WordPress, de código abierto, y en realidad sí que se puede hacer de todo, solo hay que dar con el código adecuado, y el código existía.

Así que si quieres, por el motivo que sea, añadir un desplegable para poder filtrar productos para mostrar solo los destacados, debes añadir el siguiente código a tu plugin de personalizaciones para WooCommerce, o en su defecto al final del archivo functions.php del tema activo:

/* Añadir desplegable para filtrar productos destacados */
add_action('restrict_manage_posts', 'featured_products_sorting');
function featured_products_sorting() {
    global $typenow;
    $post_type = 'product'; // puedes cambiar esto si es para otro tipo de contenido
    $taxonomy  = 'product_visibility'; // cambiar a tu taxonomía
    if ($typenow == $post_type) {
        $selected      = isset($_GET[$taxonomy]) ? $_GET[$taxonomy] : '';
        $info_taxonomy = get_taxonomy($taxonomy);
        wp_dropdown_categories(array(
            'show_option_all' => __("Mostrar todas las {$info_taxonomy->label}"),
            'taxonomy'        => $taxonomy,
            'name'            => $taxonomy,
            'orderby'         => 'name',
            'selected'        => $selected,
            'show_count'      => true,
            'hide_empty'      => true,
        ));
    };
}
add_filter('parse_query', 'featured_products_sorting_query');
function featured_products_sorting_query($query) {
    global $pagenow;
    $post_type = 'product'; // puedes cambiar esto si es para otro tipo de contenido
    $taxonomy  = 'product_visibility'; // cambiar a tu taxonomía
    $q_vars    = &$query->query_vars;
    if ( $pagenow == 'edit.php' && isset($q_vars['post_type']) && $q_vars['post_type'] == $post_type && isset($q_vars[$taxonomy]) && is_numeric($q_vars[$taxonomy]) && $q_vars[$taxonomy] != 0 ) {
        $term = get_term_by('id', $q_vars[$taxonomy], $taxonomy);
        $q_vars[$taxonomy] = $term->slug;
    }
}

Si te pasas por el listado de productos verás un nuevo desplegable…

Dónde podrás filtrar por productos destacados y que se muestren solo estos:

Así que aquí lo tienes, y como ves, claro que se puede.

La entrada WooCommerce: Añadir filtrado por productos destacados la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

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