Mostrar categorías de productos en una nueva columna en la tabla de pedidos “Mi cuenta” de WooCommerce

2 minutos de lectura

Mostrar categorias de productos en una nueva columna en la
Flor Ian

Quiero agregar una columna personalizada para mostrar las categorías de productos en la tabla de historial de pedidos en wooCommerce

Encontré cómo agregar una columna personalizada, pero parece que no puedo mostrar el producto de la taxonomía vinculado al pedido en esta columna.

Para este ejemplo, solo tenía 1 producto, pero si puedo mostrar más de un impuesto, será mejor.

Esto es lo que encontré (de: skyverge blog) para agregar una nueva columna:

/**
 * Adds a new column to the "My Orders" table in the account.
 *
 * @param string[] $columns the columns in the orders table
 * @return string[] updated columns
 */
function sv_wc_add_my_account_orders_column( $columns ) {

    $new_columns = array();

    foreach ( $columns as $key => $name ) {

        $new_columns[ $key ] = $name;

        // add ship-to after order status column
        if ( 'order-number' === $key ) {
            $new_columns['order-ship-to'] = __( 'Catégorie', 'textdomain' );
        }
    }

    return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );

Cualquier sugerencia es bienvenida

Mostrar categorias de productos en una nueva columna en la
7uc1f3r

Sin embargo, con su código actual puede agregar una columna entre las columnas existentes:

  • los woocommerce_my_account_my_orders_columns El filtro está en desuso desde WooCommerce 2.6.0. y reemplazado con woocommerce_account_orders_columns
  • Falta la parte para agregar contenido en la columna

Para agregar contenido puedes usar el woocommerce_my_account_my_orders_column_{$column_id} gancho, donde $column_id necesita ser reemplazado por order-category en este caso particular

Entonces obtienes:

// Adds a new column to the "My Orders" table in the account.
function filter_woocommerce_account_orders_columns( $columns ) {
    $new_columns = array();

    foreach ( $columns as $key => $column ) {

        $new_columns[ $key ] = $column;

        // Add after order number column
        if ( $key === 'order-number' ) {
            $new_columns['order-category'] = __( 'Catégorie', 'woocommerce' );
        }
    }

    return $new_columns;
}
add_filter( 'woocommerce_account_orders_columns', 'filter_woocommerce_account_orders_columns', 10, 1 );

// Adds data to the custom "order-category" column in "My Account > Orders"
function filter_woocommerce_my_account_my_orders_column_order( $order ) {
    // Initialize
    $categories = array();
    
    // Loop through order items
    foreach ( $order->get_items() as $item_key => $item ) {
        // Get product ID
        $product_id = $item->get_product_id();
        
        // Get terms
        $term_names = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'names' ) );
        
        // Loop through term names
        foreach ( $term_names as $term_name ) { 
            // NOT in array
            if ( ! in_array( $term_name, $categories, true ) ) {
                // Push one or more elements onto the end of array
                array_push( $categories, $term_name );
            }
        }
    }
    
    // NOT empty
    if ( ! empty( $categories ) ) {
        echo implode( ', ', $categories );
    }
}
add_action( 'woocommerce_my_account_my_orders_column_order-category', 'filter_woocommerce_my_account_my_orders_column_order', 10, 1 );

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad