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

Hook Moloni插件将WooCommerce产品短描述设为摘要报错求助

解决Moloni插件中用产品短描述填充Product Summary的PHP错误

你的实现思路是对的,但代码存在两个关键问题导致了空对象错误:

  1. 钩子参数个数未正确声明
    插件代码里的moloni_before_order_item_setSummary钩子会传递两个参数:$summary和$product,但你注册过滤器时第四个参数设为1,导致函数只接收到第一个参数,$product变量自然为null。

  2. 错误使用全局变量覆盖参数
    你在函数里加了global $product;,这会覆盖钩子传递过来的$product参数,而在这个钩子的执行上下文里,全局的$product对象并不存在,最终触发调用get_id()时的空对象错误。

正确的代码实现:

/** Moloni Product Summary hook - 使用产品短描述填充摘要 */
add_filter( 'moloni_before_order_item_setSummary', 'summary_is_excerpt', 10, 2 );

function summary_is_excerpt( $summary, $product ) {
    // 先判断产品对象是否有效,避免空对象错误
    if ( is_a( $product, 'WC_Product' ) ) {
        $summary = $product->get_short_description();
    }
    
    return $summary;
}

代码说明:

  • 将add_filter的第四个参数改为2,确保函数能接收钩子传递的两个参数。
  • 移除global $product;,直接使用钩子传递的$product对象。
  • 增加is_a()判断,确保$product是有效的WooCommerce产品对象后再调用方法,进一步避免潜在错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:25:52