如何在WooCommerce模板中根据页面修改添加购物车按钮链接
修改WooCommerce“添加到购物车”按钮跳转链接的实现方法
一、优化按钮文本的条件判断(整合你现有代码)
你之前的文本修改代码缺少页面条件判断,可能导致逻辑冲突,建议替换为以下代码,实现归档页和详情页的按钮文本分别设置:
function woocommerce_custom_add_to_cart_text() { if ( is_product() ) { // 产品详情页 return __( 'Produkt verhindern', 'woocommerce' ); } elseif ( is_shop() || is_product_category() || is_product_tag() ) { // 商店、产品分类/标签归档页 return __( 'Mehr erfahren', 'woocommerce' ); } return __( 'Add to cart', 'woocommerce' ); // 默认文本 } add_filter( 'woocommerce_product_add_to_cart_text', 'woocommerce_custom_add_to_cart_text' );
二、修改按钮跳转链接
将以下代码添加到当前主题的functions.php文件末尾,实现不同页面的按钮跳转逻辑:
1. 归档页(archive-product.php 对应页面)跳转至产品详情页
// 修改产品归档页的“添加到购物车”按钮,跳转至对应产品详情页 function custom_loop_add_to_cart_link( $link, $product ) { // 仅在商店、产品分类/标签页生效 if ( ( is_shop() || is_product_category() || is_product_tag() ) ) { $product_link = get_permalink( $product->get_id() ); $link = sprintf( '<a href="%s" class="button product_type_%s">%s</a>', esc_url( $product_link ), esc_attr( $product->get_type() ), esc_html( $product->add_to_cart_text() ) ); } return $link; } add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_loop_add_to_cart_link', 10, 2 );
2. 产品详情页(single-product.php)跳转至自定义页面
// 修改产品详情页的“添加到购物车”按钮,跳转至自定义页面 function custom_single_product_add_to_cart_button() { global $product; // 仅在产品详情页生效 if ( is_product() ) { // 替换为你的自定义页面URL:可以用页面ID/标题获取,或者直接写完整链接 $custom_page_url = get_permalink( get_page_by_title( '你的自定义页面标题' ) ); // 示例:直接写URL的话,替换上面一行为:$custom_page_url = 'https://你的域名.com/自定义页面路径/'; // 移除默认的添加到购物车按钮 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); // 添加自定义跳转按钮 add_action( 'woocommerce_single_product_summary', function() use ( $custom_page_url, $product ) { echo sprintf( '<a href="%s" class="single_add_to_cart_button button alt">%s</a>', esc_url( $custom_page_url ), esc_html( $product->add_to_cart_text() ) ); }, 30 ); } } add_action( 'wp', 'custom_single_product_add_to_cart_button' );
注意事项
- 若需要支持可变产品,可移除代码中
is_type('simple')这类产品类型判断,或添加对应处理逻辑 - 按钮样式可通过CSS调整
button、single_add_to_cart_button等类名实现自定义 - 操作前建议备份主题
functions.php文件,避免代码错误导致网站异常
内容的提问来源于stack exchange,提问作者S.H
相关产品推荐
相关产品推荐

