我的自定义循环中有重复的帖子

时间:2017-09-19 作者:sanjay

嗨,我有自定义帖子,我正在尝试在foreach循环中打印循环数据。但有一个帖子显示了4次。任何帮助

<?php $args = array( \'post_type\' => \'service_slider\', \'posts_per_page\' =>5 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
  the_title();
  $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) );
  foreach ($thumbnail as $thumb){
  echo \'<div class="item">\';
  ?>
  <img class="thumbnail zoom" src="<?php  echo $thumbnail[0];?>" > 
 <?php
  echo \'</div>\';
  }
endwhile;
?>

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

您试图循环浏览缩略图,这没有任何意义:

foreach ($thumbnail as $thumb){
然后在你所指的循环中$thumbnail 无论如何,请再次:

<img class="thumbnail zoom" src="<?php  echo $thumbnail[0];?>" > 
wp_get_attachment_image_src() 返回如下所示的数组:

array(
    0 => \'http://website.com/path/to/image.jpg\', // URL 
    1 => 150, // Width
    2 => 150, // Height
    3 => true // Is a resized version?
);
所以当你尝试循环通过它时,你正在循环通过这4个值。但既然你使用$thumbnail[0] 在循环中,它只会回显第一个值4次。

既然你在里面做这些while ( $loop->have_posts() ) : $loop->the_post(); 对于每篇文章,您将回显特色图像的URL 4次。

这将是最简单的方法:

$args = array( 
    \'post_type\'      => \'service_slider\', 
    \'posts_per_page\' => 5
);

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post();
    echo \'<div class="item">\';
    echo wp_get_attachment_image( get_post_thumbnail_id(), \'thumbnail\', false, array( \'class\' => \'thumbnail zoom\' ) );
    echo \'</div>\';
endwhile; wp_reset_postdata();
while ( $loop->have_posts() ) : $loop->the_post(); 正在通过这些帖子循环。你不需要foreach 完全然后在该循环中,我输出了该项div 以及帖子的特色图片。

请注意,我使用了wp_get_attachment_image(), 输出当前帖子缩略图的填充图像标记(因为我传递了它get_post_thumbnail_id(). 第四个参数用于传递要使用的图像类。此函数还可以自动拉入alt文本,这有利于辅助功能。

结束

相关推荐

用PHP定制WooCommerce

这是我的第一个问题,对不起,如果放错地方了。我想知道如何使用PHP学习WooCommerce编码的基础知识(类、挂钩等)。每次我有问题都要在谷歌上搜索,结果我用黑客和低效的代码来完成简单的事情。我特别想了解这一点:https://docs.woocommerce.com/wc-apidocs/index.html. 它看起来有很多信息,但不幸的是,它并不能真正解释任何事情。有人有主意吗?提前非常感谢您的帮助。