我想将管理员用户重定向到维护页面(https://mysite/maintenance/),但firefox告诉我重定向未正确制作
add_action( 'template_redirect', 'custom_redirect' );
function custom_redirect()
{
if (current_user_can('administrator')) {
wp_redirect( home_url('/maintenance/') );
exit;
}
}
有你的想法吗?
答案 0 :(得分:0)
您应该使用template_include过滤器:
add_filter('template_include', 'wpse_44239_template_include', 1, 1);
function wpse_44239_template_include($template){
if (current_user_can('administrator')) {
wp_redirect( home_url('/maintenance/') );
exit;
}
return $template;
}
template_redirect
是在为渲染模板的输出发送标头之前直接调用的操作。它是一个方便的钩子来做404重定向等...但不应该用于包含其他模板路径,因为WordPress使用'template_include'过滤器固有地这样做。
template_include
和single_template
挂钩仅处理用于呈现内容的模板的路径。这是调整模板路径的适当位置。
答案 1 :(得分:0)
Firefox报告的具体错误是什么?听起来它可能是一个无限重定向循环。我建议添加一张支票,以确保您不在维护页面上,即:
add_action( 'template_redirect', 'custom_redirect' );
function custom_redirect()
{
if (current_user_can('administrator'))
{
global $wp;
$current_url = home_url( $wp->request );
$position = strpos( $current_url , '/maintenance/' );
if ($position===FALSE) {
wp_redirect( home_url('/maintenance/') );
exit;
}
}
}