根据 WooCommerce 单品中的重量替换添加到购物车按钮
Replace add to cart button based on weight in WooCommerce single products
我在 woocommerce 上搜索了有条件地替换添加到购物车按钮。我有一个代码,我已经根据我的需要修改了它。它在商店页面上运行完美。
这是我的代码:
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_default_button', 10, 2 );
function replace_default_button( $button, $product ){
global $product;
$weight = $product->get_weight();
preg_replace('/\D/', '', $weight);
if ( $product->has_weight() && ($weight > '8') ){
$button = '<a href="#" class="button alt">' . __( "Add to Quote", "woocommerce" ) . '</a>';
}
return $button;
}
但我也需要针对单个产品页面的类似代码。
我该怎么做?有帮助吗?
首先你可以简化你的代码:
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_default_button', 10, 2 );
function replace_default_button( $button, $product ){
$weight = $product->get_weight();
preg_replace('/\D/', '', $weight);
if ( $weight > 8 ){
$button = '<a href="#" class="button alt">' . __( "Add to Quote", "woocommerce" ) . '</a>';
}
return $button;
}
然后为单个产品页面提供类似的内容,使用以下内容:
add_action( 'woocommerce_single_product_summary', 'action_single_product_summary_callback', 1 );
function action_single_product_summary_callback() {
global $product;
$weight = $product->get_weight();
preg_replace('/\D/', '', $weight);
if ( $weight > 8 ) {
// For variable product types
if( $product->is_type( 'variable' ) ) {
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
add_action( 'woocommerce_single_variation', 'add_to_quote_replacement_button', 20 );
}
// For all other product types
else {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'add_to_quote_replacement_button', 30 );
}
}
}
function add_to_quote_replacement_button(){
echo '<a href="#" class="button alt">' . __( "Add to Quote", "woocommerce" ) . '</a>';
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
我在 woocommerce 上搜索了有条件地替换添加到购物车按钮。我有一个代码,我已经根据我的需要修改了它。它在商店页面上运行完美。
这是我的代码:
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_default_button', 10, 2 );
function replace_default_button( $button, $product ){
global $product;
$weight = $product->get_weight();
preg_replace('/\D/', '', $weight);
if ( $product->has_weight() && ($weight > '8') ){
$button = '<a href="#" class="button alt">' . __( "Add to Quote", "woocommerce" ) . '</a>';
}
return $button;
}
但我也需要针对单个产品页面的类似代码。 我该怎么做?有帮助吗?
首先你可以简化你的代码:
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_default_button', 10, 2 );
function replace_default_button( $button, $product ){
$weight = $product->get_weight();
preg_replace('/\D/', '', $weight);
if ( $weight > 8 ){
$button = '<a href="#" class="button alt">' . __( "Add to Quote", "woocommerce" ) . '</a>';
}
return $button;
}
然后为单个产品页面提供类似的内容,使用以下内容:
add_action( 'woocommerce_single_product_summary', 'action_single_product_summary_callback', 1 );
function action_single_product_summary_callback() {
global $product;
$weight = $product->get_weight();
preg_replace('/\D/', '', $weight);
if ( $weight > 8 ) {
// For variable product types
if( $product->is_type( 'variable' ) ) {
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
add_action( 'woocommerce_single_variation', 'add_to_quote_replacement_button', 20 );
}
// For all other product types
else {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_single_product_summary', 'add_to_quote_replacement_button', 30 );
}
}
}
function add_to_quote_replacement_button(){
echo '<a href="#" class="button alt">' . __( "Add to Quote", "woocommerce" ) . '</a>';
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。