如果订阅者在 Woocommerce 商店页面中,则重定向订阅者

Redirect subscribers if they are in Woocommerce shop page

有很多插件可以让这成为可能,但它们不是免费的,所以我实际上是在尝试限制商店、结帐和购物车页面,只针对注册为客户的人,我测试了这段代码functions.php 文件下方:

global $current_user; 
get_currentuserinfo(); 
if (user_can( $current_user, "subscriber" ) && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] == woocommerce_get_page_id('shop') ) {
    wp_redirect( home_url( '/customer-register' ) );
    die();
}

但是它不起作用,可能比我想象的更复杂,你有解决这个问题的方法吗?

您可以尝试以下自定义挂钩函数:

add_action( 'template_redirect', 'subscribers_redirection' );
function subscribers_redirection() {
    if ( ( ! is_user_logged_in() || current_user_can( 'subscriber' ) ) 
    && ( is_shop() || is_product_category() || is_product_tag() || is_product() ) ){
        wp_redirect( home_url( '/customer-register' ) );
        exit();
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。

应该可以。

You don't need to restrict cart and checkout pages as if there is no products added to cart, nothing is displayed.