让我首先说抱歉,这个标题有些含糊。更具体地说,标题应该是:
如何在 woocommerce Storefront 主题(可能还有其他主题)产品档案页面(又名商店页面)中选择“添加到购物车”按钮的行为,以便将商品添加到购物车然后留在商店中页面,或重定向到购物车。
不过这个标题好长……
让我首先说抱歉,这个标题有些含糊。更具体地说,标题应该是:
如何在 woocommerce Storefront 主题(可能还有其他主题)产品档案页面(又名商店页面)中选择“添加到购物车”按钮的行为,以便将商品添加到购物车然后留在商店中页面,或重定向到购物车。
不过这个标题好长……
重定向到自定义 URL:
function my_custom_add_to_cart_redirect( $url ) {
$url = get_permalink( 1 ); // URL to redirect to (1 is the page ID here)
return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
重定向到结帐:
function my_custom_add_to_cart_redirect( $url ) {
$url = WC()->cart->get_checkout_url();
return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
重定向某些类别:
function my_custom_add_to_cart_redirect( $url ) {
if ( ! isset( $_REQUEST['add-to-cart'] ) || ! is_numeric( $_REQUEST['add-to-cart'] ) ) {
return $url;
}
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
// Only redirect products that have the 't-shirts' category
if ( has_term( 't-shirts', 'product_cat', $product_id ) ) {
$url = WC()->cart->get_checkout_url();
}
return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
可能有一种方法可以使用 woocommerce 钩子和过滤器来做到这一点,但是在花了一些时间尝试以这种方式解决这个问题之后,我偶然发现了一个简单的解决方案,该解决方案起初并不完全明显。
解决方案:选中或取消选中WP 管理区域的WooCommerce > Products > Display > Add to Cart Behavior部分下的“ Enable AJAX add to cart buttons on archives ”按钮。
这显然正是这个按钮的用途,然而,在我看来,这个复选框的标题非常具有误导性,这就是为什么我花了这么长时间才找到这个解决方案的原因。它可能应该更改为更像:“从存档(商店)成功添加后重定向到购物车页面”。使用首字母缩略词 AJAX 是不必要的,并且对于复选框的效果非常具有误导性......