WordPress的;显示来自帖子的所有图像及其相应的标题

时间:2012-06-12 23:05:55

标签: php wordpress

从任何特定的帖子,我试图显示所有图像,以及相应的标题,并依次排列:

-------------
|           |
|    Img1   |
|           |
-------------
  Caption 1    

-------------
|           |
|    Img2   |
|           |
-------------
  Caption 2        

-------------
|           |
|    Img3   |
|           |
-------------
  Caption 3        

这就是我想要达成的目标。

代码:

<?php

$attachments = get_children( array(
'post_parent' => get_the_ID(), 
'order' => 'ASC', 
'post_mime_type' =>'image') );

$args = array(
'post_parent' => get_the_ID(),  
        'order' => 'ASC',
        'post_type' => 'attachment' ); 

$thumb_images = get_posts($args);


foreach ($attachments as $attachment_id => $attachment)  

foreach ($thumb_images as $thumb_image) 

{
{
  echo "<div class='image'>";
  echo wp_get_attachment_image( $attachment_id, 'full' );
  echo "</div>";
  echo "<div class='caption'>";  
  echo $thumb_image->post_excerpt;
  echo "</div>";
}
}

?>

如果有3张图片&amp;相应的标题,此代码每个图像显示3次,每个图像显示3个不同的标题。这是9张图片&amp; 9个字幕。至少字幕是有序的,但图像重复。

-------------
|           |
|    Img1   |
|           |
-------------
 Caption 1    

-------------
|           |
|    Img1   |
|           |
-------------
 Caption 2        

-------------
|           |
|    Img1   |
|           |
-------------
 Caption 3


-------------
|           |
|    Img2   |
|           |
-------------
  Caption 1    

-------------
|           |
|    Img2   |
|           |
-------------
  Caption 2        

-------------
|           |
|    Img2   |
|           |
-------------
  Caption 3            


  ETC

如果代码更新:

   <?php

$attachments = get_children( array(
'post_parent' => get_the_ID(), 
'order' => 'ASC', 
'post_mime_type' =>'image') );

$args = array(
'post_parent' => get_the_ID(),  
        'order' => 'ASC',
        'post_type' => 'attachment' ); 

$thumb_images = get_posts($args);


foreach ($attachments as $attachment_id => $attachment)   {

foreach ($thumb_images as $thumb_image)     {}  


  echo "<div class='image'>";
  echo wp_get_attachment_image( $attachment_id, 'full' );
  echo "</div>";
  echo "<div class='caption'>";  
  echo $thumb_image->post_excerpt;
  echo "</div>";

}

?>

它显示没有重复的图像,但标题属于最后加载的图像,并重复相当于与帖子关联的图像总数。

-------------
|           |
|    Img1   |
|           |
-------------
  Caption 3    

-------------
|           |
|    Img2   |
|           |
-------------
  Caption 3        

-------------
|           |
|    Img3   |
|           |
-------------
  Caption 3 

有关如何正确编写它的任何想法,以便以x倍的图像数量和x倍的字幕数量一个接一个地结束?没有重复。

最好的问候。

劳拉

1 个答案:

答案 0 :(得分:0)

假设$attachments的大小与$thumb_images相同:

$i = 0;
foreach ($attachments as $attachment_id => $attachment) {
    echo "<div class='image'>";
    echo wp_get_attachment_image($attachment_id, 'full');
    echo "</div>";
    echo "<div class='caption'>";  
    echo $thumb_images[$i]->post_excerpt;
    echo "</div>";
    $i++;
}

要更好地了解$attachments$thumb_images中的内容,请使用以下代码段进行调试:

echo "<pre>";
echo var_dump($attachments);
echo var_dump($thumb_images);
echo "</pre>";

你会发现$thumb_images是一个数组。

问:$i++的逻辑是什么?

$i++post-increment operator

$i++实际上是$i = $i + 1的简写,因此对于循环的每次迭代,$i的值递增。最初,$i = 0。调用$i++后,$i = 1。如果在另一次迭代中再次调用$i++ $i = 2,依此类推等等。

您也可以使用foreach循环来迭代数组,而不是使用for循环。有关for循环(以及使用$i++概念的相应示例)的示例,请参阅PHP's documentation for for