Hook Moloni插件将WooCommerce产品短描述设为摘要报错求助
解决Moloni插件中用产品短描述填充Product Summary的PHP错误
你的实现思路是对的,但代码存在两个关键问题导致了空对象错误:
钩子参数个数未正确声明
插件代码里的moloni_before_order_item_setSummary钩子会传递两个参数:$summary和$product,但你注册过滤器时第四个参数设为1,导致函数只接收到第一个参数,$product变量自然为null。错误使用全局变量覆盖参数
你在函数里加了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
相关产品推荐
相关产品推荐

