WooCommerce和IS_USER_LOGGED_IN(),如果没有,则重定向到主页

时间:2012-09-27 作者:bugz

我目前正在使用woocommerce,希望将没有登录的用户重定向到主页,但是我在确定应该在哪里实现这一点时遇到了一点困难

我已经做了研究,并确定使用is\\u user\\u logged\\u()可以查看用户是否已登录。

我尝试在woocommerce/woocommerce功能中实现。php

// When default permalinks are enabled, redirect shop page to post type archive url
    if (is_user_logged_in() && isset($_GET[\'page_id\']) && $_GET[\'page_id\'] > 0 && get_option( \'permalink_structure\' )=="" && $_GET[\'page_id\'] ==     woocommerce_get_page_id(\'shop\') ) :
        wp_safe_redirect( get_post_type_archive_link(\'product\') );
        exit;
    endif;
但它仍然允许页面可见

3 个回复
最合适的回答,由SO网友:Kyle 整理而成

您将要在页面模板的顶部插入代码,以用于希望重定向影响的Woo页面,而不是函数文件。例如,如果您想在用户尝试访问单个产品页面时重定向用户,可以将其放在插件->woocommerce->模板->单个产品的顶部。php页面。

但在编辑模板时,我建议制作一个副本并将其放置在主题目录中,这样当Woo更新时,它不会覆盖您所做的任何更改。因此,对于我上面给出的示例(适用于我的主题)。我会复制单个产品。php并将其放置在主题->代理文件中,然后对该文件进行更改。然后,您的主题将始终在Woo模板文件中的文件之前使用该文件。

SO网友:Tom J Nowell

首先,永远不要编辑其他人的插件或核心wordpress文件。

还可以使用大括号而不是漂亮的格式,因为漂亮的格式会破坏IDE代码高亮显示、大括号匹配、语法检查器和其他方便的工具

因此,请输入以下代码:

// When default permalinks are enabled, redirect shop page to post type archive url
if (is_user_logged_in() && isset($_GET[\'page_id\']) && $_GET[\'page_id\'] > 0 && get_option( \'permalink_structure\' )=="" && $_GET[\'page_id\'] ==     woocommerce_get_page_id(\'shop\') ) {
    wp_redirect( get_post_type_archive_link(\'product\') );
    die();
}
在以下位置之一:

功能顶部。php是Init hook调用上的专用插件

SO网友:Dhirendra Kumawat

Use the code functions.php:

add_filter(\'woocommerce_login_redirect\', \'wc_login_redirect\');

function wc_login_redirect( $redirect_to ) {
     $redirect_to = \'https://www.example.com/\';
     return $redirect_to;
}
结束