使用include()在template_redirect上的WordPress页面的标题中找不到页面

时间:2013-09-03 22:50:32

标签: php wordpress rewrite

我已经为我的Wordpress网站添加了一个自定义重写规则,如下所示:

add_rewrite_rule( 'register/bronze', 'index.php?action=register&type=2', 'top' );

然后在template_redirect操作中,我检查action querystring变量并加载我的include,如下所示:

$action = get_query_var( 'action' );

if( $action == "register" ) {
    include( BG_FILE_PATH . '/templates/register-brand.php' );
    exit;
}

一切正常,我的自定义模板显示,但页面标题显示为“找不到页面|网站名称”。

我可以通过自定义模板设置页面标题吗?我试图避免将这些页面设置为Wordpress页面,因为它们是网站运行的基础,我不希望其中一个管理员更改页面设置或完全删除页面。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

WordPress可能会覆盖您的标题,因为它仍然会抛出404(您可以使用firebug验证这一点)。

在模板重定向中包含文件时,WordPress通常会抛出404。

您需要使用以下代码重置标头:

global $wp_query;
$wp_query->is_404 = false;
status_header( '200' ); //if status_header doesn't work, try header("HTTP/1.1 200 OK")

//now that you reset the 404, you can proceed with your include
$action = get_query_var( 'action' );

    if( $action == "register" ) {
        include( BG_FILE_PATH . '/templates/register-brand.php' );
        exit;
    }

这应该重置状态标题并允许包含文件的标题正常显示。不需要javascript :)

答案 1 :(得分:0)

您可以通过插入一小段JavaScript来完成此操作:

<script>
$(document).ready(function() {
    document.title = 'your title here';
});
</script>

如果您希望标题是动态的,请替换为:

document.title = <?php echo 'your dynamic title here'; ?>;