php - WooCommerce 如果条件(如果产品在购物车中执行某些操作)

标签 php wordpress woocommerce cart product

我正在尝试在 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>';
 }
}

最佳答案

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

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
}

关于php - WooCommerce 如果条件(如果产品在购物车中执行某些操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49934274/

相关文章:

css - 仅为 Wordpress 中的主页更改 css 选择器

php - 如何创建邮件服务器?

php - 两个 MySQL 服务器之间的行为差​​异(错误 1292)

php - 如何设置服务器以在 Ubuntu 10.04 中从 "root-directory/sub-directory/cgi-bin"运行 "root-directory/cgi-bin"中的 perl 脚本?

php - 向具有现有属性的现有产品添加变体

wordpress - 如何在woocommerce中合并订单

php - 在特定产品 ID 上添加自定义字段 woocommerce

php - 我如何在 PHPUnit 中断言 InstanceOf()?

php - 如何在 WooCommerce 评论表单上添加 "Review title"字段?

php - 将输入文本框值获取到 WordPress 中的 PHP 变量中