You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WooCommerce后台订单列表添加代发货列及填充对应值

填充WooCommerce订单列表Drop Shipping列的内容

嘿,你已经成功搞定自定义列的添加啦!接下来只需要用manage_shop_order_posts_custom_column过滤器,就能给这列填上对应的值。下面给你几种常见场景的实现方案,按需选用就行:

基础实现:基于自定义订单元数据

假设你是用自定义字段_drop_shipping_status来存储订单的代发货状态,直接用这段代码:

// 填充Drop Shipping列的内容
add_action( 'manage_shop_order_posts_custom_column', 'custom_shop_order_column_content', 10, 2 );
function custom_shop_order_column_content( $column, $post_id ) {
    // 只处理我们的Drop Shipping列
    if ( $column === 'drop_shipping' ) {
        // 获取当前订单对象
        $order = wc_get_order( $post_id );
        
        // 读取存储的代发货状态
        $drop_shipping_status = $order->get_meta( '_drop_shipping_status', true );
        
        // 根据状态输出带样式的内容
        if ( ! empty( $drop_shipping_status ) ) {
            echo '<span style="color: green; font-weight: bold;">' . ucfirst( $drop_shipping_status ) . '</span>';
        } else {
            echo '<span style="color: #999;">' . __( 'Not Applicable', 'twentyseventeen' ) . '</span>';
        }
    }
}

进阶场景:根据订单商品自动判断代发货

如果你的代发货状态是由商品属性决定的(比如商品标记了_is_drop_shipping为yes),可以用这段代码自动识别:

add_action( 'manage_shop_order_posts_custom_column', 'custom_shop_order_column_content', 10, 2 );
function custom_shop_order_column_content( $column, $post_id ) {
    if ( $column === 'drop_shipping' ) {
        $order = wc_get_order( $post_id );
        $is_drop_shipping = false;
        
        // 遍历订单里的所有商品,检查是否有代发货商品
        foreach ( $order->get_items() as $item ) {
            $product = $item->get_product();
            if ( $product && $product->get_meta( '_is_drop_shipping', true ) === 'yes' ) {
                $is_drop_shipping = true;
                break;
            }
        }
        
        // 输出判断结果
        if ( $is_drop_shipping ) {
            echo '<span style="color: #2ecc71;">' . __( 'Yes', 'twentyseventeen' ) . '</span>';
        } else {
            echo '<span style="color: #e74c3c;">' . __( 'No', 'twentyseventeen' ) . '</span>';
        }
    }
}

可选优化:让列支持排序

如果你想让这个Drop Shipping列能点击排序,加上下面这段代码:

// 标记Drop Shipping列为可排序
add_filter( 'manage_edit-shop_order_sortable_columns', 'custom_shop_order_sortable_columns' );
function custom_shop_order_sortable_columns( $columns ) {
    $columns['drop_shipping'] = 'drop_shipping';
    return $columns;
}

// 处理排序逻辑
add_action( 'pre_get_posts', 'custom_shop_order_sortable_column_logic' );
function custom_shop_order_sortable_column_logic( $query ) {
    if ( ! is_admin() || ! $query->is_main_query() || get_current_screen()->id !== 'edit-shop_order' ) {
        return;
    }
    
    $orderby = $query->get( 'orderby' );
    if ( $orderby === 'drop_shipping' ) {
        // 这里的_meta_key要和你存储状态的字段名一致
        $query->set( 'meta_key', '_drop_shipping_status' );
        $query->set( 'orderby', 'meta_value' );
    }
}

小提醒

  • 记得把代码里的自定义字段名(比如_drop_shipping_status)换成你实际在用的键
  • 文本翻译用的是你主题的文本域twentyseventeen,如果换了主题要同步修改
  • 样式可以根据后台风格调整,或者用后台自定义CSS统一设置

内容的提问来源于stack exchange,提问作者JH_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:03:13