WP新手:使用Else/If语句显示多个标头。性交

时间:2011-12-18 作者:awesome

这段代码很好,但如果我尝试复制最后3行,并添加一个新的自定义页面和一个新的自定义标题类,它将不起作用。我只想向我的WP站点添加2个新页面,其中包含与首页和站点其余部分不同的标题(设置为对没有特定标题的其余站点页面使用wrapper8)<参见:www.friendsofnamibianchildren。org相反,非常恼人,它将wrapper8应用于我添加的任何新页面,从而应用了错误的模板。

<?php if(is_front_page()) {?>
<div class="wrapper">
<?php } else { ?>
<div class="wrapper8">
<?php }?>
<?php if (is_page(\'About Us\')) {?>
<div class="wrapper2">
<?php }?>
<?php if (is_page(\'Our Work\')) {?>
<div class="wrapper3">
<?php }?>
<?php if (is_page(\'Get Involved\')) {?>
<div class="wrapper4">
<?php }?>
<?php if (is_page(\'About Namibia\')) {?>
<div class="wrapper5">
<?php }?>
<?php if (is_page(\'Donate\')) {?>
<div class="wrapper6">
<?php }?>
<?php if (is_page(\'Photos\')) {?>
<div class="wrapper7">
<?php }?>
如果尝试在下面添加这3行(基本上是一个新的带有“wrapper9”标题的站点地图页面),那么所有的站点模板都会弄乱。

<?php if (is_page(\'Sitemap\')) {?>
<div class="wrapper9">
<?php }?>
谢谢。

4 个回复
SO网友:booota

您的站点似乎没有名为Sitemap的页面。当我这么说的时候,它确实意味着检查你的代码,只需检查你网站的仪表板。在“页面”部分下,单击“所有页面”链接。这将显示站点的所有页面。在那里,您可以查看是否有标题为“Sitemap”的页面。如果没有,则创建一个并将其标题指定为“Sitemap”(不带引号)。我相信,你会得到结果的。

SO网友:CookiesForDevo

它将wrapper8应用于任何新页面,因为它不是第一条if/else语句中的首页。您需要将它们全部连接到一个if/else语句字符串中。

这里的代码稍微整理了一下(如果不是那么晚,我会尽量把它简化为一个数组):

<?php 
    $pages = array(\'About Us\',\'Our Work\', \'Get Involved\', \'About Namibia\', \'Donate\', \'Photos\', \'Sitemap\');
    $wrappers = array(
        \'About Us\'      =>  \'wrapper2\',
        \'Our Work\'      =>  \'wrapper3\',
        \'Get Involved\'  =>  \'wrapper4\',
        \'About Namibia\' =>  \'wrapper5\',
        \'Donate\'        =>  \'wrapper6\',
        \'Photos\'        =>  \'wrapper7\',
        \'Sitemap\'       =>  \'wrapper9\'
    );
    if ( is_front_page() ) {
        $wrap = \'wrapper\';
    } elseif (is_page($pages)) {
        $wrap = $wrappers[get_the_title()];
    } else {
        $wrap = \'wrapper8\';
    }
?>
    <div class="<?php echo $wrap; ?>">

SO网友:Sean Holcroft

有时使用Wordpress时,我在通过is\\u page()应用某些内容时遇到问题。我经常做的解决方法是在IF条件中使用\\u permalink()。诚然,如果您想要可重用的代码,这并不是最好的选择,但在另一个项目上,只需再过几分钟就可以进行调整。

SO网友:mrwweb

看起来您正在尝试为每个页面上的样式创建唯一的类。与其完成所有这些工作(并且必须为每个新页面更新主题,这从长远来看是不可持续的),不如研究body_class() 作用您可以这样使用它:

<body <?php echo body_class(); ?>>
正如codex文章所示,它为您提供了大量可使用的类。更好的是,如果需要添加更多内容,只需向函数传递一个可能事先动态定义的参数:

<body <?php echo body_class( $my_custom_class ); ?>>

结束

相关推荐