提问人:Gordon Spider 提问时间:7/9/2020 最后编辑:Gordon Spider 更新时间:7/12/2020 访问量:403
ACF Repeater Fields & Clearfix / 显示时的样式
ACF Repeater Fields & Clearfix / Styling when displaying
问:
第一次发帖,虽然使用这些论坛作为资源已经有一段时间了......希望你能帮到你。
我正在为PHP的事情挠头,想知道你是否有任何想法
这是情况,首先是“背景故事”;
我通常在 Wordpress 和 Bootstrap 中工作。我在这里找到了一些代码,可以帮助我格式化帖子类型,这样我就可以将帖子类型用作图库(例如),并在其中运行一个clearfix来整理每一行,并阻止图像相互碰撞。这就是我一直在使用的
<?php $args=array(
'post_type' => ‘post-name',
'posts_per_page' => '100',
'orderby'=> 'date', 'order' => 'ASC' );
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
$i = 0;
while ($my_query->have_posts()) : $my_query->the_post();
// modified to work with 3 columns
// output an open <div>
if($i % 4 == 0) { ?>
<div class="row">
<?php }?>
IMAGE / CONTENT THAT REPEATS GOES IN HERE
<?php $i++; if($i != 0 && $i % 4 == 0) { ?>
</div>
<div class="clearfix"></div>
<?php } ?>
<?php endwhile;} wp_reset_query(); ?>
正如我所说,当图像可能会破坏页面的流程时,这会应用一个 clearfix div 并在行的末尾保留权利。 目前为止,一切都好。这就是问题所在。
最近,我一直在使用高级自定义字段插件的自定义“repeater”字段(您基本上可以将图像堆积到堆栈中,但它们不再是与上述相同的帖子类型)这就是我用来将其拉入的内容
<?php if(get_field(‘repeater-field-name')): ?>
<?php while(has_sub_field('repeater-field-name')): ?>
IMAGE / CONTENT THAT REPEATS GOES IN HERE
<?php endwhile; ?>
<?php endif; ?>
这也很好用。 因此,我的挣扎基本上是将重复的字段代码与 clearfix 代码合并。
有没有简单的方法可以修改 clearix 代码以包含转发器字段? 有没有更好的方法?
基本上,任何帮助都值得赞赏。
谢谢!
编辑 - 有关更多信息,这是我尝试使用的实际代码,在这种情况下它不是帖子类型,只是使用中继器字段;这是我试图开始工作的代码。它不是帖子类型,而是一个中继器字段,因此它将按照上面的示例(第二个代码块)重复,而无需任何样式。因此,简而言之,我正在尝试将无限清除修复(例如我用于帖子类型的第一个代码块)应用于中继器字段。我一直在尝试将两者结合起来。也许我走错了路?
<div class="container">
<div class="row">
<div class="main_cbrand roomy-100 gallery">
<?php if(get_field('artwork')): ?>
<?php while(has_sub_field('artwork')): ?>
<?php if( get_sub_field('image') ): ?>
<div class="col-md-2 col-sm-4 col-xs-6" style="padding-bottom: 20px;">
<a title="<?php the_sub_field('title'); ?>" href="<?php the_sub_field('image'); ?>"><img src="<?php the_sub_field('image'); ?>" alt="<?php the_sub_field('title'); ?>" title="<?php the_sub_field('title'); ?>"></a>
</div>
<?php endif; ?>
<?php endwhile; ?><?php endif; ?>
</div>
</div>
</div>
答:
基本上,您可以采用组织化的方式;) - 示例:
<?php
$args = array(
'post_type' => 'post',
'posts_per_page'=> '100',
'orderby' => 'date',
'order' => 'ASC'
);
$query = new WP_Query($args);
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// collect item data
$pid = get_the_ID();
$rpt = get_field('some_name', $pid);
// build repeater data
$counter = 0;
$rptData = '';
if( !empty($rpt) ) {
foreach($rpt as $item) {
// 4 condition
$rtpData .= ($counter % 4 == 0 ? '<div class="row">' : '');
// make what you want with info inside the item here
$rptData .= '<div class="col-md-3">'.$item['something'].'</div>';
$rtpData .= ($counter % 4 == 0 ? '</div><div class="clearfix"></div>' : '');
$counter++;
}
};
echo '
<div>
<h3>I AM THE WRAPPER</h3>
<div class="container">
'.$rptData.'
</div>
</div>
';
}
}
/* Restore original Post Data */
wp_reset_postdata();
?>
.
编辑:
第一。 您甚至需要清除修复的原因是 .row div 不是这些列的直接父级。否则,您不需要任何清除修复。
我不明白这是怎么回事..'the_sub_field('image')' 你确定吗?
如果你真的考虑一下,不同的分辨率每行会有不同数量的列,那么 Clearfix 会有什么帮助呢?(见第1条评论)
不过。。这是;)
<div class="container">
<div class="row">
<div class="main_cbrand roomy-100 gallery">
<?php
if(get_field('artwork')){
$counter = 0;
while(has_sub_field('artwork')) {
?>
<?php if( get_sub_field('image') ): ?>
<div class="col-md-2 col-sm-4 col-xs-6" style="padding-bottom: 20px;">
<a title="<?php the_sub_field('title'); ?>" href="<?php the_sub_field('image'); ?>">
<img src="<?php the_sub_field('image'); ?>" alt="<?php the_sub_field('title'); ?>" title="<?php the_sub_field('title'); ?>">
</a>
</div>
<?php echo ($counter % 4 == 0 ? '<div class="clearfix"></div>' : ''); ?>
<?php endif; ?>
<?php
$counter++;
}
}
?>
</div>
</div>
</div>
您可以更改它在此行中出现的频率
echo ($counter % 4 == 0 ? '<div class="clearfix"></div>' : '');
评论
上一个:CSS:清除内联元素
下一个:元素宽度未正确对齐
评论