Php 禁用未登录用户的签出页面

Php 禁用未登录用户的签出页面,php,wordpress,logging,woocommerce,checkout,Php,Wordpress,Logging,Woocommerce,Checkout,在WooCommerce中,我试图找到一种方法来禁用未登录用户的WooCommerce签出页面,或者当他们尝试签出时,他们会被重定向到登录页面 所以他们应该先登录才能继续结账 可能吗 感谢可以使用以下代码重定向尝试访问签出的未登录客户: add_action( 'template_redirect', 'checkout_redirect_non_logged_to_login_access'); function checkout_redirect_non_logged_to_login_ac

在WooCommerce中,我试图找到一种方法来禁用未登录用户的WooCommerce签出页面,或者当他们尝试签出时,他们会被重定向到登录页面

所以他们应该先登录才能继续结账

可能吗


感谢

可以使用以下代码重定向尝试访问签出的未登录客户:

add_action( 'template_redirect', 'checkout_redirect_non_logged_to_login_access');
function checkout_redirect_non_logged_to_login_access() {

    // Here the conditions (woocommerce checkout page and unlogged user)
    if( is_checkout() && !is_user_logged_in()){

        // Redirecting to your custom login area
        wp_redirect( get_permalink( get_option('woocommerce_myaccount_page_id') ) );

        // always use exit after wp_redirect() function.
        exit;
    }
}
然后,您可以在购物车页面中显示一个自定义通知,并带有一个链接到登录区域的按钮,以避免客户失望之前比之后更好地警告客户

// Displaying a message on cart page for non logged users (Optional)
add_action( 'woocommerce_before_cart', 'customer_redirected_displaying_message');
function customer_redirected_displaying_message() {
    if( !is_user_logged_in() ){
        // HERE Type your displayed message and text button
        $message = __('To access checkout, you need first to be logged in', 'woocommerce');
        $button_text = __('Login area', 'woocommerce');

        $cart_link = get_permalink( get_option('woocommerce_myaccount_page_id') );

        wc_add_notice(  $message . '<a href="' . $cart_link . '" class="button wc-forward">' . $button_text . '</a>', 'notice' );
    }
}
//在购物车页面上为未登录的用户显示消息(可选)
添加操作(“购物车前的woocommerce”、“客户重定向的”显示消息”);
函数customer_重定向_显示_消息(){
如果(!用户是否已登录()){
//在此处键入显示的消息和文本按钮
$message=_uuuu('要访问签出,您需要首先登录,''woocommerce');
$button_text=_uuu('Login area','woocommerce');
$cart\u link=get\u permalink(get\u选项('woocommerce\u myaccount\u page\u id');
wc_添加_通知($message.','notice');
}
}
代码位于活动子主题(或主题)的function.php文件或任何插件文件中


代码已经过测试并运行正常。

非常感谢您,@LoicTheAztec您是最棒的。成功了。我是否可以在此代码中添加一条消息,以便仅在发生此重定向时显示在登录页面中?类似于“先登录才能继续签出”的消息