更改添加到购物车按钮文本以在购物车和产品标签中的产品为buynow时添加

时间:2015-12-23 13:33:08

标签: php wordpress woocommerce

当产品已在购物车中时,我想将添加到购物车文本更改为已添加,并在产品标签为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;
}

我的代码适用于单个产品页面,但不适用于产品存档页面。

任何人都有解决方案/建议请分享。 提前谢谢。

2 个答案:

答案 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';
}