在发布页面中包含404页

时间:2017-05-18 作者:Abuzer Killibacak

我创建了自定义查询变量。所以如果查询变量不存在,我需要包括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 
}

1 个回复
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 如果在该点设置,则它包含一个定义的有效页面。

结束

相关推荐

Posts per page, reverse count

假设我在我的博客上有10篇文章,每页最多7篇,这就是我得到的:第1页(主页):7篇文章第2页:3篇文章,但我需要这个:第1页(主页):3篇文章第2页:7篇文章我需要从最后一页开始发帖,你知道怎么做吗?