我正在使用以下代码使 woocommerce 上的所有产品无法购买,除非用户登录。
function et_remove_atc(){
if( ! is_user_logged_in() ){
return false;
}else{
return true;
}
}
add_filter( 'woocommerce_is_purchasable', 'et_remove_atc' );
这仅适用于简单产品,不适用于可变产品。我尝试添加以下附加过滤器,但这不起作用。
add_filter( 'woocommerce_variation_is_purchasable', 'et_remove_atc', 10, 2 );
我错过了什么?
答案 0 :(得分:1)
您对可变产品及其变体使用了正确的挂钩。请注意,可变产品上的添加到购物车按钮对客人来说将保持灰色(禁用)。如果不是这种情况,则可能是由于插件、您的主题自定义或您进行的其他一些自定义。
要使用的正确代码是:
add_filter( 'woocommerce_is_purchasable', 'avoid_guest_purchases' );
add_filter( 'woocommerce_variation_is_purchasable', 'avoid_guest_purchases' );
function avoid_guest_purchases( $is_purchasable ){
if( ! is_user_logged_in() ){
return false;
}
return $is_purchasable;
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。
要删除客人的变量添加到购物车按钮(在单个产品页面上),请使用以下内容:
add_action( 'woocommerce_single_product_summary', 'remove_variable_add_to_cart_button', 1 );
function remove_variable_add_to_cart_button() {
global $product;
// For variable product types (keeping attribute select fields)
if( $product->is_type( 'variable' ) && is_user_logged_in() ) {
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
}
}
代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。
答案 1 :(得分:0)