我正在修改一个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
中定义的需要更改的任何内容来实现这一点。