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

调用bool类型的get_method_id()方法报错,求WooCommerce代码排查方案

解决WooCommerce中Call to a member function get_method_id() on bool错误

错误原因

错误根源在以下代码段:

$shipping_items      = $order->get_items( 'shipping' );
$shipping_item       = reset( $shipping_items );
$shipping_method_id  = $shipping_item->get_method_id() . ':';

当订单没有配送项(比如虚拟商品订单、免配送订单)时,$shipping_items是空数组,reset()会返回false,此时调用get_method_id()就会触发"在bool值上调用成员方法"的错误。

修复步骤

  1. 先校验配送项是否有效,再执行后续逻辑:
    修改代码,在获取shipping_method_id前添加多层校验,避免空值或非对象调用:

    $shipping_items = $order->get_items( 'shipping' );
    $shipping_method_id = '';
    // 检查是否有配送项,且配送项是有效对象
    if ( ! empty( $shipping_items ) && is_object( $shipping_item = reset( $shipping_items ) ) ) {
        $shipping_method_id  = $shipping_item->get_method_id() . ':';
        $shipping_method_id .= $shipping_item->get_instance_id();
    }
    
  2. 处理无配送项的场景
    可以根据需求添加无配送项时的提示,比如:

    } else {
        echo '<p>Jūsų užsakymas neturi pristatymo metodo.</p>';
    }
    

关于是否需要添加其他配送方式的else分支

如果你的店铺存在local_pickup:27之外的其他配送方式(比如DPD、标准快递等),且需要为这些方式展示专属提示,就必须添加else分支。示例如下:

if ( $shipping_method_id == 'local_pickup:27' ) {
    echo '<p>Sveiki, Jūsų užsakymas nr. ' . $order_id . ' yra suruoštas. Kviečiame atsiimti adresu: Rudens g. 29, Neveronys. www.sodoroze.lt</p>';
} elseif ( $shipping_method_id == 'dpd:12' ) { // 替换为实际配送方式ID
    echo '<p>Jūsų užsakymas perduotas DPD kurjeriui, laukite pristatymo pranešimo.</p>';
} elseif ( ! empty( $order_notes ) ) {
    foreach ( $order_notes as $order_note ) {
        if ( strpos( $order_note->content, 'DPD siuntos numeris' ) !== false ) {
            echo '<p>Jūsų užsakymas nr. ' . $order_id . ' perduotas kurjeriui. ' . $order_note->content . '</p>';
        }
    }
} else {
    // 默认提示,覆盖所有未匹配的场景
    echo '<p>Jūsų užsakymas yra apdorotas, laukite pristatymo informacijos.</p>';
}

即便没有特殊配送方式需要处理,也建议保留一个else分支,避免用户在既不是自提、又没有DPD单号备注的情况下看不到任何相关提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:21:01