1 回答
TA贡献1873条经验 获得超9个赞
我看到您的代码有一些问题。首先在你的第一个如果
if ( $the_query->have_posts() )
$the_query 仍未定义,因此它没有帖子,您将 $the_query 下面的几行代码定义为 WP_Query 类的实例。
其次,您wp_reset_postdata()有条件地调用,这意味着如果查询没有帖子发布数据将不会被重置。
当然,您查询数据库的次数太多了,我不明白您为什么需要它。
我做了一些快速更正(注意下面的代码未经测试,我只是应用了我能想到的快速解决方案)
<?php
$the_query = new WP_Query(
array(
'category_name' => 'Travel',
'posts_per_page' => 64,
)
);
?>
<div class="row row__padding--bottom">
<?php
if ( $the_query->have_posts() ) :
$i = 0;
$class_map = [
0 => 'col-md-6',
1 => 'col-md-6',
6 => 'col-md-6',
7 => 'col-md-6',
2 => 'col-md-4',
3 => 'col-md-4',
4 => 'col-md-4',
5 => 'col-md-12',
];
while ( $the_query->have_posts() ) :
$the_query->the_post();
?>
<div class="col-sm-12 <?php echo esc_attr( $class_map[ $i % 8 ] ); ?>">
<div class="journal__featured" style="background: url(<?php the_post_thumbnail_url( 'large' ); ?>) !important; !important; background-size: cover !important; background-position: center center !important; background-repeat: no-repeat !important;">
</div>
<div class="post__info--container">
<a href="<?php the_permalink(); ?>"><h4><?php the_title(); ?></h4></a>
</div>
</div>
<?php
if ( 1 === ($i % 8) || 4 === ($i % 8) || 5 === ($i % 8) ) {
echo '</div><div class="row row__padding--bottom">';
}
$i++;
endwhile;
else :
echo '<p>' . esc_html( __( 'No News' ) ) . '</p>';
endif;
wp_reset_postdata();
?>
</div>
<?php
希望这对你有用!
- 1 回答
- 0 关注
- 170 浏览
添加回答
举报