根据$POST使用哪个挂钩进行重定向

时间:2013-08-19 作者:Damon

如果用户未登录并且正在访问某些帖子类型,则尝试添加要重定向的操作。问题是,在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();
        }
    }
}

1 个回复
最合适的回答,由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 因为该函数检查用户是否登录,但我们已经知道用户没有登录。

结束

相关推荐

使用wp_reDirect和.htaccess重新路由搜索(并传递剩余的GET变量)

我想用wp_redirect() 将搜索重定向到我在中建立的格式.htaccess. 不幸的是,我在做这件事时遇到了一些问题。我需要将搜索重定向到一系列文件夹,然后将剩余参数附加到URL的末尾,最终结果如下所示:http://www.xxxxxxx.com/search/Used/MT/Billings/?s=BMW&z=59105&r=150&m=150000&pmin=1000&pmax=30000&submit=Refine 到目前为止,我