如果用户未登录并且正在访问某些帖子类型,则尝试添加要重定向的操作。问题是,在template\\u重定向期间,$post
为NULL,而其他标头似乎已经发送,因此不会重定向。这里应该采取什么适当的行动?
add_action( \'template_redirect\', \'mytheme_restrict_user_content\' );
function mytheme_restrict_user_content(){
if (!is_user_logged_in() ) {
$restrict = false;
$restricted_post_types = array(\'documentlibrary\', \'events\');
if ( in_array( $post->post_type, $restricted_post_types ) ){
$restrict = true;
}
if ($restrict){
auth_redirect();
}
}
}
最合适的回答,由SO网友:gmazzap 整理而成
add_action( \'pre_get_posts\', \'mytheme_restrict_user_content\' );
function mytheme_restrict_user_content( $query ){
$restricted_post_types = array(\'documentlibrary\', \'events\');
if ( is_main_query() && is_singular($restricted_post_types) && ! is_user_logged_in() ) {
$redirect = set_url_scheme(\'http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']);
wp_redirect( wp_login_url($redirect, true) );
exit();
}
}
我不使用
auth_redirect
因为该函数检查用户是否登录,但我们已经知道用户没有登录。