skip to Main Content

I am trying to add a column that displays the ‘Ship to’ company name to the WooCommerce > my account > orders page.

So far the code below adds a column but how do I get the ‘Ship to’ data to show, where am I’m I getting it wrong?

 // Add new column(s) to the "My Orders" table in the account.
function filter_woocommerce_account_orders_columns( $columns ) {
    $columns['custom-column'] = __( 'New Column 1', 'woocommerce' );
    return $columns;
}
add_filter( 'woocommerce_account_orders_columns', 'filter_woocommerce_account_orders_columns', 10, 1 );

 // Adds data to the custom column in "My Account > Orders"
function filter_woocommerce_my_account_my_orders_shipping_company_column( $order ) {    
    echo 'New Column 1';
}
add_action( 'woocommerce_my_account_my_orders_column_custom-column', 'filter_woocommerce_my_account_my_orders_column_custom_column', 10, 1 );

 $order_shipping_company = $order_data['shipping']['company'];

2

Answers


  1. Chosen as BEST ANSWER

    I discovered it : FINALLY !!

    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-status' === $key ) {
                $new_columns['order-ship-to'] = __( 'Ship to', 'textdomain' );
            }
        }
    
        return $new_columns;
    }
    add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );
    
    
    /**
     * Adds data to the custom "ship to" column in "My Account > Orders".
     *
     * @param WC_Order $order the order object for the row
     */
    function sv_wc_my_orders_ship_to_column( $order ) {
    
        $formatted_shipping = $order->get_formatted_shipping_address();
    
        echo ! empty( $formatted_shipping ) ? $formatted_shipping : '–';
    }
    add_action( 'woocommerce_my_account_my_orders_column_order-ship-to', 'sv_wc_my_orders_ship_to_column' );


  2. You can use woocommerce_my_account_my_orders_query filter hook. You have to pass a number of orders you want to display to numberposts param. try below code.

    function modify_numberposts_woocommerce_my_account_my_orders_query( $customer_orders_args ){
        $customer_orders_args['numberposts'] = 20;
        return $customer_orders_args;
    }
    
    add_filter( 'woocommerce_my_account_my_orders_query', 'modify_numberposts_woocommerce_my_account_my_orders_query' );
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search