WooCommerce如果条件(如果产品在购物车中做某事)

时间:2018-04-20 04:57:51

标签: php wordpress woocommerce cart product

我试图在WooCommerce Cart页面上显示其他按钮[预约],该按钮会将用户带到包含预约产品的页面。这部分很好用。我还尝试检查产品ID 444908是否已装入购物车。产品ID 444908是预约产品,如果某人已经预约,则该按钮不应显示为该人已经在购物车中预订了产品。 似乎问题在于我的IF条件。当我使用它时,无论产品444908是否在购物车中,它都不会显示按钮。

我做错了什么?

add_action( 'woocommerce_after_cart_totals', 'my_continue_shopping_button' );
function my_continue_shopping_button() {
    $product_id = 444908;
    $product_cart_id = WC()->cart->generate_cart_id( $product_id );
    $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );
    if ( $in_cart ) {
 echo '<div class="bookbtn"><br/>';
 echo ' <a href="/book-appointment/" class="button"><i class="fas fa-calendar-alt"></i> Book Your Appointment</a>';
 echo '</div>';
 }
}

3 个答案:

答案 0 :(得分:1)

最后我使用了外部功能:

function woo_is_in_cart($product_id) {
    global $woocommerce;
    foreach($woocommerce->cart->get_cart() as $key => $val ) {
        $_product = $val['data'];
        if($product_id == $_product->get_id() ) {
            return true;
        }
    }
    return false;
}

然后我使用以下方法检查产品是否在购物车中:

if(woo_is_in_cart(5555) !=1) {
/* where 5555 is product ID */

答案 1 :(得分:0)

如果找不到产品,

find_product_in_cart将返回空字符串 所以你需要

 if ( $in_cart !="" ) 

info

答案 2 :(得分:0)

这是我已经使用了一段时间的东西?

function is_in_cart( $ids ) {
    // Initialise
    $found = false;

    // Loop through cart items
    foreach( WC()->cart->get_cart() as $cart_item ) {
        // For an array of product IDs
        if( is_array($ids) && ( in_array( $cart_item['product_id'], $ids ) || in_array( $cart_item['variation_id'], $ids ) ) ){
            $found = true;
            break;
        }
        // For a unique product ID (integer or string value)
        elseif( ! is_array($ids) && ( $ids == $cart_item['product_id'] || $ids == $cart_item['variation_id'] ) ){
            $found = true;
            break;
        }
    }

    return $found;
}

对于单个产品ID:

if(is_in_cart($product_id)) {
    // do something
}

对于产品/版本ID的数组:

if(is_in_cart(array(123,456,789))) {
    // do something
}

...或...

if(is_in_cart($product_ids)) {
    // do something
}