logooneasesoria4

¿Necesita una consulta gratuita?

Cómo permitir a los clientes que filtren sus pedidos por su estado @ Ayuda WordPress

Cuando tienes una tienda en línea y los clientes van acumulando pedidos, debería ser prácticamente obligatorio que les permitas ordenar los pedidos, al menos por su estado, para que no tengan que navegar sin orden ni criterio, lo considero un básico ¿no te parece?

Pues resulta que con WooCommerce no es posible, salen ahí todos, a lo loco…

pedidos cuenta cliente woocommerce sin filtrado

No como para los administradores y gestores de la tienda, que sí pueden filtrar los pedidos.

filtrar pedidos admin woocommerce

¿Estamos de acuerdo en que no nos mataría que los clientes también pudiesen filtrar sus pedidos como nosotros, por el estado del pedido?

Mira qué fácil, solo tienes que copiar y pegar este código:

/* Filtrado por estado del pedido en cuenta de cliente */
// 1. Obtener parametros de URL
add_filter( 'woocommerce_my_account_my_orders_query', 'ayudawp_micuenta_filtrar_estado_pedidos' );
function ayudawp_micuenta_filtrar_estado_pedidos( $args ) {
if ( isset( $_GET['status'] ) && ! empty( $_GET['status'] ) ) {
$args['status'] = array( $_GET['status'] );
}
return $args;
}
// 2. Mostrar la lista de filtros
add_action( 'woocommerce_before_account_orders', 'ayudawp_mostrar_filtros_micuenta' );
function ayudawp_mostrar_filtros_micuenta() {
echo '<p>Filtrar por: ';
$customer_orders = 0;
foreach ( wc_get_order_statuses() as $slug => $name ) {
$status_orders = count( wc_get_orders( [ 'status' => $slug, 'customer' => get_current_user_id(), 'limit' => -1 ] ) );
if ( $status_orders > 0 ) {
if ( isset( $_GET['status'] ) && ! empty( $_GET['status'] ) && $_GET['status'] == $slug ) { 
echo '<b>' . $name . ' (' . $status_orders . ')</b><span class="delimit"> - </span>';
} else echo '<a href="' . add_query_arg( 'status', $slug, wc_get_endpoint_url( 'orders' ) ) . '">' . $name . ' (' . $status_orders . ')</a><span class="delimit"> - </span>';
}
$customer_orders += $status_orders;
}
if ( isset( $_GET['status'] ) && ! empty( $_GET['status'] ) ) {
echo '<a href="' . remove_query_arg( 'status' ) . '">Todos (' . $customer_orders . ')</a>';
} else echo '<b>Todos (' . $customer_orders . ')</b>';
echo '</p>';
}
// 3. Ajuste de paginacion
add_filter( 'woocommerce_get_endpoint_url', 'ayudawp_ajuste_paginar_filtrado_estado_micuenta', 9999, 4 );
function ayudawp_ajuste_paginar_filtrado_estado_micuenta( $url, $endpoint, $value, $permalink ) {
if ( 'orders' == $endpoint && isset( $_GET['status'] ) && ! empty( $_GET['status'] ) ) {
return add_query_arg( 'status', $_GET['status'], $url );
}
return $url;
}

Y ahora el cliente ya podrá filtrar sus pedidos por el estado de los mismos.

pedidos cuenta cliente woocommerce con filtros

¿No te parece que es algo que deberíamos ofrecer a nuestros clientes en todas las tiendas online?

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

¿Te gustó este artículo?
23 de noviembre de 2023

RECIBE

GRATIS

Recursos para tu web GRATIS.

En agradecimiento por haber leido nuestro blog te ofrecemos algúnos plugins, temas y asesoría para el desarrollo de tu sitio web.
Envía correo y espera respuesta...Gracias..!
baneranunciopluginsbest
Publicaciones Relacionadas
Abrir chat
One Asesoría
Hola 👋
¿Necesita cotizar una página o tienda online, cómo podemos ayudarle..?