尝试将添加到购物车按钮转换为Woocommerce网站上的下载链接(适用于免费下载的商品)。
我在下面设置的代码就是这样做的,但它也复制了“添加到购物车”按钮。所以我最终得到了文件下载链接+一个额外的添加到购物车按钮。
我错过了什么?
以下是代码:
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' );
}
}
答案 0 :(得分:1)
我重新访问,更正,压缩并测试了您的代码。所以现在它适用于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 +中)