Existen muchos plugins que te ayudaran con esto pero también te instalaran cosas y código que no necesitas, por eso te dejo este bloque de código con el que podrás agregar un filtro por estados en tus pedidos.
Opcion 1
Descarga e instala el plugin.
Opcion 2
Agrega este bloque de codigo en tu archivo de functions. Este bloque solo agregara los filtros en tu ventana de pedidos y nada más.
No olvides que este bloque de código va en el archivo functions.php o utilizando el plugin de Code Snippets.
<?php
add_action( 'restrict_manage_posts','marcode_filtros_por_estado');
function marcode_filtros_por_estado() {
// Obtenemos el post type
global $typenow;
//Validamos que estemos en el post type de shop_order (/wp-admin/edit.php?post_type=shop_order)
if ( 'shop_order' === $typenow ) {
// obtenemos todos los estatus de las ordenes
$order_statuses = wc_get_order_statuses();
?>
<!-- Creamos nuestro select para imprimir nuestros estatus -->
<select name="_shop_order_status" id="_shop_order_status">
<option value="">
<?php esc_html_e( 'Todos los estados', 'wc-filter-orders-by-status' ); ?>
</option>
<?php
// Recorremos todos los estados e imprimimos las opciones
foreach ( $order_statuses as $key=>$statusname ) {
?>
<option value="<?php echo esc_html($key); ?>" <?php echo esc_attr( isset( $_GET['_shop_order_status'] ) ? selected(esc_html($key), $_GET['_shop_order_status'], false ) : '' ); ?>>
<?php echo esc_html($statusname); ?>
</option>
<?php
}
?>
</select>
<?php
}
}
// Añadimos un filtro para alterar las variables de filtrado que se envian al momento de dar clic en filtrar.
add_filter( 'request','marcode_filtros_por_estado_consulta');
function marcode_filtros_por_estado_consulta( $vars ) {
global $typenow;
if ( 'shop_order' === $typenow && isset( $_GET['_shop_order_status'] ) && ! empty( $_GET['_shop_order_status'] ) ) {
$vars['post_status'] = wc_clean( $_GET['_shop_order_status'] );
}
return $vars;
}