如何在不使用任何页面的情况下创建WordPress模板

时间:2014-01-27 作者:Shahar Dekel

我不确定WordPress是为这个而构建的,但这正是我想要实现的:

例如,我想让wordpress中的特定URL可以访问www.example.com/some-template .some-template.php)

搜索时,我只发现可以为至少一个页面创建自定义模板,但该页面必须存在于wordpress中,模板才能工作。

有人知道如何做到这一点吗?

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

您可以使用template_redirect 措施:

add_action( \'template_redirect\', \'wpse131387_template_redirect\' );
function wpse131387_template_redirect( ){
    if ($_SERVER[\'REQUEST_URI\'] == \'/some-template\') {
        global $wp_query;
        $wp_query->is_404 = false;
        status_header(200);
        include(dirname(__FILE__) . \'/some-template.php\');
        exit();
    }
}

SO网友:fischi

你可以用非常简单的方法,把你的文件some-template.php 在WordPress安装的根目录中。

将此添加到.htaccess 将使用some-template.php 对于urlwww.mysite.com/some-template

RewriteRule ^some-template$ ./some-template.php$1  
在您的some-template.php 加载WordPress,包括wp-load.php

include(\'wp-load.php\');
//all your custom goodies
现在您可以访问所有WordPress功能,并且不需要在数据库中有页面。

请注意,如果有人创建页面some-template, 您可能会遇到错误,因为自定义文件导致页面不可见。

结束

相关推荐

Custom post types templates

我已经注册了一个名为“Services”的自定义帖子类型,但当我给这篇帖子提供模板“single Services.php”时,它不接受这个,而是选择了“homepage.php”模板,你能告诉我这个问题吗?它也没有使用“archive services.php”模板,而是使用blog模板(index.php)使现代化代码如下:add_action(\'init\', \'services_register\'); function services_register() { $