2
votes

I have a custom column in the WooCoomerce admin order list that displays customer notes.

I only want to show the notes in the order list if the order is in a specific custom status wc-autoquote.

Is this possible to filter this out for all other order statuses?

Code for my custom column:

add_filter('manage_edit-shop_order_columns', 'add_customer_note_column_header');
function add_customer_note_column_header($columns) {
    $new_columns = (is_array($columns)) ? $columns : array();

    $new_columns['order_customer_note'] = 'Customer Notes';

    return $new_columns;
}

add_action('admin_print_styles', 'add_customer_note_column_style');
function add_customer_note_column_style() {
    $css = '.widefat .column-order_customer_note { width: 15%; }';
    wp_add_inline_style('woocommerce_admin_styles', $css);
}


add_action('manage_shop_order_posts_custom_column', 'add_customer_note_column_content');
function add_customer_note_column_content($column) {
    global $post, $the_order;

    if(empty($the_order) || $the_order->get_id() != $post->ID) {
    $the_order = wc_get_order($post->ID);
    }

    $customer_note = $the_order->get_customer_note();
    if($column == 'order_customer_note') {
    echo('<span class="order-customer-note">' . $customer_note . '</span>');
}
1

1 Answers

2
votes

You could use the following where you are going to specify the status

// If has order status
if ( $order->has_status( 'MY STATUS' ) ) {...

So you get

// Add a Header
function filter_manage_edit_shop_order_columns( $columns ) {
    // Add new column
    $columns['order_customer_note'] = __( 'Customer Notes', 'woocommerce' );

    return $columns;
}
add_filter( 'manage_edit-shop_order_columns', 'filter_manage_edit_shop_order_columns', 10, 1 );

// Populate the Column
function action_manage_shop_order_posts_custom_column( $column, $post_id ) {
    // Compare
    if ( $column == 'order_customer_note' ) {
        // Get order
        $order = wc_get_order( $post_id );
    
        // Has order status
        if ( $order->has_status( 'autoquote' ) ) {
            // Get customer note
            $customer_note = $order->get_customer_note();
            
            // NOT empty
            if ( ! empty ( $customer_note ) ) {
                echo '<span class="order-customer-note">' . $customer_note . '</span>';
            }
        }
    }
}
add_action( 'manage_shop_order_posts_custom_column' , 'action_manage_shop_order_posts_custom_column', 10, 2 );