如果未登录,则重定向到注册页面并尝试访问受限页面

时间:2018-02-22 09:10:44

标签: php wordpress woocommerce

我想在我的woocommerce网站上限制对产品的访问。 如果用户没有登录,我想将它们重定向到注册页面。 我使用此代码但我的所有产品都重定向到注册页面:

function wpse_131562_redirect() {
    if (! is_user_logged_in()

&& (is_woocommerce() || is_cart() || is_single(1735) || is_checkout())
) {

   // feel free to customize the following line to suit your needs

   wp_redirect( 'https://www.la-chaine-maconnique.fr/my-account/' );

   exit;
   }
}
 add_action('template_redirect', 'wpse_131562_redirect');

你想到了什么?

2 个答案:

答案 0 :(得分:0)

它从所有产品重定向到注册页面的原因是wp_redirect函数在使用is_woocommerce()时使用Woocommerce模板的所有页面上运行。

我认为您需要的是以下内容:

function reg_redirect(){
    if( is_product(1735) && !is_user_logged_in() ) {
       wp_redirect( 'https://www.la-chaine-maconnique.fr/my-account/' );
        exit(); 
    }
}
add_action('template_redirect', 'reg_redirect');

答案 1 :(得分:0)

您可以尝试验证操作员是否正常工作! 你可以改变“&&”使用“和”,或者只在if语句中添加一个条件:这意味着执行以下操作: (请注意,这将重定向所有用户,甚至是已登录的用户)

function wpse_131562_redirect() {
   if ( is_single(1735)) {

   // feel free t`enter code here`o customize the following line to suit your needs
   wp_redirect( 'https://www.la-chaine-maconnique.fr/my-account/' );
   exit;
   }
}
add_action('template_redirect', 'wpse_131562_redirect');

如果上述代码仅适用于您定位的单个产品,请尝试使用您的操作。 一个更好的解决方案是你避免使用is_signle(),it's reported is_single与WooCommerce无法正常工作,你可以尝试以下方法:

function wpse_131562_redirect() {
    global $post;
    if ($post->ID = '1735' and !is_user_logged_in()) {
        // whatever you try to do here for product id = 123 will work!
        wp_redirect( 'https://www.la-chaine-maconnique.fr/my-account/' );
    }
}
add_action('template_redirect', 'wpse_131562_redirect');