Search code examples
wordpresswoocommercewp-admin

Woocommerce_shop_order_search_fields search order by meta field not working HPOS


Before switching to HPOS we had the following code in our functions.php to make it possible to search by a meta field in the woocommerce admin -> orders section.

function custom_woocommerce_shop_order_search_fields( $search_fields ) {
    $search_fields[] = 'tracking_number';

    return $search_fields;
}
add_filter( 'woocommerce_shop_order_search_fields', 'custom_woocommerce_shop_order_search_fields' );

The meta data inside the order is "tracking_number".

After switching to HPOS this doesn't seem to work anymore. I can't seem to find what has changed and why it isn't working anymore. What is the correct way to do this with HPOS?


Solution

  • According to provided code, to get "order search by meta field functionality" working, when woocommerce High-Performance Order Storage (HPOS) is enabled, the filter "woocommerce_shop_order_search_fields" can be replaced by filter "woocommerce_order_table_search_query_meta_keys". The updated code is as follows:

    function custom_woocommerce_shop_order_search_fields( $search_fields ) {
        $search_fields[] = 'tracking_number';
    
        return $search_fields;
    }
    add_filter( 'woocommerce_order_table_search_query_meta_keys', 'custom_woocommerce_shop_order_search_fields' );