Woo order add sortable exist some products


/**
 *    Add Sortable
 * 
 */

 // Add a custom column to the WooCommerce orders table
function custom_order_column_head($columns) {
    $new_columns = array();

    foreach ($columns as $key => $value) {
        $new_columns[$key] = $value;
        if ($key === 'order_status') {
            $new_columns['contains_category'] = '訂單類別';
        }
    }

    return $new_columns;
}
add_filter('manage_edit-shop_order_columns', 'custom_order_column_head', 20);

// Populate the custom column with data
function custom_order_column_content($column, $post_id) {
    if ($column === 'contains_category') {
        $order = wc_get_order($post_id);
        $contains_category = false;

        // Check if the order contains products from a specific category
        foreach ($order->get_items() as $item) {
            $product = $item->get_product();
            $categories = get_the_terms($product->get_id(), 'product_cat');

            foreach ($categories as $category) {
                // Replace 'your-category-slug' with the slug of the category you want to check
                if ($category->slug === 'staff') {
                    $contains_category = true;
                    break;
                }
            }
        }

        echo $contains_category ? '員購訂單' : '';
    }
}
add_action('manage_shop_order_posts_custom_column', 'custom_order_column_content', 10, 2);

// Make the custom column sortable
function custom_order_column_sortable($columns) {
    $columns['contains_category'] = 'contains_category';
    return $columns;
}
add_filter('manage_edit-shop_order_sortable_columns', 'custom_order_column_sortable');

// Handle sorting logic for the custom column
function custom_order_column_orderby($vars) {
    if (isset($vars['orderby']) && 'contains_category' === $vars['orderby']) {
        $vars = array_merge($vars, array(
            'meta_key' => '_contains_category', // Replace with your actual meta key
            'orderby' => 'meta_value'
        ));
    }

    return $vars;
}
add_filter('request', 'custom_order_column_orderby');