我有几个从我的公共页面链接的私人页面。默认情况下,当未登录的用户单击这些链接之一时,他们会获得 404 页面。我希望他们获得一个登录页面,然后继续访问他们请求的页面。
Pete 的 Redirect 插件很棒,但它希望在登录后转到每个用户/角色的特定页面。我想继续访问他们要求的页面。
有什么建议么?谢谢,有钱
这是正确的做法
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)));
}
}
我对 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
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>';
}