模板如何识别正在使用它的页面?

时间:2013-08-27 作者:Eric

我有一个模板,用于我网站的许多不同部分(关于、新闻等)。导航栏需要在您所在的区域下方显示一个小的图形箭头。我是通过模板传递的:

$page = \'about\';
require(\'header.php\');
。。。但后来我意识到这是行不通的,因为我编辑的模板文件用于一系列不同的部分,而不仅仅是“关于”。

所以我需要一些关于\'page\' 界面屏幕,我可以以某种方式指示用户所在的页面。解决方案的一些想法:

想法1:WordPress是否会在“body”标记上设置某种类来指示您所在的页面(就像它根据页面名称生成一个slug并将其作为类添加到body标记)?然后在CSS中做我需要做的所有事情,而不使事情复杂化我真的不想走整个额外字段的路线,手动将元数据字段添加到我的页面,在页面加载时将其从db中提取,等等。这似乎太过分了,因为我有办法让模板代码识别它在哪个页面上使用。

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

如果模板使用body_class() 喜欢

<body <?php body_class(); ?>>
在这种情况下,body标记类似于:

<body class="page page-id-6 page-template-default">
如果查看页面的id为6,并且使用的模板是默认模板。

看见Codex

然而,在全球$post 变量甚至在标头中和调用之前都可用the_post(). 所以$post->post_name 将包含页面的slug,您可以根据需要使用它。

SO网友:TomC

不确定这是否正是您想要的,但您可能不知道以下功能:http://codex.wordpress.org/Function_Reference/is_page例如,您可以使用以下选项:

if (is_page( \'About\' )) {
    // Do Something
}

结束

相关推荐

1 post, 2 templates

我想能够呈现两种不同的风格(2个模板)后。例如,假设我有post ID 133,我希望有两个url来访问它,因此它会呈现不同模板应用的位置。洛雷姆。com/render1/133。com/render2/1333,例如。。。或者可能是这样的:洛雷姆。com/post/133和lorem。com/post/133?模板=2您将如何操作?