javascript - 使用 php 循环 WordPress 的响应框布局
问题描述
我在一行中显示 4 张优惠券。有些优惠券没有描述、有效期等,但我需要所有优惠券的尺寸相同。
我尝试应用不同的 CSS 片段,但无法使它们具有相同的大小。我也玩过 PHP 代码脚本,但运气不好。
function clipmydeals_display_grid_coupon($id) {
<article id="coupon-grid-<?php echo $id; ?>"<?php post_class('card '.get_post_meta($id, 'cmd_type', true)); ?>>
<div class="card-body" style="z-index:2;">
<?php if(!empty(get_post_meta($id, 'cmd_valid_till', true)))
{ ?>
<div class="badge badge-<?php echo $validity_color; ?>">
<?php
echo __('Ends ','clipmydeals').' '.date("jS F Y",strtotime(get_post_meta($id, 'cmd_valid_till', true))); ?>
</div>
<?php } ?>
<div>
<?php
if ( is_single($id) or get_theme_mod('coupon_page','yes')=='no') :
?>
<h3 class="card-title text-center mt-0 pb-0">
<?php echo get_the_title($id); ?></h3>
<?php
else :
?>
<h3 class="card-title text-center mt-0 pb-0">
<a href="<?php echo esc_url( get_permalink($id) ); ?>" rel="bookmark">
<?php echo get_the_title($id); ?>
</a>
</h3>
</div>
<div class="text-center">
<?php
// BUTTON
clipmydeals_button($id, 'grid', $store_slug, $store_custom_fields);
?>
</div>
<div class="card-text mt-4"><?php the_content(); ?></div>
<div class="small mt-0 mb-1">
<?php
$sep = '';
if(!is_tax('stores')) { echo get_the_term_list( $id, 'stores','',', ',''); $sep = ','; } // stores
?>
</div>
<?php
if(get_theme_mod('location_taxonomy',false) and get_theme_mod('show_coupon_locations','all') != 'no')
{$location_html = array();
$terms = get_the_terms( $id, 'locations'); // locations
if($terms and !is_wp_error($terms)) {
foreach($terms as $term) {
if(get_theme_mod('location_taxonomy',false) and get_theme_mod('show_coupon_locations','all')=='all' or $term->parent == 0) {
$location_html[] = ' <a href="'.get_term_link($term).'">'.$term->name.'</a>';
}
}
}
if(!empty($location_html)) {
?>
<div class="small mt-0 mb-1">
<i class="fa fa-map-marker"></i><?php echo implode(', ',$location_html); ?>
</div>
<?php
}
}
?>
<?php
if(!empty(get_post_meta($id, 'cmd_verified_on', true))
or
(comments_open($id) and
get_theme_mod('coupon_page','yes')=='yes')
) {
?>
<div>
<?php if(comments_open($id) and get_theme_mod('coupon_page','yes')=='yes') { ?><div class="float-right">
<a class="card-link" href="<?php echo esc_url(get_permalink()).'#comments'; ?>">
<i class="fa fa-comment"></i> <?php $comment_count = wp_count_comments($id); echo $comment_count->approved; ?>
</a>
</div>
<?php } ?>
<?php echo do_shortcode( '[addtoany]' ); ?>
</div>
<?php } ?>
</div> <!--End card-body-->
</article><!-- #post-## -->
<?php
}
我希望每个盒子都必须根据前一个盒子的大小或相反的方式自动重新调整自己。它们必须看起来像对称的。
我的实际结果
解决方案
您可以设置物品卡片的最小高度,以保持每个盒子的尺寸相同。
在这个例子中,我使用了 flex-box 来创建卡片的水平线。Flex-box 非常适合在网格结果中添加文章卡和帖子列表。
运行代码片段以查看结果...
* {
box-sizing: border-box;
}
body {
max-width: 980px;
margin: 1em auto;
font-size: 20px;
line-height: 1.5;
}
.card {
text-align: center;
background-color: #333333;
color: #fff;
padding: 1em;
border-radius: 3px;
min-height: 400px;
margin: 1em;
}
.row {
display: flex;
flex-wrap: wrap;
margin: 0 .5em;
}
.column {
flex: 1;
}
/* Column Spans */
.column--2of5 { flex: 0 0 40%; }
.column--1of2 { flex: 0 0 50%; }
.column--3of5 { flex: 0 0 60%; }
.column--2of3 { flex: 0 0 66.6666%; }
.column--3of4 { flex: 0 0 75%; }
.column--4of5 { flex: 0 0 80%; }
<div class="row">
<div class="column">
<div class="card">
item here
</div>
</div>
<div class="column">
<div class="card">
item here
</div>
</div>
<div class="column">
<div class="card">
item here
</div>
</div>
<div class="column">
<div class="card">
item here
</div>
</div>
</div>
推荐阅读
- java - Java Kafka Consumer在内存中存储状态?
- r - 如何在不使用 for 循环的情况下将向量更改为相应的名称
- ios - 如何使用 Xcode 在 iOS 上调试 Kotlin
- python - 使用 csv.to_csv 写入 csv 文件时的特殊字符
- javascript - 我的 CSS 和 JS 外部文件在我的项目中不起作用
- javascript - 在浏览器开发人员检查工具获得焦点之前无法访问 Timymce
- excel - Excel,合并相似的数据,但有一些缺失/添加的行
- javascript - Django request.POST.get 不适用于 Vanilla JavaScript 请求
- python - Pybind11 keep-alive 不会让对象保持活动状态
- flutter - 插件 admob_flutter 使用了已弃用的 Android 嵌入版本