¿Te ha desaparecido una columna en el listado de pedidos de WooCommerce?
¿Has notado que después de una actualización, tu columna personalizada en el listado de pedidos de WooCommerce ha desaparecido? No te preocupes, no eres el único. Este problema es común entre los usuarios que han migrado al nuevo sistema HPOS (High Performance Order Storage) de WooCommerce.
Anteriormente, para agregar una columna personalizada en la página de administración de pedidos, utilizábamos los hooks: manage_edit-shop_order_columns y manage_shop_order_posts_custom_column de la siguiente manera:
add_filter( 'manage_edit-shop_order_columns', 'custom_new_order_column', 10 );
add_action( 'manage_shop_order_posts_custom_column', 'custom_orders_list_column_content', 10, 2 );Sin embargo, con la introducción de HPOS, estos hooks ya no funcionan como antes. A continuación, te explicamos cómo actualizar tu código para que vuelva a funcionar y sea compatible con HPOS.
¿Por qué ha ocurrido este cambio?
WooCommerce ha integrado HPOS para optimizar el rendimiento y la escalabilidad de las tiendas virtuales. Este cambio conlleva una reorganización de la gestión interna de los pedidos, lo que repercute en los hooks y filtros previamente empleados para personalizar la gestión de pedidos.
Solución: Actualizar los hooks para compatibilidad con HPOS
Para que tu columna personalizada vuelva a aparecer en el listado de pedidos, debes actualizar los hooks de tu código por manage_woocommerce_page_wc-orders_columns y manage_woocommerce_page_wc-orders_custom_column de la siguiente manera:
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'custom_new_order_column', 99 );
add_action( 'manage_woocommerce_page_wc-orders_custom_column', 'custom_orders_list_column_content', 99, 2 );Si también necesitas añadir campos personalizados en el proceso de pago de WooCommerce, te recomendamos leer cómo crear campos personalizados en el checkout de WooCommerce compatibles con HPOS.
Código actualizado para agregar una columna personalizada compatible con HPOS
// Añade una nueva columna en el listado de pedidos
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'custom_new_order_column', 99 );
function custom_new_order_column( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;
// Insertar nuestra columna personalizada después de la columna del total del pedido
if ( 'order_total' === $column_name ) {
$new_columns['prefix_custom_column'] = __( 'Mi Columna Personalizada', 'text-domain' );
}
}
return $new_columns;
}
// Rellena el contenido de la nueva columna personalizada
add_action( 'manage_woocommerce_page_wc-orders_custom_column', 'custom_orders_list_column_content', 99, 2 );
function custom_orders_list_column_content( $column, $order_id ) {
if ( 'prefix_custom_column' === $column ) {
// Aquí agregas el contenido que quieres mostrar en tu columna
$order = wc_get_order( $order_id );
// Por ejemplo, mostrar una meta clave personalizada del pedido
$mi_meta = $order->get_meta( '_mi_meta_dato_personalizado' );
echo esc_html( $mi_meta );
}
}
¿Qué hace este código?
- Añade una nueva columna al listado de pedidos: Utilizamos el filtro
manage_woocommerce_page_wc-orders_columnspara modificar las columnas que se muestran en la página de pedidos. Creamos un nuevo array$new_columnsy añadimos nuestra columna personalizada'bk_custom_column'después de la columna del total del pedido. - Rellena el contenido de la nueva columna: Usamos la acción
manage_woocommerce_page_wc-orders_custom_columnpara definir el contenido que aparecerá en nuestra columna personalizada. Aquí, obtenemos el pedido utilizandowc_get_order( $order_id )y luego extraemos un meta dato personalizado con$order->get_meta( '_mi_meta_dato_personalizado' ). - Seguridad y buenas prácticas: Es importante utilizar funciones como
esc_html()para escapar el contenido y evitar problemas de seguridad.
Conclusión
Es fundamental actualizar tu código para asegurar la compatibilidad con HPOS y preservar las funciones personalizadas de tu tienda WooCommerce. Al seguir estos pasos, podrás reintegrar sin inconvenientes tus columnas personalizadas en el listado de pedidos.
Si tienes alguna duda o necesitas ayuda adicional, no dudes en dejar un comentario.
¡Estamos aquí para ayudarte!



