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

如何覆写WooCommerce商品捆绑插件函数获取底层商品永久链接

解决WooCommerce Product Bundles捆绑商品永久链接覆写问题

你的问题出在没有正确接收和使用过滤器传递的参数上,导致get_permalink()默认获取了当前页面(也就是商品捆绑包本身)的链接,而不是你需要的底层关联商品链接。

错误原因分析

原插件的woocommerce_bundled_item_permalink过滤器会传递两个核心参数:

  1. 插件默认生成的永久链接字符串
  2. 当前的WC_Bundled_Item对象(包含了底层关联商品的完整信息)

但你的代码存在两个关键疏漏:

  • 没有在add_filter中声明要接收2个参数(WordPress默认只传递1个参数)
  • 函数get_bundle_product_permalink未接收这两个参数,调用get_permalink()时未指定目标商品,自然返回当前页面(捆绑包)的链接

正确的覆写代码

把你在functions.php里的代码替换成下面这段:

add_filter( 'woocommerce_bundled_item_permalink', 'get_bundle_product_permalink', 10, 2 );
function get_bundle_product_permalink( $default_permalink, $bundled_item ) {
    // 确认底层商品存在且可见,返回它的永久链接
    if ( $bundled_item->product && $bundled_item->product->is_visible() ) {
        return $bundled_item->product->get_permalink();
    }
    // 如果商品不可见,返回空字符串(保持原插件的逻辑一致性)
    return '';
}

代码细节解释

  1. add_filter的第四个参数2:明确告诉WordPress这个过滤器函数需要接收2个参数
  2. 函数参数$bundled_item:直接获取插件传递的当前捆绑商品对象,通过$bundled_item->product就能拿到关联的底层商品实例
  3. 保留了原函数的商品可见性判断,避免返回无效或不可访问的商品链接

这样修改后,捆绑商品的永久链接就会正确指向它关联的底层商品了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:08:02