redirect private page to login first then display page in Wordpress redirect private page to login first then display page in Wordpress wordpress wordpress

redirect private page to login first then display page in Wordpress


This is the right way to do

add_action('wp', 'redirect_private_page_to_login');function redirect_private_page_to_login(){    global $wp_query;    $queried_object = get_queried_object();    if ($queried_object->post_status == "private" && !is_user_logged_in()) {        wp_redirect(home_url('/login?redirect='.get_permalink($queried_object->ID)));    } }


I had a few problems with Tu Bui's answer. Here is an improved version.

add_action( 'wp', 'redirect_private_page_to_login' );function redirect_private_page_to_login(){    $queried_object = get_queried_object();    if (        isset( $queried_object->post_status ) &&        'private' === $queried_object->post_status &&        ! is_user_logged_in()    ) {        wp_safe_redirect( wp_login_url( get_permalink( $queried_object->ID ) ) );        exit;    }}

Here is the same code in a small plugin: https://github.com/wearerequired/private-page-login


if(is_user_logged_in()){echo '<a href="link to pvt page"> pvt page </a>';} else{echo '<a href="link to Login page"> login to continue </a>';}