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

WooCommerce感谢页调用get_items()报错:布尔值上调用成员函数

解析WooCommerce感谢页订单摘要代码崩溃问题及修复方案

咱们先直击报错核心:Uncaught Error: Call to a member function get_items() on boolean,这说明你代码里的$order变量是个布尔值(具体是false),根本不是合法的WooCommerce订单对象,自然没法调用get_items()方法。

问题根源拆解

  1. 未定义的$order_id:你的代码里直接用了$order_id,但这个变量完全没被赋值,wc_get_order()拿不到有效ID,只能返回false。
  2. 语法小疏漏:$item->get_quantity少了函数调用的括号,应该是$item->get_quantity(),不然会输出函数本身的代码而非实际数量值。
  3. 不符合短代码规范:直接用echo输出内容,WordPress短代码要求返回内容而非直接输出,否则可能导致页面渲染顺序错乱。

修复后的代码

结合WooCommerce感谢页的场景(订单完成后跳转的页面,URL带有order-received参数),我们可以这样修改代码:

function order_table_summary() {
    // 从感谢页URL获取订单ID
    $order_id = get_query_var('order-received');
    
    // 验证订单ID有效性,获取合法订单对象
    if ( ! $order_id || ! ($order = wc_get_order($order_id)) ) {
        return '<p>无法获取订单信息,请稍后重试。</p>';
    }
    
    $output = '<table style="width:100%;border-collapse:collapse;"><thead><tr><th style="border:1px solid #ddd;padding:8px;">商品名称</th><th style="border:1px solid #ddd;padding:8px;">数量</th><th style="border:1px solid #ddd;padding:8px;">小计</th></tr></thead><tbody>';
    
    // 循环遍历订单项
    foreach ( $order->get_items() as $item_id => $item ) {
        // 获取商品名称、数量、格式化后的小计价格
        $product_name = $item->get_name();
        $quantity = $item->get_quantity();
        $subtotal = wc_price($item->get_total());
        
        $output .= "<tr><td style='border:1px solid #ddd;padding:8px;'>{$product_name}</td><td style='border:1px solid #ddd;padding:8px;'>{$quantity}</td><td style='border:1px solid #ddd;padding:8px;'>{$subtotal}</td></tr>";
    }
    
    $output .= '</tbody></table>';
    
    // 返回内容而非直接echo,符合WordPress短代码规范
    return $output;
}
add_shortcode('order_table_summary', 'order_table_summary');

关键修改说明

  • 正确获取订单ID:用get_query_var('order-received')直接从感谢页URL参数里提取订单ID,这是WooCommerce官方推荐的方式。
  • 增加容错验证:先检查订单ID是否存在,再验证wc_get_order()是否返回合法对象,避免再次触发致命错误。
  • 规范输出方式:把所有内容拼接到$output变量后返回,符合WordPress短代码的运行逻辑。
  • 优化展示效果:将纯文本输出改成带基础样式的表格,更符合订单摘要的展示需求,同时用wc_price()自动适配商店的货币格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:12:59