在单页上发布缩略图(如果有其他情况)

时间:2014-01-06 作者:Frederick Andersen

我目前正在一个网站的首页上有以下新闻文章:

Screenshot

为此,我需要编写两个简单的PHPif statements、 我已经成功地完成了,但是single.php 这对我来说很麻烦。

在frontpage上,我有以下内容来显示屏幕截图中的两篇新闻文章:

<div id="articles">
<?php query_posts(\'cat=45&posts_per_page=1\'); if (have_posts()) : while (have_posts()) : the_post(); ?> <!-- Query for "System Updates" -->
    <div class="unit one-of-three system-update">
        <article <?php post_class() ?> id="post-<?php the_ID(); ?>">

            <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } else { echo "<img src=\'/wp-content/themes/bosted-system/_/inc/images/system-update-small.png\' alt=\'Bosted System Update\'>"; } ?>

            <div class="description">
                <span class="date">System Update</span>
                <a href="<?php the_permalink() ?>"><h2><?php the_title(); ?></h2></a>
                <span class="date"><?php the_time(\'F j, Y\') ?></span>
            </div>

        </article>
    </div>
<?php endwhile; endif; ?>

<?php query_posts(\'cat=1&posts_per_page=1\'); if (have_posts()) : while (have_posts()) : the_post(); ?> <!-- Query for "Information" -->
    <div class="unit one-of-three info">

        <article <?php post_class() ?> id="post-<?php the_ID(); ?>">

            <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } else { echo "<img src=\'/wp-content/themes/bosted-system/_/inc/images/information-small.jpg\' alt=\'Bosted System Information\'>"; } ?>

            <div class="description">
                <span class="date">Information</span>
                <a href="<?php the_permalink() ?>"><h2><?php the_title(); ?></h2></a>
                <span class="date"><?php the_time(\'F j, Y\') ?></span>
            </div>

        </article>
    </div>
<?php endwhile; endif; ?>

非常直截了当。然而,在single.php-page我遇到了一个问题。我有以下几点:

<div class=\'banner\'><?php if ( in_category("1") ) { the_post_thumbnail(); } elseif ( in_category("45") ) { echo "<img alt=\'Bosted System Update\' class=\'system-update\' src=\'/wp-content/themes/bosted-system/_/inc/images/system-update-big.png\'/>"; } else { echo "<img class=\'system-update\' alt=\'Bosted Information\' src=\'/wp-content/themes/bosted-system/_/inc/images/information-big.jpg\'/>"; } ?></div>
这是我第一次不得不写这样的声明,我真的搞不清楚。

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

我试着以一种更喜欢的方式重构代码,仅此而已。从逻辑上讲,这似乎是可行的。我所做的是:

我更喜欢WP_Query() 因为有经验的WordPress爱好者喜欢这样的自定义查询(We can learn more)get_template_directory_uri()wp_reset_postdata() 要重置查询,请执行以下操作WP_Query() 在该块中,新代码如下:

<div id="articles">
<?php $system_updates = new WP_Query( array(\'cat\'=>\'45\', \'posts_per_page\'=>\'1\') ); //Query for "System Updates" ?>
<?php if ($system_updates->have_posts()) : while ($system_updates->have_posts()) : $system_updates->the_post(); ?>
    <div class="unit one-of-three system-update">
        <article <?php post_class() ?> id="post-<?php the_ID(); ?>">

            <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } else { echo "<img src=\'" . get_template_directory_uri() . "/_/inc/images/system-update-small.png\' alt=\'Bosted System Update\'>"; } ?>

            <div class="description">
                <span class="date">System Update</span>
                <a href="<?php the_permalink() ?>"><h2><?php the_title(); ?></h2></a>
                <span class="date"><?php the_time(\'F j, Y\') ?></span>
            </div>

        </article>
    </div> <!-- .system-update -->
<?php endwhile; endif; wp_reset_postdata(); ?>

<?php $information = new WP_Query( array(\'cat\'=>\'1\', \'posts_per_page\'=>\'1\') ); //Query for "Information" ?>
<?php if ($information->have_posts()) : while ($information->have_posts()) : $information->the_post(); ?>
    <div class="unit one-of-three info">

        <article <?php post_class() ?> id="post-<?php the_ID(); ?>">

            <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } else { echo "<img src=\'" . get_template_directory_uri() . "/_/inc/images/information-small.jpg\' alt=\'Bosted System Information\'>"; } ?>

            <div class="description">
                <span class="date">Information</span>
                <a href="<?php the_permalink() ?>"><h2><?php the_title(); ?></h2></a>
                <span class="date"><?php the_time(\'F j, Y\') ?></span>
            </div>

        </article>
    </div> <!-- .info -->
<?php endwhile; endif; wp_reset_postdata(); ?>
</div> <!-- #articles -->
关于single.php, 我以同样的方式重构了代码。只要确保你有the_post() 一开始:

<?php the_post(); ?>
<div class=\'banner\'><?php if ( in_category(\'1\') ) { the_post_thumbnail(); } elseif ( in_category(\'45\') ) { echo "<img alt=\'Bosted System Update\' class=\'system-update\' src=\'" . get_template_directory_uri() . "/_/inc/images/system-update-big.png\'/>"; } else { echo "<img class=\'system-update\' alt=\'Bosted Information\' src=\'" . get_template_directory_uri() . "/_/inc/images/information-big.jpg\'/>"; } ?></div>
让我们试试这些。我不知道你的代码为什么不起作用。。。

结束

相关推荐

php console log speed

如何在php中将速度基准记录到控制台?我不想echo 结果供用户查看,但只是在某种日志中。我知道我可以用this:$first = new DateTime( \'11:35:20\' ); $second = new DateTime( \'12:00:45\' ); $diff = $first->diff( $second ); echo $diff->format( \'%H:%I:%S\' ); // -> 00:25:25