自定义WordPress文件包含

时间:2011-07-05 作者:SpyrosP

我正在创建自己的wordpress主题。我决定使用不同的方法来处理主题,而不是使用标准的get\\u header()等函数。

我要做的是有一个总的主管道。php页面,由每个页面(如博客)加载。php,索引。php,第页。php等。然后,此主页将负责创建必要的模板并显示相关页面。

现在,我理想地希望创建一种类似于标准开关的开关,其中包括文件,如:

$page = isset($_REQUEST[\'page\']) ? $_REQUEST[\'page\'] : \'home\';

switch($page)
{
    case \'home\':           break;
    case \'mail\':           break;
    case \'contact\':        break;
    default:
        $page = \'home\';
}

include("$page.php");
我怎么能为wordpress做这样的事?是否有一种干净的方法可以知道包含的页面是否是博客。php,单个。php或其他页面,以便我可以区分它们?

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

首先,为什么这是一个糟糕的想法WordPress已经提供了一个丰富的模板API,允许其他插件在需要的地方连接到您的主题。如果插件需要提供额外的JavaScript或CSS,那么它们将与wp_head. 如果他们需要将一些JavaScript延迟到页面底部,他们可以将wp_footer. 如果他们添加插件,他们会使用内置的动态侧栏。

通过完全绕过主题,您实际上是在阻止用户对其站点执行您尚未内置到显示引擎中的任何操作。你还从一开始就扔掉了大约一半的WordPress。

另一种选择是,我建议您使用现有系统。WordPress提供了许多挂钩、模板标记和条件标志,让您可以检测您所在的页面,并在需要时加载不同的模板。

中对通用模板层次结构进行了很好的讨论the Codex.

您可以为每个页面设置不同的页面模板,然后在WordPress中编写页面时,只需选择正确的模板即可。

所以,而不是include("$page.php"), 您的主题中有三个文件:

  • page_home.php
  • page_mail.php
  • page_contact.php
然后,在每个文件的顶部,都包含以下标题:

<?php
/**
 * Template Name: [YourPageTemplateName]
 * Describe what the template is for
 *
 * @package [YourThemeName]
 */
例如,从page_contact.php 在“我的”;“堆叠”;主题:

<?php
/**
 * Template Name: Contact
 * This file handles contact pages.
 *
 * @package StackedTheme
 */

SO网友:kaiser

您可以简单地使用查询来完成这样的事情。实际上,不同的页面并不存在。仅当模板存在时才加载get。

写下就足够了:

if ( is_home() || is_front_page() )
{
    // do stuff
}
elseif ( is_archive() )
    // etc.
}

结束

相关推荐