使自定义列在WooCommerce管理员订单列表中可排序

问题描述

我的自定义显示了数据,但似乎无法对其进行排序。目前,如果我按列标题进行排序,则它仅按订单日期排序,而不是按此新列中的数据排序。我特别留意“ Meta_query”数组中的“值”应该是什么-我尝试过的一切都没有用。任何帮助将不胜感激!

// ----- add column to orders that shows the booking date -----
function ec_order_items_column2($columns) {
    $new_columns = array();
    foreach($columns as $key=>$column){
        $new_columns[$key] = $columns[$key];
        if($key === 'ordered_products') {
            $new_columns['start_date'] = __('Booking Time','woo-custom-ec2');
        }
    }
    return $new_columns;

}
add_filter('manage_edit-shop_order_columns','ec_order_items_column2',99 );




function ec_order_items_column_cnt2($column) {
    global $post,$the_order;
    
    $order_id = $the_order->get_id();
    
    // Replace 'my_custom_column_key' with your desired column key
    if ( 'start_date' === $column ) {
        $display = array();
        
        // Loop through order items
        foreach ( $the_order->get_items() as $item_id => $item ) {
            // $item_id is the current Item ID

            // Get the WC_Product Object
            $product = $item->get_product();
            
            // Get custom order item Meta data 
            $Meta_value = $item->get_Meta('phive_display_time_from');
            
            $display[$item_id] = $Meta_value;
            
        }
        // Testing output
        echo implode(' | ',$Meta_value);
    }
}

add_action('manage_shop_order_posts_custom_column','ec_order_items_column_cnt2',99);



// ---- make sortable column ----

add_filter( 'manage_edit-shop_order_sortable_columns','custom_woo_admin_sort' );
function custom_woo_admin_sort( $columns )
{
    $custom = array(
        'start_date'    => '_phive_display_time_from',);
    return wp_parse_args( $custom,$columns );
}



add_action('pre_get_posts','custom_booking_orderby');
function custom_booking_orderby( $query ) {
    if ( !is_admin() ){ return; }

    $orderby = $query->get( 'orderby');
    if ('phive_display_time_from' == $orderby){
      $query->set('Meta_key','phive_display_time_from');
      $query->set( 'orderby','Meta_value' );
      $query->set( 'Meta_query',array(
        array(
              'key' => 'phive_display_time_from','value' => 'Meta_value',)
  ));
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)