我想在我的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');
你想到了什么?
答案 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');