You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP输出col-sm-4布局异常:仅首个元素入列其余错位

问题排查与修复方案

嘿,我仔细看了你的代码,一眼就发现两个导致布局混乱的核心问题:

  • col-sm-4的位置放错了:你把这个列容器放在了foreach循环外面,结果只有第一个团队卡片被正确包裹,后面的卡片直接“跑”出了列布局,自然排版乱掉。
  • 缺少Bootstrap栅格必需的row容器:Bootstrap的栅格规则是「row包含col」,你现在直接在col-sm-6里嵌套col-sm-4,没有外层row来约束列的排列,这也会干扰布局计算。

另外还发现一个小bug:你的<div class="card"标签没写闭合的>,这会导致HTML解析异常,也得补上。

修复后的完整代码

<div class="col-sm-6">
    <?php 
    // Team ophalen
    $team_posts = get_posts( array(
        'post_type' => 'team',
        'posts_per_page' => -1,
        'orderby' => 'title',
    ) );
    if ( $team_posts ): ?>
        <!-- 新增row容器,约束列的排列规则 -->
        <div class="row">
            <?php foreach ( $team_posts as $post ): setup_postdata($post); 
            // Foto URL
            $thumb_src = null;
            if ( has_post_thumbnail($post->ID) ) {
                $src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'team-thumb' );
                $thumb_src = $src[0];
            } ?>
                <!-- 把col-sm-4移到循环内,每个卡片都被列容器包裹 -->
                <div class="col-sm-4">
                    <div class="card" <?php if ( $thumb_src ): ?>style="background-image: url('<?php echo $thumb_src; ?>');"<?php endif; ?>>
                        <div class="card-name">
                            <span class="text-center underline"><?php the_title(); ?></span>
                        </div>
                    </div>
                </div>
            <?php endforeach; 
            // 重置post数据,避免后续查询出错
            wp_reset_postdata(); ?>
        </div>
    <?php endif; ?>
</div>

额外提醒

修复后记得调用wp_reset_postdata(),这是WordPress循环后必须做的操作,能避免后续的文章查询出现数据混乱的问题。

内容的提问来源于stack exchange,提问作者Kip Verslaafde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:59:48