我在一个情况下,我需要设置查询中的特定帖子类型的发生率,让我们假设我的查询为:
new WP_Query( [ post_type => ['video','course','post'] ] );
现在在循环中,我希望“post”作为循环中的每第三个条目出现1.视频1.航向1.发布〈------发布1.视频1.航向1.发布〈------发布一种方法是单独查询“post”,然后用其他post类型重建响应。除此之外,有没有更好的方法?谢谢
n53p2ov01#
这可能是一个棘手的问题,具体取决于您的数据库中有多少内容。一个非常简单的解决方案是将CSS与flex结合使用:显示带flex的物料时,可以指定订单属性:https://www.w3schools.com/csSref/css3_pr_order.php因此,需要使用3个变量:
// Assume $items contains the list of contents resulting of your query $items; $order_video = 1; $order_course = 2; $order_post = 3; ?> <div class="items_wrapper"> <?php foreach($items as $item) { switch($item_post_type) { case 'video': $order = $order_video; $order_video += 3; break; case 'course': $order = $order_course; $order_course += 3; break; case 'post': $order = $order_post; $order_post += 3; break; } // display your item ?> <div class="item" style="order:<?php echo $order; ?>"> ... </div> <?php } ?> </div>
但请记住,这只是一个设计技巧,对于指数化机器人来说,你的物品仍然会以“代码顺序”读取。如果你有很多内容,我会在他的显示查询中分离每个帖子类型(并缓存它),然后在一个唯一的数组中重新组合内容,然后通过它进行跳跃。
1条答案
按热度按时间n53p2ov01#
这可能是一个棘手的问题,具体取决于您的数据库中有多少内容。
一个非常简单的解决方案是将CSS与flex结合使用:
显示带flex的物料时,可以指定订单属性:https://www.w3schools.com/csSref/css3_pr_order.php
因此,需要使用3个变量:
但请记住,这只是一个设计技巧,对于指数化机器人来说,你的物品仍然会以“代码顺序”读取。
如果你有很多内容,我会在他的显示查询中分离每个帖子类型(并缓存它),然后在一个唯一的数组中重新组合内容,然后通过它进行跳跃。