WooCommerce 重定向添加到购物车以结帐特定产品类型

时间:2021-05-01 19:53:11

标签: wordpress woocommerce hook-woocommerce

在 Woocommerce 中,我需要在添加产品时跳过购物车页面,并仅针对订阅产品类型直接重定向到结帐。

我在其他地方找到了以下代码,该代码可用于根据产品 ID 跳过购物车页面,但是我无法正确使用产品类型(有关我尝试的内容,请参见下文)。

function woocommerce_skip_cart() {
global $woocommerce;
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_POST['add-to-cart'] );

if ( $product_id == 31 || $product_id == 31 ) {
    $checkout_url = WC()->cart->get_checkout_url();
    return $checkout_url;
}
}
add_filter ('woocommerce_add_to_cart_redirect', 'woocommerce_skip_cart');

我尝试过的:(它破坏了整个网站:变成一个空白页面)

function woocommerce_skip_cart() {
global $woocommerce;
$product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_POST['add-to-cart'] );
$product = wc_get_product( $product_id );
  

if ( $product->is_type( 'subscription' ) ){
    $checkout_url = WC()->cart->get_checkout_url();
    return $checkout_url;
}
}
add_filter ('woocommerce_add_to_cart_redirect', 'woocommerce_skip_cart');

知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

我修改了你的代码。试试下面的代码。

function woocommerce_skip_cart( $url ) {
    $product_id = (int) apply_filters( 'woocommerce_add_to_cart_product_id', $_POST['add-to-cart'] );
    if( $product_id ){
        $product = wc_get_product( $product_id );
        if ( $product->is_type( 'subscription' ) || $product->is_type( 'variable-subscription' ) ){
            $checkout_url = WC()->cart->get_checkout_url();
            return $checkout_url;
        }
    }
    return $url;
}
add_filter ('woocommerce_add_to_cart_redirect', 'woocommerce_skip_cart');