提问者:小点点

如果条件允许(如果产品在购物车中,请执行某些操作)


我试图在WooCommerce购物车页面上显示额外的按钮[预订您的约会],该按钮会将用户带到带有产品的页面以预订约会。这部分工作得很好。我还尝试检查产品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>';
 }
}

共2个答案

匿名用户

最后我使用了外部功能:

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 */

匿名用户

find_product_in_cart返回一个空字符串,如果产品没有找到,所以你需要

 if ( $in_cart !="" ) 

信息