Wordpress 后循环的边框,使用 Bootstrap 的网格

Posted

技术标签:

【中文标题】Wordpress 后循环的边框,使用 Bootstrap 的网格【英文标题】:Border for Wordpress post loop, grid using Bootstrap 【发布时间】:2017-10-03 06:20:51 【问题描述】:

有一个循环,每行 3 个帖子。在每个单独的帖子周围制作边框时遇到问题。取而代之的是,它制作了一个边框,覆盖了顶部柱子,延伸到网格上的底部柱子。见screenshot

我尝试添加一个不同于此处使用的通用选择器的类名,但似乎不起作用。任何意见,将不胜感激。第一个使用 Wordpress 和 Bootstrap 的项目。使用 Sass 进行样式设置,因此使用 div 部分。提前致谢!

.col-sm-4 
        border: 1px solid gray;
    
<section id="blog-section">
    <div class="container">   
        <div class="col-sm-12">
            <h1>Blog Title</h1>
        </div>
        <div class="row">
        </div>
    </div>


    <div class="container">    
        <div class="row">
            <div class="col-sm-4 text-center">
                <?php $i = 1 ?>
                <?php $posts = get_posts(array(
    'post_type' => 'post',
    'posts_per_page' => -1
));
                foreach ($posts as $post) : start_wp(); ?>
                <?php if ($i == 1): ?>

                <a class="perm_link" href="<?php the_permalink(); ?>">
                    <h2><?php the_title(); ?></h2>
                    <div class="blog-image image-responsive"><?php the_post_thumbnail('thumbnail'); ?></div></a>
                <p><?php the_excerpt(); ?></p>
                <span class="shortlink">
                    <?php the_shortlink("Read More"); ?>
                </span>
                <?php endif; ?>
                <?php if($i == 3)$i = 1; else $i++; ?>
                <?php endforeach; ?>
            </div>

<div class="col-sm-4 text-center">
                <?php $i = 1 ?>
                <?php $posts = get_posts(array(
    'post_type' => 'post',
    'posts_per_page' => -1
));
                foreach ($posts as $post) : start_wp(); ?>
                <?php if ($i == 2): ?>
                <h2><?php the_title(); ?></h2>
                <div class="blog-image image-responsive"><?php the_post_thumbnail('thumbnail'); ?></div>
                <p><?php the_excerpt(); ?></p>
                <span class="shortlink">
                    <?php the_shortlink("Read More"); ?>
                </span>
                <?php endif; ?>
                <?php if($i == 3)$i = 1; else $i++; ?>
                <?php endforeach; ?>
            </div>

            <div class="col-sm-4 text-center">
                <?php $i = 1 ?>
                <?php $posts = get_posts(array(
    'post_type' => 'post',
    'posts_per_page' => -1
));
                foreach ($posts as $post) : start_wp(); ?>
                <?php if ($i == 3): ?>
                <h2><?php the_title(); ?></h2>
                <div class="blog-image image-responsive"><?php the_post_thumbnail('thumbnail'); ?></div>
                <p><?php the_excerpt(); ?></p>
                <span class="shortlink">
                    <?php the_shortlink("Read More"); ?>
                </span>
                <?php endif; ?>
                <?php if($i == 3)$i = 1; else $i++; ?>
                <?php endforeach; ?>
            </div>
        </div>    
    </div>
</section>

【问题讨论】:

【参考方案1】:

修改 Bootstrap 的 CSS 通常是禁忌。每当您在站点的任何地方重复使用 .col-sm-4 时,您都会看到 border: 1px solid gray; 出现。首先,您需要创建一个类:&lt;div class="custom-border"&gt; 或类似的东西,然后在您的自定义 css 文件中编写类似的内容:

.custom-border  border: 1px solid grey;  

这样您就不会踩到 bootstrap 的列(以及您网站的许多其他部分)。

此外,如果您想编写包装每个帖子的 CSS,您需要在特定的 foreach 循环中应用您的自定义类。

.col-sm-4 只是声明列,它有 4 个跨度,并且在网格中从上到下跨越。因此你的问题。所以你会想要这样的东西:

<div class="container">    
        <div class="row">
            <div class="col-sm-4 text-center">
                <?php $i = 1 ?>
                <?php $posts = get_posts(array(
    'post_type' => 'post',
    'posts_per_page' => -1
));
                foreach ($posts as $post) : start_wp(); ?>
                <?php if ($i == 1): ?>

                <a class="custom-border perm_link" href="<?php the_permalink(); ?>">
                    <h2><?php the_title(); ?></h2>
                    <div class="blog-image image-responsive"><?php the_post_thumbnail('thumbnail'); ?></div>
                </a>
                <p><?php the_excerpt(); ?></p>
                <span class="shortlink">
                    <?php the_shortlink("Read More"); ?>
                </span>
                <?php endif; ?>
                <?php if($i == 3)$i = 1; else $i++; ?>
                <?php endforeach; ?>
            </div>
        </div>
    </div>
</div>

在这里,我已将 custom-border 类添加到 foreach 内的 &lt;a&gt; 标记中。

【讨论】:

谢谢!我的想法是 col 标签将包括整个帖子,但目光短浅。是的,知道使用 Bootstrap 的类会很糟糕,但是我正在使用 Sass 进行编码,并且会嵌套在 section 标签下,这将避免其他页面/部分上的冲突。我的最终解决方案发布在下面。【参考方案2】:

感谢 s0rfi949 的回复,我将边框应用于错误的 div。相反,将帖子包装在 a 标签之外的新 div 中,因为这并没有覆盖整个帖子。

如原帖中所述,我使用的是 Sass,因此该类将嵌套在部分下。 (忘记在原始css示例中注意)

#blog-section
 .custom-border 
        border: 2px solid black;
    
    <div class="container">    
        <div class="row">
            <div class="col-sm-4 text-center">
                <?php $i = 1 ?>
                <?php $posts = get_posts(array(
    'post_type' => 'post',
    'posts_per_page' => -1
));
                foreach ($posts as $post) : start_wp(); ?>
                <?php if ($i == 1): ?>

                <div class="custom-border">
                    <a class="perm_link" href="<?php the_permalink(); ?>">
                        <h2><?php the_title(); ?></h2>
                        <div class="blog-image image-responsive"><?php the_post_thumbnail('thumbnail'); ?></div></a>
                    <p><?php the_excerpt(); ?></p>
                    <span class="shortlink">
                        <?php the_shortlink("Read More"); ?>
                    </span>
                </div>
                <?php endif; ?>
                <?php if($i == 3)$i = 1; else $i++; ?>
                <?php endforeach; ?>
            </div>

【讨论】:

以上是关于Wordpress 后循环的边框,使用 Bootstrap 的网格的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress:使用过滤器删除“循环”中的帖子

为 Contact 7 表单 Wordpress 添加边框和背景

Wordpress 循环:获取循环内的当前帖子计数

来自自定义帖子分类法循环的 slug 列表(Wordpress + ACF Pro)

css 此代码将删除WordPress库图像周围的边框,并将布局模型更改为CSS flexbox。

luogu4269 Snow Boots G (并查集)