将产品添加到Woocommerce单个产品页面上的购物车后,激活自定义按钮

时间:2018-11-13 14:26:07

标签: php wordpress woocommerce product cart

在Woocommerce单个产品页面中,我使用了woocommerce_after_add_to_cart钩子添加了自定义按钮。单击/按下该按钮后,会将客户重新定向到结帐。

但是为了避免客户在将产品添加到购物车之前单击按钮,我在函数中添加了if ( WC()->cart->get_cart_contents_count() != 0 ) {

我的问题是:在将产品添加到购物车之前,如何使此按钮始终可用,但不活动?在购物车中没有产品之前,如何使它“变灰”(不可点击)?

这是我完整的代码:

add_action('woocommerce_after_add_to_cart_button, 'instant_checkout');
function instant_checkout() {
$checkout_url = WC()->cart->get_checkout_url();
if ( WC()->cart->get_cart_contents_count() != 0 ) {
echo '<a href="'.$checkout_url.'" class="single_add_to_cart_button button alt">Instant Checkout</a>'; } }

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

以下将在添加到购物车按钮之后显示自定义的禁用按钮…将产品添加到购物车后,将启用该产品并将其链接到结帐页面:

add_action('woocommerce_after_add_to_cart_button', 'get_instant_checkout_buttom_html');
function get_instant_checkout_buttom_html() {
    global $product;

    $href = ''; // Initializing
    $class = ' disabled'; // Initializing

    // Continue only if cart is not empty
    if ( ! WC()->cart->is_empty() ) {
        // Loop through cart items
        foreach( WC()->cart->get_cart() as $item ) {
            // When product is in cart
            if( $item['product_id'] == $product->get_id() ){
                $href  = ' href="'.wc_get_checkout_url().'"'; // Add the link to the button
                $class = ''; // Remove "disabled" class
                break; // Stop the loop
            }
        }
    }
    // Button output
    echo '<a'.$href.' class="single_add_to_cart_button button alt'.$class.'">'.__("Instant Checkout").'</a>';
}

代码进入您的活动子主题(活动主题)的function.php文件中。经过测试,可以正常工作。