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

如何高亮WooCommerce后台订单列表中的自提订单?

解决WooCommerce后台自提订单高亮问题

问题根源

你之前的代码存在两个核心问题:

  1. $order->get_shipping_method()返回的是配送方式的显示名称(比如可能是“Local Pickup”,带空格),直接作为CSS类会被解析成多个独立类,无法和.local_pickup规则匹配。
  2. 错误使用了获取商品配送类的代码,这和订单的配送方式是完全不同的概念,导致订单显示异常。

修改后的完整代码

// 为自提订单添加自定义CSS类
function add_local_pickup_order_class( $classes, $class, $post_id ) {
    // 仅在后台订单列表页面生效
    if ( ! is_admin() ) return $classes;
    
    $current_screen = get_current_screen();
    if ( $current_screen->id !== 'edit-shop_order' ) return $classes;

    $order = wc_get_order( $post_id );
    if ( ! is_a( $order, 'WC_Order' ) ) return $classes;

    // 获取订单的配送方式实例(订单通常只有一个配送方式)
    $shipping_methods = $order->get_shipping_methods();
    if ( empty( $shipping_methods ) ) return $classes;

    foreach ( $shipping_methods as $shipping_method ) {
        // 获取配送方式的唯一标识slug(自提默认slug为local_pickup)
        $method_slug = $shipping_method->get_method_id();
        if ( $method_slug === 'local_pickup' ) {
            $classes[] = 'order-local-pickup';
            break; // 找到目标配送方式后跳出循环
        }
    }

    return $classes;
}
add_filter( 'post_class', 'add_local_pickup_order_class', 10, 3 );

// 添加后台高亮CSS
function highlight_local_pickup_orders() {
    $current_screen = get_current_screen();
    if ( $current_screen->id !== 'edit-shop_order' ) return;
?>
<style>
    .type-shop_order.order-local-pickup {
        background-color: #e9a5a5 !important;
    }
    /* 可选:鼠标悬停时保持高亮效果 */
    .type-shop_order.order-local-pickup:hover {
        background-color: #e58888 !important;
    }
</style>
<?php
}
add_action( 'admin_head', 'highlight_local_pickup_orders' );

代码说明

  • 精准获取配送方式标识:用$shipping_method->get_method_id()拿到配送方式的唯一slug(自提默认是local_pickup),避免了名称带空格的问题。
  • 自定义明确类名:添加order-local-pickup作为专属类,和CSS规则一一对应,避免与其他类冲突。
  • 多层安全校验:确保代码只在后台订单列表页面执行,不会影响其他功能。

注意事项

  • 不要使用你之前尝试的get_shipping_classes()相关代码,那是用于获取商品的配送分类(比如“大件商品”“易碎品”这类),和订单的配送方式无关。
  • 如果你的自提配送方式slug不是local_pickup(比如自定义了slug),可以在WooCommerce后台设置→配送→自提里查看,或者临时添加var_dump($method_slug)输出确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:01:33