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>';
});
Deja una respuesta