4

我有几个从我的公共页面链接的私人页面。默认情况下,当未登录的用户单击这些链接之一时,他们会获得 404 页面。我希望他们获得一个登录页面,然后继续访问他们请求的页面。

Pete 的 Redirect 插件很棒,但它希望在登录后转到每个用户/角色的特定页面。我想继续访问他们要求的页面。

有什么建议么?谢谢,有钱

4

3 回答 3

8

这是正确的做法

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)));

    } 
}
于 2016-09-23T11:45:47.070 回答
3

我对 Tu Bui 的回答有一些问题。这是一个改进的版本。

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;
    }
}

这是一个小插件中的相同代码:https ://github.com/wearerequired/private-page-login

于 2020-10-06T06:51:05.053 回答
0
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>';
}
于 2013-11-12T15:34:01.943 回答