使用 Cycle2 成对显示人像图像

Display portrait images in pairs using Cycle2

我正在尝试使用 Cycle2 在 Wordpress 中创建水平和垂直图像的图片组合,其中所有垂直(纵向)图像都成对显示。下面的代码有效,但它显示每个图像两次,一次作为当前图像,一次作为下一张图像。如果以前显示过图像,如何跳过该图像?谢谢!

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_parent' => $post->ID,
    );

    $attachments = get_posts( $args );
    $length = count($attachments);
    for($i = 0; $i < $length ; ++$i) {
       $attachment = current($attachments);
       $next_attachment = next($attachments);                   
       $image_attributes = wp_get_attachment_image_src( $attachment->ID, 'large' ); 
       $next_image_attributes = wp_get_attachment_image_src( $next_attachment->ID, 'large' ); 
       $w = $image_attributes[1];
       $h = $image_attributes[2]; 
       $nw = $next_image_attributes[1];
       $nh = $next_image_attributes[2]; 
           if($h > $w & $nh > $nw) {
               echo '<li>';
               echo wp_get_attachment_image( $attachment->ID, 'large' );
               echo wp_get_attachment_image( $next_attachment->ID, 'large' );
               echo '</li>';
           } 

最简单的选择是 运行 一个常规循环,并且每隔一次迭代只输出 li 个元素:

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_parent' => $post->ID,
);

$attachments = get_posts( $args );
echo '<li>';
$counter=0;
foreach($attachments as $attachment){


    $image_attributes = wp_get_attachment_image_src( $attachment->ID, 'large' );
    $w = $image_attributes[1];
    $h = $image_attributes[2];
    if($h > $w) {
        $counter++;
        echo wp_get_attachment_image( $attachment->ID, 'portfolio' );
        if($counter %2 == 0){
            echo '</li><li>';
        }
    }

}
echo '</li>';

Steve 的逻辑是正确的,但为了使 currentnext 起作用,需要使用 for 循环。我需要做的就是计算所有肖像实例并只输出奇数。以下作品:

$args = array(
'post_type' => 'attachment',
'numberposts' => -1,
'post_status' => null,
'post_parent' => $post->ID,
'orderby' => menu_order,
'order' => 'ASC'
);

$attachments = get_posts( $args );
$length = count($attachments);
$counter = 0;

for($i = 0; $i < $length ; ++$i) {
    $attachment = current($attachments);
    $next_attachment = next($attachments);                   
    $image_attributes = wp_get_attachment_image_src( $attachment->ID, 'large' );
    $next_image_attributes = wp_get_attachment_image_src( $next_attachment->ID, 'large' ); 
    $w = $image_attributes[1];
    $h = $image_attributes[2];
    $nw = $next_image_attributes[1];
    $nh = $next_image_attributes[2];
    if($h > $w) {
        $counter++;
        if(($nh > $nw) and ($counter % 2 == 1)) {
            echo '<li>';
            echo wp_get_attachment_image( $attachment->ID, 'large' );
            echo wp_get_attachment_image( $next_attachment->ID, 'large' );
            echo '</li>';
        } elseif(($nh < $nw) and ($counter % 2 == 1)) {
            echo '<li>';
            echo wp_get_attachment_image( $attachment->ID, 'large' );
            echo '</li>';
        } elseif((!$next_attachment) and ($counter % 2 == 1)) {
            echo '<li>';
            echo wp_get_attachment_image( $attachment->ID, 'large' );
            echo '</li>';
        }
    } elseif($h < $w) {
        echo '<li>';
        echo wp_get_attachment_image( $attachment->ID, 'large' );
        echo '</li>';
        $counter = 0;
    }       
}