0

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

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

然后在template_redirect操作中,我检查action查询字符串变量并像这样加载我的包含:

$action = get_query_var( 'action' );

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

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

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

任何帮助深表感谢。

4

2 回答 2

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 :)

于 2014-02-27T13:17:38.753 回答
0

您可以通过插入一小段 JavaScript 来做到这一点:

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

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

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

于 2013-09-04T06:01:18.807 回答