在single.php和index.php上分配单个DIV不同的id返回500错误


Wordpress: assigning a single DIV different IDs on single.php and index.php returns 500 error

我正在修改一个Wordpress主题,并遇到了一个设计问题,要求我在single.php和index.php模板上使用不同的包装器div id。原div的开始标记存在于header.php模板中,如下所示:

<div id="wrap" class="clearfix">

我尝试的修改看起来像这样:

<div id="<?php if ( is_single() ) { 'single-wrap' } else { 'wrap' } ?>" class="clearfix">

我也试过

<div id="<?php if ( is_single() ) { 'single-wrap' } elseif ( is_front_page() ) { 'wrap' } else { 'wrap' } ?>" class="clearfix">

<div id="<?php if ( is_single() ) { 'single-wrap' } elseif ( is_home() ) { 'wrap' } else { 'wrap' } ?>" class="clearfix">

这些解决方案都没有成功。实际上,每一个都破坏了主题,返回一个500(内部服务器错误),在服务器试图完成请求时指定一个意外的条件(我假设是我在ID属性中放入的php if语句)。

现在,我以前做过简单的Wordpress主题,所以我理解主题层次结构是如何工作的;我也很擅长Javascript和Python,所以我理解编程逻辑。这是PHP的语法问题吗?还是我错过了更深层的东西?

任何帮助都将非常感激!

(如果有帮助的话,我想修改的主题是AJ Clarke的《俄罗斯方块》)

我还应该提到ID "single-wrap"已经在css中定义了。

首先,您没有回显id !

试试这个:

<div id="<?php if ( is_single() ) { echo 'single-wrap'; } else { echo 'wrap'; } ?>" class="clearfix">

此外,许多主题将根据页面类型为body元素添加类,例如single, archive, home等。您可以通过简单地使用CSS选择器body.single #wrap来覆盖#wrap中定义的需要更改的任何内容来实现这一点。