Nested conditionals

时间:2015-06-01 作者:Petehawk

我脑子里在琢磨一个小问题。

简言之

如果是主页,则不执行任何操作

如果页面有缩略图,请运行代码,将页面标题弹出到带有合适CSS的全宽缩略图的顶部

如果没有缩略图,则显示正常条目标题

已经走了这么远,但没有走得更远。任何帮助都将不胜感激。

<header class="entry-header">
    <?php
    if ( is_front_page() ) { 
        // This is the home page and do nothing
    } else {
        // if thumbnail show it and add title

    if ( has_post_thumbnail()) : the_post_thumbnail(\'full\'); ?>
        <div class="single-featured-image">
            <h1><?php the_title(); ?></h1>
        </div>
    <?php } else {
        // if no thumbnail then just print title as usual ?>
    <div class="entry-title">
        <h1><?php the_title(); ?></h1>
    </div>
    <?php
    }
}
?>

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

如果我理解正确:

<?php
//if home, do nothing
if( ! is_home() || ! front_page() ) {

    //if has post thumbnail
    if( has_post_thumbnail() ) {        
        the_post_thumbnail( \'full\' );
        echo \'<h1 class="entry-title">\'. get_the_title() .\'</h1>\';
    } else {        
        //no post thumbnail, show normal entry title
        echo \'<h1 class="entry-title">\'. get_the_title() .\'</h1>\';
    }

}
或者,可以轻松完成:

<?php
if( ! is_home() || ! is_front_page() ) {

    if( has_post_thumbnail() )
        the_post_thumbnail( \'full\' );
    echo \'<h1 class="entry-title">\'. get_the_title() .\'</h1>\';

}

SO网友:Tom J Nowell

用英语写出来,明确你的逻辑,也就是说如果你说当Y为真时X应该发生,如果Y为假会发生什么?又称作else. 如果X,那么Y,否则Z

If we\'re on the home page,
    then do nothing
otherwise
    if the page has a thumbnail then
        run code that pops the page title on top of full width thumbnail with suitable CSS
    otherwise,
        just show normal entry title
还要注意一致的缩进,保持代码正确缩进非常重要,可以防止大量明显的bug。好的编辑器会自动缩进。

您的代码没有正确缩进,它还将两种类型的if语句混合在一起,if() { }if () : endif;, 导致if() : } 这是一个语法错误。所以,把开头的if语句放在自己的行上,结尾的部分放在自己的行上,这样就可以清楚地看到发生了什么。一个好的编辑会自动写出{} 为了你,省去了你的努力。如果你的编辑器不做这些事情,你需要切换,有许多免费的编辑器和付费的编辑器会做这件事,而且更多是作为标准

结束

相关推荐