使用WordPress,我有一个页面可以从自定义帖子类型中获取客户的徽标。
我希望徽标显示为每行2个,然后分别是3个,2个,再重复2、3个,2个,等等。
我的代码大多数都能正常工作,但是第一张图片没有进入第一行。
<div class="container">
<?php
$args = array(
'post_type' => 'clients',
'post_status' => 'publish',
);
$query = new WP_Query( $args );
$count = 0;
while($query -> have_posts()) : $query -> the_post();
$client_image = get_field('client_logo');
$size = 'full';
if($count == 1){
echo '<div class="row up-to-2">';
}
if($count == 2){
echo '</div><div class="row up-to-3">';
}
if( $client_image ) { ?>
<div class="col-md-<?php echo ($count == 1 ? 6 : 4); ?>">
<div class="client-logo">
<a class="news-post-title" href="<?php the_permalink(); ?>">
<?php echo wp_get_attachment_image( $client_image, $size ); ?>
<h4><?php the_title(); ?></h4></a>
</div>
</div>
<?php }
$count++;
endwhile;
echo '</div>';
?>
</div>
我尝试过
if($count == 1){
$count = 0;
echo '<div class="row up-to-2">';
}
但是这样做会导致行循环成行。
我试图更好地理解PHP和计数,因此进行解释将非常有帮助!
更新
我设法将第一个项目放入行中,但是现在的顺序是2 1 2,而不是我想要的2、3、2。
<div class="container">
<?php
$args = array(
'post_type' => 'clients',
'post_status' => 'publish',
);
$query = new WP_Query( $args );
$count = 0;
echo '<div class="row up-to-2">';
while($query -> have_posts()) : $query -> the_post();
$client_image = get_field('client_logo');
$size = 'full';
if($count == 2){
echo '</div><div class="row up-to-3">';
}
else if($count == 3){
echo '</div><div class="row up-to-3">';
}
if( $client_image ) { ?>
<div class="col-md-<?php echo ($count == 1 ? 6 : 4); ?>">
<div class="client-logo">
<a class="news-post-title" href="<?php the_permalink(); ?>">
<?php echo wp_get_attachment_image( $client_image, $size ); ?>
<h4><?php the_title(); ?></h4></a>
</div>
</div>
<?php }
$count++;
endwhile;
echo '</div>';
?>
</div>
答案 0 :(得分:1)
您需要以下逻辑来应用
<?php
$i = 0;
echo '<div class="row up-to-2">'.PHP_EOL;
foreach( range(0,10) as $key => $value ){
echo '$value='.$value.PHP_EOL;
if($i == 1) {
echo '</div>'.PHP_EOL.'<div class="row up-to-3">'.PHP_EOL;
}
$i ++;
if($i == 5) {
echo '</div>'.PHP_EOL.'<div class="row up-to-2">'.PHP_EOL;
$i = 0;
}
}
echo '</div>';
输出:
<div class="row up-to-2">
$value=0
$value=1
</div>
<div class="row up-to-3">
$value=2
$value=3
$value=4
</div>
<div class="row up-to-2">
$value=5
$value=6
</div>
<div class="row up-to-3">
$value=7
$value=8
$value=9
</div>
<div class="row up-to-2">
$value=10
</div>
Demo转到演示链接并点击 执行代码 按钮
您需要while循环必须如下所示
<?php
$i = 0;
echo '<div class="row up-to-2">' . PHP_EOL;
while ($query->have_posts()) : $query->the_post();
$client_image = get_field('client_logo');
$size = 'full';
if ($client_image) { ?>
<div class="col-md-<?php echo($count == 1 ? 6 : 4); ?>">
<div class="client-logo">
<a class="news-post-title" href="<?php the_permalink(); ?>">
<?php echo wp_get_attachment_image($client_image, $size); ?>
<h4><?php the_title(); ?></h4></a>
</div>
</div>
<?php }
if ($i == 1) {
echo '</div>' . PHP_EOL . '<div class="row up-to-3">' . PHP_EOL;
}
$i++;
if ($i == 5) {
echo '</div>' . PHP_EOL . '<div class="row up-to-2">' . PHP_EOL;
$i = 0;
}
endwhile;
echo '</div>';
?>