3张来自定制贴子类型的随机图片,每张图片都在不同类别的div中

时间:2013-11-07 作者:Maartje

我正在尝试使用查询帖子构建一个循环,以显示自定义帖子类型“公文包”中的3幅特色图片。我的问题是,每幅图片都必须位于一个具有不同类的div中,所以我想到了树的不同循环,但你有一个问题,有时一幅图片会显示两到三次。而且我认为在一个循环内是可能的,我只是不知道怎么做。

我现在拥有的是:

<div class="pc_wrapper">
    <?php query_posts( \'post_type=portfolio&showposts=1\' . \'&orderby=rand&order=ASC&posts_per_page=-1\'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="pcscreen side left"><?php $featured = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "Full"); ?>
        <img src="<?php bloginfo(\'template_url\');?>/thumb.php?src=<?php echo $featured[0]; ?>&amp;w=360&amp;h=213&amp;zc=1&amp;q=100&amp;" width="360" height="210" data-thumb="<?php bloginfo(\'template_url\');?>/thumb.php?src=<?php echo $featured[0]; ?>&amp;w=360&amp;h=213&amp;zc=1&amp;q=100&amp;" alt="<?php the_title(); ?>" /></div>
    <?php endwhile; endif; ?>
    <?php query_posts( \'post_type=portfolio&showposts=1\' . \'&orderby=rand&order=ASC&posts_per_page=-1\'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="pcscreen middle"><?php $featured = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "Full"); ?>
        <img src="<?php bloginfo(\'template_url\');?>/thumb.php?src=<?php echo $featured[0]; ?>&amp;w=660&amp;h=310&amp;zc=1&amp;q=100&amp;" width="560" height="310" data-thumb="<?php bloginfo(\'template_url\');?>/thumb.php?src=<?php echo $featured[0]; ?>&amp;w=660&amp;h=310&amp;zc=1&amp;q=100&amp;" alt="<?php the_title(); ?>" /></div>
    <?php endwhile; endif; ?>
    <?php query_posts( \'post_type=portfolio&showposts=1\' . \'&orderby=rand&order=ASC&posts_per_page=-1\'); ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="pcscreen side right"><?php $featured = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "Full"); ?>
        <img src="<?php bloginfo(\'template_url\');?>/thumb.php?src=<?php echo $featured[0]; ?>&amp;w=360&amp;h=213&amp;zc=1&amp;q=100&amp;" width="360" height="210" data-thumb="<?php bloginfo(\'template_url\');?>/thumb.php?src=<?php echo $featured[0]; ?>&amp;w=360&amp;h=213&amp;zc=1&amp;q=100&amp;" alt="<?php the_title(); ?>" /></div>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>
    </div><!--/pc_wrapper-->
是否有办法在一个循环内完成此操作,并在不同的类别中显示三个不同的随机图片(第一类=“pcscreen side left”第二类=“pcscreen middle”和第三类=“pcscreen side right”

我知道使用jquery是可能的,现在可以确定如何进行详细操作,但我更喜欢在php循环中进行。

有可能吗?如何做到这一点?

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

divs相对来说比较简单,大部分不是一个WordPress问题,但有些WordPress方面需要评论。为确保易读性而重新格式化的截断代码:

$classes = array(
  \'side left\',
  \'middle\',
  \'side right\'
);
$qry = new WP_Query(
  array(
    \'post_type\'=> \'portfolio\',
    \'posts_per_page\' => 3,
    \'orderby\' => \'rand\',
    \'order\' => \'ASC\'
  )
);
if ($qry->have_posts()) { 
  while ($qry->have_posts()) { 
    $qry->the_post(); ?>
    <div class="pcscreen <?php echo $classes[$qry->current_post%3] ?>"><?php
  }
}
实际的类插入部分并不是一个WordPress问题,但。。。

Please don\'t use query_posts, ever.

应该注意的是,使用此replace the main query 在页面上可以increase page loading times, 在最坏的情况下more than doubling the amount of work needed or more. 虽然易于使用,但该功能prone to confusion and problems 过后有关详细信息,请参阅下面关于注意事项的注释。

http://codex.wordpress.org/Function_Reference/query_posts (重点矿山)

其次,您使用的是弃用的showposts 参数,即使您也使用了正确的posts_per_page 在同一参数集中。

第三,也不是严格意义上的“WordPress”alternative control structure syntax 只会让人困惑。使用括号和indent your code properly. 你以后会感谢我的。

同样,“类似于查询字符串”的参数语法——难以阅读,难以编辑。使用数组。

最后,PHP打开和关闭标记(<?php?>) are not line start/line stop markers. 不要这样使用它们。仅当您实际需要在PHP和HTML之间切换时才使用它们。您将获得可读性并减少键入,这两件事都是好事。

结束

相关推荐

Widgets in the loop if active

我正在尝试将一个小部件作为“第一个帖子”,如果它处于活动状态。。然后让帖子继续。。它可以工作,但第一篇帖子消失了,第二篇帖子成为小部件后的第一行。。看不出我做错了什么。。正如你所看到的,我已经有一个小部件显示在帖子之间。<?php if (have_posts()) : ?> <?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; ?> <?php $i=1;?>