我想通过打印404错误来隐藏BuddyPress安装中的一些页面。
借助以下问题:Redirect Restricted Page to 404我想出了以下代码:
global $wp_query;
$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();
页面的大部分都被很好地隐藏了,并且打印出了404错误,但是在此代码之前打印的内容仍然保留了下来(包括我想要隐藏的页面的标题)。
不幸的是,在打印任何内容之前,我无法将此代码向上移动。
那么有没有办法clear everything that has been printed before 然后print a fresh 404 error 但是有keeping the current URL? (因此没有重定向到404.php页面。)
最合适的回答,由SO网友:Milo 整理而成
您应该在模板之外使用筛选器:
add_filter( \'template_include\', \'wpa62226_template_include\', 1, 1 );
function wpa62226_template_include( $template ){
if( is_page( \'some-page\' ) ) :
global $wp_query;
$wp_query->set_404();
status_header( 404 );
$template = locate_template( \'404.php\' );
endif;
return $template;
}
您的代码是在加载模板之前执行的,因此它不会成为问题。