admin管理员组

文章数量:1417050

I've seen this question posted before but not exactly trying to achieve what I want.

Basically what I want is: If user is not logged in AND is on -this page- OR -this page- OR -this page, redirect him to -this page- (which is a custom registration page)

I'm tweaking this piece of code, but it's not working. I'll appreciate any type of guidance.

<?php
function redirect_non_logged_in(){
  // if user is not logged and is on this pages
  if( !is_user_logged_in() && is_page( array( 250, 253 ) ) { 
    //This redirects to the custom login page.
    wp_redirect(site_url('/user-registration'));
    exit();
  }
}
add_filter('get_header','redirect_non_logged_in');
?>

I've seen this question posted before but not exactly trying to achieve what I want.

Basically what I want is: If user is not logged in AND is on -this page- OR -this page- OR -this page, redirect him to -this page- (which is a custom registration page)

I'm tweaking this piece of code, but it's not working. I'll appreciate any type of guidance.

<?php
function redirect_non_logged_in(){
  // if user is not logged and is on this pages
  if( !is_user_logged_in() && is_page( array( 250, 253 ) ) { 
    //This redirects to the custom login page.
    wp_redirect(site_url('/user-registration'));
    exit();
  }
}
add_filter('get_header','redirect_non_logged_in');
?>
Share Improve this question edited Mar 20, 2014 at 13:29 gmazzap 46.3k6 gold badges95 silver badges147 bronze badges asked Mar 19, 2014 at 0:54 rohnrohn 131 gold badge1 silver badge3 bronze badges 0
Add a comment  | 

2 Answers 2

Reset to default 6

Your function is fine, but 'get_header' it's too late.

Use template_redirect instead:

add_action( 'template_redirect', function() {

  if ( is_user_logged_in() || ! is_page() ) return;

  $restricted = array( 250, 253 ); // all your restricted pages

  if ( in_array( get_queried_object_id(), $restricted ) ) {
    wp_redirect( site_url( '/user-registration' ) ); 
    exit();
  }

});

Be sure to not include 'user-registration' page id in $restricted array or you'll experience an endless redirect...

Install page restrict https://da.wordpress/plugins/pagerestrict/

In settings choose login form show no

insert link in restriction message: <a href="https://your login page/">Login</a> to view this page/post

本文标签: Redirect not logged in users if they are on a specific page