php - PHP如果计数,第一篇文章不进入行
问题描述
使用 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>
解决方案
您需要以下逻辑才能应用
<?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>
演示转到演示链接并点击Execute code按钮
你需要你的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>';
?>
推荐阅读
- ios - Swift:如何在写入时不断地将 UICollectionViewCell 高度调整为 UITextView?
- rx-java2 - 根据 onSuccess() 值重复 Single
- python - 3D 空间中矢量的旋转和方向 - 逆序
- swift - 为什么我不能访问 viewDidLoad() 中的 NSTextField 对象
- javascript - .js 文件的 ESLint 错误
- docker - 在 Docker Swarm 中使用 docker-compose 文件“绑定”卷挂载
- javascript - ckeditor5 & CakePHP 2.3:如何使表格工作?
- java - 从顶级模块中排除 maven 子模块依赖项
- javascript - 完整日历将事件显示为点
- javascript - Coldfusion 仅在内容存在时显示