我正在尝试执行以下操作:
1) 分配col-lg-4
当给定类别中有3个或更多帖子时,将类化为循环中的第一个元素。
2) 分配col-lg-8
当给定类别中有2个帖子时,将类初始化为循环中的第一个元素。
3) 离开col-sm-12
当给定类别中只有一篇文章时,在循环中的第一个元素上初始化。
下面是我的想法:
<div class="container special-offer-wrap">
<div class="row special-offer-wrap special-offer-row">
<?php
$columns_query_args = array(
\'category_name\' => \'featured\',
\'posts_per_page\' => \'3\'
)
?>
<?php $columns_query = new WP_Query( $columns_query_args ); ?>
<?php if ( $columns_query->have_posts() ) : ?>
<?php while ( $columns_query->have_posts() ) : $columns_query->the_post(); ?>
<div class="col-sm-12
<?php if( $columns_query_item_number == 0){
if( $the_query->found_posts == 1 ){
echo \' \';
} else {
if( $the_query->found_posts == 2 ){
echo \'col-lg-8\';
} else {
echo \'col-lg-4\';
}
}
} else echo \'col-lg-4\'; /*all other posts */
$columns_query_item_number++; ?>">
<div class="special-offer-description">
<h2><?php the_title(); ?></h2>
<?php the_excerpt( ); ?>
</div>
</div>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\', \'fresh_spring\' ); ?></p>
<?php endif; ?>
</div>
</div>
当类别中有3个帖子时,看起来是这样的:
问题是,它不会更改为类似于以下内容:
当我回到类别内的2篇帖子时(通过从第3篇帖子中删除类别),但它保留了
col-lg-4
在第一个元素上初始化。
有什么想法吗?我想我把查询条件搞砸了。
编辑:
根据@Michael的建议,我使用了调试模式,这显示了定义变量时的一些问题$columns_query_item_number
. 现在它被正确定义了,我得到的唯一通知是关于woocommerce_get_page_id
不推荐使用(虽然我的站点上没有它,只有debug.log文件中有,所以我现在还不介意)。
我做的另一件事是我改变了$the_query
到$columns_query
, 这立刻让我找到了解决方案,但现在的问题是,下一个循环不知何故被破坏了。我真的不知道为什么,因为循环最后被重置了wp_reset_postdata()
作用