自定义终结点提供404标头

时间:2015-09-17 作者:Howdy_McGee

我试图编写一个加载模板的通用端点。它可以像预期的那样工作,但有一个小的例外,返回的标题是404-找不到页面。我的重写是否遗漏了什么?以下是当前重写的外观:

/** Register Query Vars **/
function theme_custom_query_vars( $vars ){
    $vars[] = \'map\';
    return $vars;
}
add_filter( \'query_vars\', \'theme_custom_query_vars\' );

/** Register Endpoint **/
function theme_register_endpoints() {
    add_rewrite_endpoint( \'map\', EP_PERMALINK );
}
add_action( \'init\', \'theme_register_endpoints\' );

/** Give Endpoint a Template **/
function endpoint_map_template( $templates = \'\' ){
    global $wp_query;

    if( ! ( isset( $wp_query->query[\'pagename\'] ) && \'map\' == $wp_query->query[\'pagename\'] && ! is_singular() ) ) {
        return $templates;
    }

    include locate_template( \'page-templates/template-map.php\', false, true );
    exit;

}
add_filter( \'template_redirect\', \'endpoint_map_template\' );
我一直在四处寻找解决方案,但一切都在说“哦,把你的重写刷新一下!”但我已经做了很多次了$wp_rewrite (相比之下,仅仅保存permalinks却毫无用处。有人能指出我遗漏了什么或做错了什么吗?

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

我不确定这是否是它不起作用的唯一原因,但我错过了两件事。

我没有添加任何类型的重写规则来测试pagename 而不是query_vars.

/** Register Query Vars **/
function theme_custom_query_vars( $vars ){
    $vars[] = \'map\';
    return $vars;
}
add_filter( \'query_vars\', \'theme_custom_query_vars\' );

/** Register Endpoint **/
function theme_register_endpoints() {
    add_rewrite_rule( \'^map/?\', \'index.php?map=map\', \'top\' );
    add_rewrite_endpoint( \'map\', EP_PERMALINK );
}
add_action( \'init\', \'theme_register_endpoints\' );

/** Give Endpoint a Template **/
function endpoint_map_template( $templates = \'\' ){
    global $wp_query;
    $template = $wp_query->query_vars;

    if ( array_key_exists( \'map\', $template ) && \'map\' == $template[\'map\'] ) {
        include( get_template_directory().\'/page-templates/template-map.php\' );
        exit;
    }
}
add_filter( \'template_redirect\', \'endpoint_map_template\' );

相关推荐

Dynamic Endpoints

我在WordPress外部有一个数据库表,需要为其创建端点。我已经创建了一个页面/cars/ 我计划使用页面模板生成链接。我希望url看起来像/cars/camaro/ ()/cars/%model%/ ). 起初,我认为我可以使用端点,但不知道如何根据从模型表中提取的段塞使它们动态。我也不确定使用Permalink结构标签是更容易还是更好。我甚至不完全确定从哪里开始,我以前创建过“静态”端点,所以我有一个基础可以跳出,但当我到达request 我不知道该怎么办。/** * Add endpoi