我创建了自定义查询变量。所以如果查询变量不存在,我需要包括404页。
function add_rewrites(){
add_rewrite_rule(
\'^custom_post_type/([^/]*)/([^/]*)/?\',
\'index.php?post_type=custom_post_type&name=$matches[1]&sub_pages=$matches[2]\',
\'top\'
);
}
add_action( \'init\', \'add_rewrites\' );
function add_custom_query_var( $vars ){
$vars[] = "sub_pages";
return $vars;
}
add_filter( \'query_vars\', \'add_custom_query_var\' );
例如:
if ( get_query_var( \'sub_pages\' ) == \'\' ) {
//Normal Content
} elseif( get_query_var( \'sub_pages\' ) == \'example\' ){
//Example Content
} else {
//Include or Load 404
}
SO网友:Milo
最有效的方法是拥有一个页面白名单,并在运行查询之前对照该列表检查请求的页面。
function my_parse_query( $wp_query ) {
if( isset( $wp_query->query_vars[\'sub_pages\'] ) ){
$sub_pages = array(
\'example\',
\'another\'
);
if( ! in_array( $wp_query->query_vars[\'sub_pages\'], $sub_pages ) ){
$wp_query->set_404();
status_header( 404 );
}
}
}
add_action( \'parse_query\', \'my_parse_query\' );
然后,一旦到达post类型模板,您就知道如果
sub_pages
如果在该点设置,则它包含一个定义的有效页面。