当产品已在购物车中时,我想将添加到购物车文本更改为已添加,并在产品标签为buynow时将添加到购物车按钮文本更改为立即购买
这是我的代码:
/**
* Change the add to cart text on single product pages
*/
add_filter('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text');
function woo_custom_cart_button_text() {
global $woocommerce;
foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->id ) {
//return __('✓ Added', 'woocommerce');
return __('Added', 'woocommerce');
}
}
//return __('Add to cart', 'woocommerce');
if ( has_term( 'buynow', 'product_tag', $_product->id ) ) :
return __( 'Buy Now', 'woocommerce' );
else:
return __( 'Add to Cart', 'woocommerce' );
endif;
}
/**
* Change the add to cart text on product archives
*/
add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' );
function woo_archive_custom_cart_button_text() {
global $woocommerce;
foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->ID ) {
//return __('✓ Added', 'woocommerce');
return __('Added', 'woocommerce');
}
}
//return __('Add to cart', 'woocommerce');
if ( has_term( 'buynow', 'product_tag', $_product->ID ) ) :
return __( 'Buy Now', 'woocommerce' );
else:
return __( 'Add to Cart', 'woocommerce' );
endif;
}
我的代码适用于单个产品页面,但不适用于产品存档页面。
任何人都有解决方案/建议请分享。 提前谢谢。
答案 0 :(得分:0)
对象id
使用ID
代替$_product
!
尝试使用var_dump()
查看比较的值。你会看到$_product->ID
是空的。
答案 1 :(得分:0)
最后它的工作
以下是我在woocommerce / loop / add-to-cart.php
中输入的代码global $product;
foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( get_the_ID() == $_product->id ) {
$incart[] = $_product->id;
}
}
if (in_array($product->id, $incart, true)) {
$output = 'Added';
}elseif(in_array($product->id, $incart, true) && has_term( 'buynow', 'product_tag', $_product->id )){
$output = 'Added';
}elseif ( has_term( 'buynow', 'product_tag', $product->id ) ){
$output = 'Buy Now';
}else{
$output = 'Add to cart';
}