如果产品已经在WooCommerce购物车中,则禁用“添加到购物车”按钮

时间:2020-10-16 21:46:09

标签: php wordpress woocommerce product

如果产品已经添加,我想禁用“添加到购物车”按钮。我设法改变了。测试已添加的产品,以使按钮显示“已添加”。代码或下面的代码。除了文字更改外,我只是不知道如何禁用该按钮。

add_filter('woocommerce_product_add_to_cart_text', 'wc_product_add_to_cart_text', 10, 2 );
add_filter('woocommerce_product_single_add_to_cart_text', 'wc_product_add_to_cart_text', 10, 2 );

function wc_product_add_to_cart_text( $text, $product ){

    $product_cart_id = WC()->cart->generate_cart_id( $product->get_id() );
    $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

    if ( $in_cart ) {
        $text = "Already added";
    }
    return $text;
}

1 个答案:

答案 0 :(得分:1)

当您在WooCommerce中编辑产品时,可以选择“仅单独销售”。我不知道这是否是您要实现的目标,但这可能是一个更合适的解决方案,并且不易出现错误。

如果您根本不使用默认商店页面,则应在商店页面上放置重定向,该重定向始终会将用户重定向到例如您正在商店中使用的页面。

除此之外,here还会发现一个钩子,可用于禁用“添加到购物车”的重定向。

我找到了此代码,以检查您的购物车中是否已有产品。您可以从body_class();获取当前的产品ID。只需将此函数连接到woocommerce_add_to_cart即可。

function woo_in_cart($product_id) {
    global $woocommerce;         
    foreach($woocommerce->cart->get_cart() as $key => $val ) {
        $_product = $val['data'];

        if($product_id == $_product->id ) {
            wp_redirect( $url );
        }
    }         
}