WordPress Electro主题:用WooZone替换Add to Cart为Buy on Amazon并跳转
替换Electro主题中WooZone亚马逊联盟商品的Add to Cart按钮为Buy on Amazon按钮
以下是三种可行的实现方案,按推荐优先级排序:
方法一:使用WooCommerce钩子(推荐,无主题文件修改风险)
通过WooCommerce的内置钩子修改按钮,无需改动主题核心文件,避免主题更新丢失代码。
分步操作:
- 确认亚马逊联盟链接字段:WooZone导入的商品会将联盟链接存储在自定义字段中,通常为
_woozone_amazon_link或_amazon_product_url。可在商品编辑页的「自定义字段」面板查看,或通过代码验证。 - 添加代码到子主题functions.php:
打开子主题的functions.php文件(路径:wp-content/themes/electro-child/functions.php),粘贴以下代码:
// 替换商品列表页的Add to Cart按钮 add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_amazon_loop_add_to_cart', 10, 2 ); // 替换商品详情页的按钮文字与结构 add_filter( 'woocommerce_single_product_add_to_cart_text', 'replace_amazon_single_button_text', 10 ); add_action( 'woocommerce_single_product_summary', 'replace_amazon_single_button_html', 30 ); function replace_amazon_loop_add_to_cart( $button, $product ) { $amazon_link = get_post_meta( $product->get_id(), '_woozone_amazon_link', true ); if ( ! empty( $amazon_link ) ) { $button = sprintf( '<a href="%s" class="button alt buy-on-amazon" target="_blank" rel="nofollow noopener">%s</a>', esc_url( $amazon_link ), esc_html__( 'Buy on Amazon', 'electro-child' ) ); } return $button; } function replace_amazon_single_button_text( $text ) { global $product; $amazon_link = get_post_meta( $product->get_id(), '_woozone_amazon_link', true ); return ! empty( $amazon_link ) ? __( 'Buy on Amazon', 'electro-child' ) : $text; } function replace_amazon_single_button_html() { global $product; $amazon_link = get_post_meta( $product->get_id(), '_woozone_amazon_link', true ); if ( ! empty( $amazon_link ) ) { remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); echo sprintf( '<a href="%s" class="single_add_to_cart_button button alt buy-on-amazon" target="_blank" rel="nofollow noopener">%s</a>', esc_url( $amazon_link ), esc_html__( 'Buy on Amazon', 'electro-child' ) ); } }
- 自定义按钮样式(可选):在子主题的
style.css中添加样式,匹配Electro主题风格:
.buy-on-amazon { background-color: #ff9900; border-color: #ff9900; color: #fff; } .buy-on-amazon:hover { background-color: #e68a00; border-color: #e68a00; }
方法二:修改Electro主题模板文件(不推荐,需维护)
如果钩子方案不生效,可复制主题模板到子主题后修改:
- 复制模板文件到子主题:
- 商品列表页:复制
wp-content/themes/electro/woocommerce/loop/add-to-cart.php到electro-child/woocommerce/loop/ - 商品详情页:复制
wp-content/themes/electro/woocommerce/single-product/add-to-cart/simple.php到electro-child/woocommerce/single-product/add-to-cart/
- 商品列表页:复制
- 修改模板代码:
以列表页为例,替换原按钮代码为:
<?php global $product; $amazon_link = get_post_meta( $product->get_id(), '_woozone_amazon_link', true ); if ( ! empty( $amazon_link ) ) { ?> <a href="<?php echo esc_url( $amazon_link ); ?>" class="button alt buy-on-amazon" target="_blank" rel="nofollow noopener"><?php esc_html_e( 'Buy on Amazon', 'electro-child' ); ?></a> <?php } else { // 保留原Add to Cart按钮逻辑 echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf( '<a href="%s" data-quantity="%s" class="%s" %s>%s</a>', esc_url( $product->add_to_cart_url() ), esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ), esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ), isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '', esc_html( $product->add_to_cart_text() ) ), $product, $args ); } ?>
方法三:检查WooZone内置设置
部分WooZone版本自带按钮替换功能,可前往WooZone设置面板,查找「商品展示」或「按钮设置」选项,查看是否有「替换Add to Cart为亚马逊购买按钮」的开关,开启即可。
注意事项:
- 始终使用子主题修改代码,避免主题更新导致自定义内容丢失。
- 若
_woozone_amazon_link字段无效,可通过get_post_custom( $product->get_id() )输出商品所有自定义字段,确认正确的联盟链接字段名。
内容的提问来源于stack exchange,提问作者Asif Jalil
相关产品推荐
相关产品推荐

