使用主页横幅的条件标记

时间:2012-06-01 作者:kia4567

我正在设置wordpresswebsite on my server now 并且在主页上有旋转图像,这很漂亮,但现在我想有一个条件标记,告诉wordpress如果不是主页,请使用每页的特色图像。

这是我在主页上放置的代码,用于显示来自iThemes的插件旋转横幅。com公司

<?php if (function_exists(\'dynamic_sidebar\') && dynamic_sidebar(\'banner-widget\')) : else : ?>  
  <p><img class="banner" src="<?php bloginfo(\'template_directory\') ?>/img/BANNER1-averylawoffice.jpg" alt="Banner 1"></p>
<?php endif; ?>
它工作得很好!我的widget已经准备好了,所有的图像都在那里,并且可以正常工作。现在我有了这段代码,我想把它放进if-else语句中,这样如果页面不是主页,就显示特色图像。

我不是程序员专家,为了得到这段代码,我四处寻找了很多,但是它不起作用,我只看到主页上有一个空白点,页面其余部分的图像都是应该的。

<?php if (is_home()) {
    <?php if (function_exists(\'dynamic_sidebar\') && dynamic_sidebar(\'banner-widget\')) : else : ?>  
        <p><img class="banner" src="<?php bloginfo(\'template_directory\') ?>/img/banner.jpg" alt="Banner 1"></p>
    <?php endif; ?>
} else { ?>
    <div id="banner"><?php the_post_thumbnail( 863, 328 );?></div>
<?php } ?>
我做错了什么,是为了不得到我想要的效果?我知道这很简单,所以我不想用一个无用的插件来做这件事,因为它会很慢。

任何帮助或建议都会很好!

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

我认为您需要调整多个问题:

在第二个if 陈述那不应该在那里is_home() 是你想要的。如果您有一个静态首页(在设置>阅读中设置),那么您实际上需要is_front_page(). 想想is_home()is_blog() (要明确,is_blog() 不存在)the_post_thumbnail() 宽度和高度,它需要在一个数组中。另一个选项是在函数中定义图像大小。php,然后在那里调用它

  • 我认为只要始终将横幅包装在#banner div中,您的HTML就会更干净。
  • 为了确保您始终有一个图像,我会检查以确保您有一个帖子缩略图集,并确保您有回退
  • 所有这些建议都包含在代码中,下面是我的建议:

    在您的功能中。php添加:

    add_image_size( \'banner\', 863, 328, true );
    
    无论您的横幅片段在哪里:

    <!-- Let\'s always wrap our banner in the banner div for easy styling -->
    <div id="banner">
    <?php
    
    // Check to see if we\'re on a non-home-page and if the non-home-page has a featured image. use is_front_page() if that\'s desired
    if( !is_home() && has_post_thumbnail() ) {
    
        get_the_post_thumbnail( \'banner\' );
    
    // if we\'re on the home page OR don\'t have a featured image but DO have a dynamic sidebar
    } elseif ( function_exists(\'dynamic_sidebar\') && is_dynamic_sidebar(\'banner-widget\') ) {
    
        dynamic_sidebar(\'banner-widget\');
    
    // no featured image or on homepage with no sidebar, spit out a static image
    } else {
        echo \'<img class="banner" src="\' . get_template_directory_uri() . \'/img/banner.jpg" alt="Banner 1">\';
    }
    ?>
    
    更新:决赛echo 这份声明之前完全是一团糟。很抱歉我把它清理干净了,我想现在应该可以用了。我还重播了bloginfo() 函数(现在已弃用)和新的首选等效函数。

    SO网友:Michelle

    你可能想试试is_front_page() 而不是is_home(). is_home() 当您最近的帖子显示在主页上时,返回true;is_front_page() 如果已在“设置”>“读取”中将其设置为静态页面,则返回true。

    有关更多信息,请参阅本文:http://codex.wordpress.org/Conditional_Tags#The_Conditions_For_...

    希望这有帮助!

    SO网友:Chip Bennett

    如果问题中的代码与主题中的代码完全相同,那么我看到的唯一真正的问题是PHP语法错误:

    <?php if (is_home()) {
        <?php 
    
    当您已经有一个打开的PHP标记时,您正在打开一个PHP标记。

    尝试删除第二个PHP标记。

    结束

    相关推荐

    homepage loading too slow

    我将一个网站转移到VPS,当我打开该网站时,主页的加载时间太长,对我来说,仅仅显示主页需要30-35秒,但当我以正常速度浏览它加载的内部页面时,我也尝试了这一方法,当时我的所有插件都已停用,但没有变化,加载需要时间。