Inicio / Blog / ¿Cómo añadir columnas a los pedidos en WooCommerce compatible con HPOS?

¿Cómo añadir columnas a los pedidos en WooCommerce compatible con HPOS?

Luis Ruiz

Escrito por Luis Ruiz el

En este artículo, aprenderemos cómo añadir una columna personalizada a la página de gestión de pedidos de WooCommerce, asegurando la compatibilidad con HPOS (Almacenamiento de Pedidos de Alto Rendimiento).

 

Si has observado que tu columna personalizada desapareció después de una actualización, te mostraremos las razones de este problema y cómo resolverlo de forma detallada.

Ilustración del artículo sobre cómo añadir columnas personalizadas a los pedidos en WooCommerce compatible con HPOS

¿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_columns para modificar las columnas que se muestran en la página de pedidos. Creamos un nuevo array $new_columns y 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_column para definir el contenido que aparecerá en nuestra columna personalizada. Aquí, obtenemos el pedido utilizando wc_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!

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Cookies de terceros

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.