Filtrar pedidos de WooCommerce por Usuarios registrados

LucusHost, el mejor hosting

Gestionas muchos pedidos en tu tienda WooCommerce y te cuesta encontrar rápidamente a un cliente? Aunque WooCommerce ofrece un buscador básico por ID o email, muchas veces necesitamos buscar pedidos por nombre o apellido del cliente, de forma rápida y flexible. En este artículo te muestro cómo hacerlo con unas pocas líneas de código, sin plugins y con soporte para móviles.

Implementarlo mediante código

// Añadir campo de búsqueda personalizada en el admin de pedidos
add_action('restrict_manage_posts', 'agregar_filtro_nombre_cliente_en_pedidos');
function agregar_filtro_nombre_cliente_en_pedidos() {
    global $typenow;

    if ($typenow === 'shop_order') {
        $valor = isset($_GET['buscar_por_nombre_cliente']) ? sanitize_text_field($_GET['buscar_por_nombre_cliente']) : '';
        echo '<input type="search" name="buscar_por_nombre_cliente" placeholder="Buscar por nombre de cliente" value="' . esc_attr($valor) . '" style="max-width:300px;width:100%;margin-left:10px;" />';
    }
}

// Modificar la query para que filtre por nombre del cliente
add_filter('request', 'filtrar_pedidos_por_nombre_cliente');
function filtrar_pedidos_por_nombre_cliente($vars) {
    global $typenow;

    if ($typenow === 'shop_order' && !empty($_GET['buscar_por_nombre_cliente'])) {
        $nombre = sanitize_text_field($_GET['buscar_por_nombre_cliente']);

        $vars['meta_query'][] = [
            'relation' => 'OR',
            [
                'key'     => '_billing_first_name',
                'value'   => $nombre,
                'compare' => 'LIKE'
            ],
            [
                'key'     => '_billing_last_name',
                'value'   => $nombre,
                'compare' => 'LIKE'
            ]
        ];
    }

    return $vars;
}

add_action('admin_head', function () {
    echo '<style>
        @media (max-width: 782px) {
            input[name="buscar_por_nombre_cliente"] {
                display: block !important;
                width: 100% !important;
                margin-top: 10px !important;
            }

            .wrap form#posts-filter {
                display: block !important;
            }

            .tablenav.top .alignleft.actions {
                display: block !important;
                width: 100%;
            }
        }
    </style>';
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)

Especialista en Comercio electrónico con Woocommerce. Te ayudo a crear, gestionar y publicitar tu Ecommerce en función de tu sector y público objetivo. Puedes encontrarme en Diegol.top

¿Necesitas ayuda con este tutorial? Mándame un correo y te resuelvo todas las dudas!


Ver servicios Curso de WooCommerce

También puedes realizar una donacion para seguir apoyando la salida de nuevos tutoriales y actualizaciones

Reader Interactions

Deja una respuesta

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