woocommerce_single_product_summary 挂钩中的重复添加到购物车按钮问题
Duplicated add to cart button issue in woocommerce_single_product_summary hook
尝试在 Woocommerce 网站 (对于可免费下载的项目) 上将添加到购物车按钮变成下载 link。
我在下面设置的代码可以做到这一点,但它也复制了添加到购物车按钮。所以我最终得到了文件下载 link + 一个额外的添加到购物车按钮。
我错过了什么?
代码如下:
remove_action( 'woocommerce_single_product_summary',
'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary',
'itl_woocommerce_template_single_add_to_cart', 30 );
/*
* replace WooCommerce add-to-cart button with download link when product is
downloadable & free
*/
function itl_woocommerce_template_single_add_to_cart() {
global $product;
if ( $product->is_downloadable('yes') ) {
if ( $product->get_price() > 0 ) {
do_action( 'woocommerce_' . $product->product_type .
'_add_to_cart' );
} else {
$downloads = $product->get_files();
foreach( $downloads as $key => $download ) {
echo '<p class="download-link"><a href="' . esc_url(
$download['file'] ) . '">' . $download['name'] . '</a></p>';
}
}
} else {
do_action( 'woocommerce_' . $product->product_type . '_add_to_cart' );
}
}
我已经重新访问、更正、压缩并测试了您的代码。所以现在它适用于 WC 版本 3+:
add_action( 'woocommerce_single_product_summary', 'customizing_single_add_to_cart', 1 );
function customizing_single_add_to_cart(){
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action('woocommerce_single_product_summary', function(){
global $product;
if ( $product->is_downloadable() && $product->get_price() <= 0 )
foreach( $product->get_downloads() as $key => $download )
echo '<p class="download-link"><a href="' . esc_url( $download['file'] ) . '">' . $download['name'] . '</a></p>';
else
woocommerce_template_single_add_to_cart();
}, 30);
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
此代码已经过测试并有效 (在 WooCommerce 版本 3+ 中)
尝试在 Woocommerce 网站 (对于可免费下载的项目) 上将添加到购物车按钮变成下载 link。
我在下面设置的代码可以做到这一点,但它也复制了添加到购物车按钮。所以我最终得到了文件下载 link + 一个额外的添加到购物车按钮。
我错过了什么?
代码如下:
remove_action( 'woocommerce_single_product_summary',
'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary',
'itl_woocommerce_template_single_add_to_cart', 30 );
/*
* replace WooCommerce add-to-cart button with download link when product is
downloadable & free
*/
function itl_woocommerce_template_single_add_to_cart() {
global $product;
if ( $product->is_downloadable('yes') ) {
if ( $product->get_price() > 0 ) {
do_action( 'woocommerce_' . $product->product_type .
'_add_to_cart' );
} else {
$downloads = $product->get_files();
foreach( $downloads as $key => $download ) {
echo '<p class="download-link"><a href="' . esc_url(
$download['file'] ) . '">' . $download['name'] . '</a></p>';
}
}
} else {
do_action( 'woocommerce_' . $product->product_type . '_add_to_cart' );
}
}
我已经重新访问、更正、压缩并测试了您的代码。所以现在它适用于 WC 版本 3+:
add_action( 'woocommerce_single_product_summary', 'customizing_single_add_to_cart', 1 );
function customizing_single_add_to_cart(){
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action('woocommerce_single_product_summary', function(){
global $product;
if ( $product->is_downloadable() && $product->get_price() <= 0 )
foreach( $product->get_downloads() as $key => $download )
echo '<p class="download-link"><a href="' . esc_url( $download['file'] ) . '">' . $download['name'] . '</a></p>';
else
woocommerce_template_single_add_to_cart();
}, 30);
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
此代码已经过测试并有效 (在 WooCommerce 版本 3+ 中)