Here’s an updated version of the code that successfully redirects users who are not logged in to a specific page when they try and view a tag or category archive or a singular post.
add_action( 'template_redirect', 'wpse_redirect_to_specific_page' );
function wpse_redirect_to_specific_page() {
// Bail if the user is logged in.
if ( is_user_logged_in() ) {
return;
}
// Redirect to a special page if the user is trying to access
// a category or tag archive or a single post.
if ( is_category() || is_tag() || is_singular( 'post' ) ) {
// Set the ID of the page to redirect to.
// Change the ID to the desired page to redirect to.
$redirect_to_page_id = 1086;
wp_safe_redirect( get_permalink( $redirect_to_page_id ), 301 );
exit;
}
}
Handling custom taxonomies
If you’d like to redirect custom taxonomy archive pages, you could add is_tax()
to the conditional statement that wraps the redirect code.
Handling custom post types
If you’d like to do the same for all post type singular pages, you could use is_singular()
without passing the post
parameter, or for specific post types, pass an array of post type names.