为WooCommerce外部商品添加“在新标签页打开”的购物车按钮

聖光之護
发布: 2025-09-13 18:16:01
原创
667人浏览过

为woocommerce外部商品添加“在新标签页打开”的购物车按钮

本教程旨在指导用户如何为WooCommerce商店中的外部商品添加“在新标签页打开”的购物车按钮。通过修改functions.php文件,我们可以自定义商店页面和商品详情页的“添加到购物车”按钮,使其链接在新标签页中打开,从而改善用户体验,尤其是在使用联盟链接时。

修改functions.php文件

要实现“在新标签页打开”的功能,我们需要修改WordPress主题的functions.php文件。 请注意,直接修改主题文件存在风险,建议使用子主题或代码片段插件进行修改,以避免主题更新导致更改丢失。

以下代码片段将为商店页面和商品详情页的外部商品添加target="_blank"属性,使其链接在新标签页中打开:

// 为商店页面添加自定义按钮
add_filter('woocommerce_loop_add_to_cart_link', 'shop_page_open_external_in_new_window', 10, 2);

function shop_page_open_external_in_new_window($link)
{
    global $product;
    if ($product->is_type('external')) {
        $link = sprintf(
            '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s" target="_blank">%s</a>',
            esc_url($product->add_to_cart_url()),
            esc_attr(isset($quantity) ? $quantity : 1),
            esc_attr($product->get_id()),
            esc_attr($product->get_sku()),
            esc_attr(isset($class) ? $class : 'button product_type_external'),
            esc_html($product->add_to_cart_text())
        );
    }

    return $link;
}

// 移除商品详情页默认按钮
remove_action('woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30);

// 为商品详情页添加自定义按钮
add_action('woocommerce_external_add_to_cart', 'product_page_open_external_in_new_window', 30);

function product_page_open_external_in_new_window()
{
    global $product;
    if (!$product->add_to_cart_url()) {
        return;
    }

    $product_url = $product->add_to_cart_url();
    $button_text = $product->single_add_to_cart_text();

    do_action('woocommerce_before_add_to_cart_button'); ?>
    <p class="cart">
        <a href="<?php echo esc_url($product_url); ?>" rel="nofollow" class="single_add_to_cart_button button alt" target="_blank">
            <?php echo esc_html($button_text); ?>
        </a>
    </p>
<?php
    do_action('woocommerce_after_add_to_cart_button');
}
登录后复制

代码解释

  1. 商店页面自定义按钮:

    AI新媒体文章
    AI新媒体文章

    专为新媒体人打造的AI写作工具,提供“选题创作”、“文章重写”、“爆款标题”等功能

    AI新媒体文章 75
    查看详情 AI新媒体文章
    • add_filter('woocommerce_loop_add_to_cart_link', 'shop_page_open_external_in_new_window', 10, 2);: 使用woocommerce_loop_add_to_cart_link过滤器,允许我们修改商店页面上的“添加到购物车”链接。
    • shop_page_open_external_in_new_window($link) 函数:
      • 使用global $product;访问当前产品对象。
      • if ($product->is_type('external')):检查产品类型是否为“external”(外部/联盟商品)。
      • sprintf(...):构建新的链接字符串,关键是添加了target="_blank"属性。
      • esc_url() 和 esc_attr():用于安全地转义URL和属性,防止安全漏洞。
      • esc_html(): 用于安全地转义HTML文本,防止安全漏洞。
  2. 商品详情页自定义按钮:

    • remove_action('woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30);:移除WooCommerce默认的外部商品“添加到购物车”按钮。
    • add_action('woocommerce_external_add_to_cart', 'product_page_open_external_in_new_window', 30);:添加我们自定义的按钮。
    • product_page_open_external_in_new_window() 函数:
      • 与商店页面类似,获取产品URL和按钮文本。
      • 使用HTML直接输出包含target="_blank"属性的链接。
      • do_action('woocommerce_before_add_to_cart_button'); 和 do_action('woocommerce_after_add_to_cart_button');: 允许其他插件或主题在按钮前后添加内容。

使用方法

  1. 备份functions.php文件: 在进行任何修改之前,务必备份你的functions.php文件。
  2. 选择修改方式: 推荐使用子主题或代码片段插件。
    • 子主题: 如果你还没有子主题,请创建一个。将上述代码添加到子主题的functions.php文件中。
    • 代码片段插件: 安装并激活一个代码片段插件(如Code Snippets)。将上述代码添加到插件中,并启用该代码片段。
  3. 测试: 访问你的WooCommerce商店页面和商品详情页,检查外部商品的“添加到购物车”按钮是否在新标签页中打开。

注意事项

  • 主题更新: 如果你直接修改了主题的functions.php文件,主题更新将会覆盖你的修改。因此,强烈建议使用子主题或代码片段插件。
  • 代码冲突: 某些插件或主题可能与此代码冲突。如果遇到问题,请尝试禁用其他插件或更换主题进行排查。
  • 安全性: 确保你从可信来源获取代码,并始终进行安全检查。
  • 缓存: 修改functions.php文件后,可能需要清除网站缓存才能看到更改。

总结

通过以上步骤,你可以轻松地为WooCommerce商店中的外部商品添加“在新标签页打开”的购物车按钮。 这可以显著改善用户体验,尤其是在使用联盟链接时,用户无需离开你的网站即可访问外部商家的页面。 请记住,在进行任何代码修改之前,务必备份你的网站,并仔细测试修改后的功能。

以上就是为WooCommerce外部商品添加“在新标签页打开”的购物车按钮的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号