WooCommerce 购物车:始终显示所有交叉销售商品


woocommerce 购物车:始终显示所有交叉销售商品

本教程详细介绍了如何通过使用 `woocommerce_cart_crosssell_ids` 过滤器,修改 WooCommerce 购物车默认的交叉销售商品显示逻辑。通过自定义函数,您可以确保购物车中始终展示与当前商品相关联的所有交叉销售商品,而不再自动排除已添加到购物车的商品,从而优化商品推荐策略。

在 WooCommerce 中,购物车页面通常会推荐与当前购物车商品相关的交叉销售(Cross-sell)商品。然而,默认情况下,WooCommerce 的核心功能会智能地从交叉销售列表中移除那些已经存在于购物车中的商品。这一逻辑由 WC_Cart 类中的 get_cross_sells() 方法控制,具体是通过 array_diff( $cross_sells, $in_cart ) 这一行代码实现,其目的是避免重复推荐用户已购买的商品。

对于某些业务场景,例如希望最大化商品曝光或提供更多购买选项,可能需要覆盖这一默认行为,让购物车页面始终显示所有关联的交叉销售商品,无论它们是否已在购物车中。本教程将指导您如何通过 WooCommerce 提供的过滤器钩子来实现这一目标。

理解 WooCommerce 交叉销售逻辑

WooCommerce 的 get_cross_sells() 方法首先会遍历购物车中的每一个商品,收集它们各自关联的交叉销售商品 ID,并将其合并到一个数组中。随后,它会移除那些已经存在于购物车中的商品 ID。我们目标是跳过或重写这一“移除”步骤。

使用 woocommerce_cart_crosssell_ids 过滤器

WooCommerce 提供了 woocommerce_cart_crosssell_ids 过滤器钩子,允许开发者完全控制最终呈现在购物车页面的交叉销售商品 ID 列表。通过这个过滤器,我们可以重新构建交叉销售商品 ID 数组,确保其中包含所有关联商品,而无需考虑它们是否已在购物车中。

实施步骤

要实现始终显示所有交叉销售商品,您需要将以下 PHP 代码添加到您子主题的 functions.php 文件中,或者通过自定义插件引入。

/**
 * 过滤 woocommerce_cart_crosssell_ids,以显示所有交叉销售商品。
 *
 * @param array    $cross_sells 当前交叉销售商品 ID 数组。
 * @param WC_Cart  $cart        WC_Cart 实例。
 * @return array   更新后的交叉销售商品 ID 数组。
 */
function filter_woocommerce_cart_crosssell_ids( $cross_sells, $cart ) {
    // 初始化一个空数组,用于收集所有交叉销售商品 ID
    $all_cross_sells_ids = array();

    // 遍历购物车中的每一个商品
    foreach ( $cart->get_cart() as $cart_item_key => $values ) {
        // 确保商品数量大于0
        if ( $values['quantity'] > 0 ) {
            // 获取当前购物车商品的交叉销售商品 ID,并与已收集的 ID 合并
            // 注意:这里我们直接合并,不进行任何移除已在购物车商品的判断
            $all_cross_sells_ids = array_merge( $values['data']->get_cross_sell_ids(), $all_cross_sells_ids );
        }
    }

    // 使用 wp_parse_id_list 清理并确保 ID 列表的唯一性
    // 这将移除重复的 ID,并确保所有 ID 都是有效的整数
    $cross_sells = wp_parse_id_list( $all_cross_sells_ids );

    return $cross_sells;
}
add_filter( 'woocommerce_cart_crosssell_ids', 'filter_woocommerce_cart_crosssell_ids', 10, 2 );

代码解释

  1. filter_woocommerce_cart_crosssell_ids( $cross_sells, $cart ) 函数定义:

    Tripo AI Tripo AI

    AI驱动的3D建模平台

    Tripo AI 970 查看详情 Tripo AI
    • 这个函数是我们的自定义逻辑,它接收两个参数:$cross_sells(WooCommerce 默认计算出的交叉销售 ID 数组)和 $cart(当前的 WC_Cart 对象实例)。
    • 虽然 $cross_sells 参数会被传入,但我们的逻辑实际上会完全重新构建这个列表,而不是基于它进行修改。
  2. $all_cross_sells_ids = array();:

    • 初始化一个空数组,用于存储从购物车所有商品中收集到的交叉销售商品 ID。
  3. foreach ( $cart->get_cart() as $cart_item_key => $values ) 循环:

    • 遍历购物车中的每个商品项。
    • $values['data']->get_cross_sell_ids():获取当前购物车商品关联的所有交叉销售商品 ID。
    • array_merge( ..., $all_cross_sells_ids ):将当前商品的交叉销售 ID 与之前收集的 ID 合并到 $all_cross_sells_ids 数组中。这里的关键在于,我们只进行合并操作,不执行任何 array_diff 来排除已在购物车中的商品。
  4. $cross_sells = wp_parse_id_list( $all_cross_sells_ids );:

    • wp_parse_id_list() 是一个 WordPress 实用函数,它能够清理并确保 ID 列表的有效性。它会将输入的 ID 列表转换为一个唯一的整数 ID 数组,移除任何非数字或重复的项。这对于最终输出一个干净的交叉销售 ID 列表非常重要。
  5. add_filter( 'woocommerce_cart_crosssell_ids', 'filter_woocommerce_cart_crosssell_ids', 10, 2 );:

    • 将我们的自定义函数挂载到 woocommerce_cart_crosssell_ids 过滤器上。
    • 10 是优先级,表示在默认优先级下执行。
    • 2 表示我们的函数接受两个参数($cross_sells 和 $cart)。

注意事项与最佳实践

  • 代码位置:强烈建议将此类自定义代码放置在子主题的 functions.php 文件中,或者创建一个独立的自定义插件。直接修改 WooCommerce 核心文件或父主题文件会导致更新时丢失您的更改。
  • 性能考量:对于包含大量商品和复杂交叉销售关系的大型商店,此操作可能会对购物车页面的加载性能产生轻微影响。在大多数情况下,这种影响可以忽略不计。
  • 用户体验:虽然显示所有交叉销售商品可能增加曝光,但也需注意不要让购物车页面过于冗长或信息过载,从而影响用户体验。
  • 测试:在生产环境部署之前,务必在开发或测试环境中充分测试此功能,确保其按预期工作且没有引入其他兼容性问题。

总结

通过利用 woocommerce_cart_crosssell_ids 过滤器,您可以轻松地自定义 WooCommerce 购物车中交叉销售商品的显示行为。上述教程提供的方法能够确保所有关联的交叉销售商品都得以展示,为您的客户提供更全面的商品推荐,并可能促进额外的销售。记住始终遵循最佳实践,将代码放置在正确的位置并进行充分测试。

以上就是WooCommerce 购物车:始终显示所有交叉销售商品的详细内容,更多请关注php中文网其它相关文章!


# 您的  # 亦庄网站优化公司  # SEO人才绿卡图书英语  # 玉溪互联网营销推广  # 深圳网站seo优化系统  # 网站建设的项目体会  # 新媒体媒介推广营销  # 外贸海关数据网站建设  # 湖北网站建设与设计  # 辽源seo服务电话  # 辽源网站推广运营公司电话  # 您可以  # php  # 组中  # 遍历  # 这一  # 已在  # 移除  # 自定义  # 车中  # 购物车  # wordpress  # word 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接  鸣潮历史学家灯塔位置一览  在Spring Boot Thymeleaf中利用布尔属性实现容器的条件显示  照片整理的黄金法则是怎样的? 理解“收集-筛选-归档-备份”四步流程  J*a实现任务清单管理_集合框架综合入门练手  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  疯狂小鸟微信小游戏入口 疯狂小鸟网页版秒玩  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  iCloud官方网站 iCloud网页版在线登录入口  哔哩哔哩在线观看入口 B站官网免费进入  微信客户端如何找回密码_微信客户端忘记密码找回方法  《万兴喵影》导出视频方法  Go Goroutine调度与并发执行深度解析  Git命令与VS Code UI操作的对应关系解析  在Flask应用中安全高效地更新SQLAlchemy用户数据  Win10通知横幅停留时间修改 Win10自定义通知显示时长【技巧】  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  猫眼电影app怎么查询电影院的营业时间_猫眼电影影院营业时间查询教程  b站怎么用微信登录_b站微信登录方法  WPS文字如何进行简繁转换  《健康大兴》注册方法介绍  Excel宏怎么删除_Excel中删除宏的详细操作流程  《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局  荣耀magicv5怎么上手测评  谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录  在XML中嵌入二进制数据(如图片)的最佳实践是什么? Base64编码与解析注意事项  Lar*el 中高效执行多列更新:单次查询实现  《下一站江湖2》武器获取方法  windows10怎么更改下载路径_windows10默认存储位置修改教程  消除网页顶部意外空白线:CSS布局常见问题与解决方案  《一起考教师》账号注销方法  TikTok视频播放不流畅怎么办 TikTok视频播放优化方法  pubmed数据库官方主页_pubmed学术论文查找官网直达  顺丰快递收费标准查询_如何查看顺丰最新收费价格  抖音团长模式怎么做?团长模式是什么意思?  创建快捷方式启动系统保护  小红书网页版首页入口 小红书网页版电脑端官方登录链接  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  Win11怎么开启HDR_Windows 11显示器画质增强设置  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  支付宝网页版在线入口 支付宝官网电脑登录入口  C++ static关键字作用_C++静态成员变量与静态函数  macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整  J*aScript对象中深度嵌套URL键的查找与更新策略  mysql如何配置从库只读_mysql从库只读设置方法  飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读  123网页端官方登录页 123邮箱网页版即时通讯服务  b站如何剪辑视频_b站必剪app使用教程  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  家里的小飞虫总是不断,用什么方法可以彻底根除? 

 2025-11-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.