Buscar
La perseverancia de un programador ante un desafío El programador se encuentra sentado en una silla frente a una computadora con la pantalla iluminada por código. La habitación está oscura, lo que indica que es de noche. El programador parece estar completamente absorto en su trabajo, sin prestar atención a nada más.

Joan Torres

Web Developer & Designer

Cómo agregar un campo de filtro personalizado y una columna personalizada en la página de pedidos de administración de WooCommerce

Un individuo concentrado y absorto en su trabajo, escribiendo diligentemente en una computadora portátil moderna. La pantalla muestra una interfaz de software CRM, exhibiendo un sistema de gestión de relaciones con el cliente en acción. La imagen transmite de manera efectiva el concepto de aprovechar la tecnología para optimizar las interacciones con los clientes, mejorar las relaciones con los mismos y fomentar el crecimiento empresarial.

Introdución

Si tu tienda en línea no tiene campos de entrada de producto integrados (como Seleccionar, Selector de fecha, Texto y otros) en la página del producto para capturar las selecciones del usuario, es posible que los administradores deban ingresar manualmente algunos valores personalizados en un campo personalizado presente en la página de edición de pedidos.

Estas selecciones luego se guardan como campos meta personalizados en la página de detalles del pedido de WooCommerce.
Por ejemplo, en una tienda de muebles, puedes crear un campo personalizado llamado «estilo» para guardar valores personalizados como Moderno, Rústico o Clásico para cada pedido.

El siguiente fragmento de código agrega una columna personalizada llamada «Estilo» y un campo de filtro personalizado a la página de pedidos de WooCommerce, lo que permite a los propietarios de tiendas filtrar los pedidos en función de estos valores específicos. Los valores ingresados se guardan como metadatos y los administradores pueden filtrar los pedidos mediante un menú desplegable. ¡Veamos cómo se logra esto!

Solución

agrega un campo de filtro personalizado y una columna personalizada en WooCommerce > Página de pedidos de administración Este fragmento de código te ayudará a mejorar la funcionalidad de la página de pedidos de WooCommerce mediante la creación de un campo de filtro personalizado y la incorporación de una columna personalizada, lo que permite a los usuarios ver, filtrar y buscar pedidos en función de los valores de metadatos personalizados seleccionados.

El siguiente fragmento de código también es compatible con la tabla de pedidos basada en HPOS.
				
					```php
// Agregar la columna Estilo a la página de Pedidos en el administrador de WooCommerce
function ts_add_style_column( $columns ) {  
    $columns['estilo'] = __( 'Estilo', 'woocommerce' );
    return $columns;
}
add_filter( 'manage_edit-shop_order_columns', 'ts_add_style_column' );

// Mostrar el valor de Estilo en la columna Estilo
function ts_display_style_column( $column, $post_id ) {  
    if ( $column == 'estilo' ) {  
        // Obtener el objeto de pedido de WooCommerce
        $order = wc_get_order( $post_id );
        // Reemplace 'style' con la clave meta real utilizada para el campo Estilo
        $style_value = $order->get_meta( 'estilo' );
        echo $style_value;
    }
}
add_action( 'manage_shop_order_posts_custom_column', 'ts_display_style_column', 10, 2 );

// Agregar un menú desplegable personalizado para filtrar por estilo
function ts_add_style_filter( $post_type ) {  
    if ( 'shop_order' === $post_type ) {  
        $domain = 'woocommerce';
        $styles = array( __( 'Moderno', $domain ), __( 'Rústico', $domain ), __( 'Clásico', $domain ) );
        $selected_value = isset( $_GET['filter_style'] ) ? sanitize_title( $_GET['filter_style'] ) : '';  
        echo '<select name="filter_style">';
        echo '<option value="" ' . selected( '', $selected_value, false ) . '>Filtrar por estilo</option>';
        foreach ( $styles as $value ) {  
            echo '<option value="' . sanitize_title( $value ) . '" ' . selected( sanitize_title( $value ), $selected_value, false ) . '>' . $value . '</option>';
        }
        echo '</select>';
    }
}
add_action( 'restrict_manage_posts', 'ts_add_style_filter' );

// Filtrar pedidos por estilo
function ts_filter_orders_by_style( $vars ) {  
    if ( isset( $_GET['filter_style'] ) && ! empty( $_GET['filter_style'] ) ) {   
        $selected_style_value = sanitize_text_field( $_GET['filter_style'] );
        $vars['meta_query'][] = array(
            'key'      => 'estilo', 
            'value'    => $selected_style_value,
        );
    }
    return $vars;
}
add_filter( 'request', 'ts_filter_orders_by_style' );

// Añadir estilo a los campos de búsqueda de la tabla Pedidos
function custom_woocommerce_shop_order_search_fields( $search_fields ) {  
    $search_fields[] = 'estilo';
    return $search_fields;
}
add_filter( 'woocommerce_shop_order_search_fields', 'custom_woocommerce_shop_order_search_fields' );
```

				
			

Producción

Supongamos que has creado valores de metacampo personalizados como «Moderno», «Rústico» y «Clásico» para identificar el tipo de mueble asociado con cada pedido. Se agrega un campo de filtro personalizado llamado «Filtrar por estilo» y una nueva columna llamada «Estilo» a la página Pedidos de WooCommerce en el administrador de WordPress. Esta columna muestra los valores del campo meta personalizado, específicamente el campo «Estilo», para cada pedido.

Cuando se selecciona cualquiera de los valores como ‘Moderno’ en el campo de filtro, el código recuperará pedidos específicos para el valor seleccionado.

Si has integrado pasarelas de pago de terceros como PayPal o Stripe en tu tienda WooCommerce, también puedes agregar un campo de filtro para la pasarela de pago en la página de pedidos de WooCommerce, lo que te ayudará a ahorrar tiempo al filtrar rápidamente pedidos de transacciones de pago específicas.



Contenido Relacionado