php 设置WordPress帖子查询中多个自定义帖子的特定帖子类型的频率

bjp0bcyl  于 2022-11-21  发布在  PHP
关注(0)|答案(1)|浏览(143)

我在一个情况下,我需要设置查询中的特定帖子类型的发生率,让我们假设我的查询为:

new WP_Query( [
   post_type => ['video','course','post']
] );

现在在循环中,我希望“post”作为循环中的每第三个条目出现
1.视频
1.航向
1.发布〈------发布
1.视频
1.航向
1.发布〈------发布
一种方法是单独查询“post”,然后用其他post类型重建响应。除此之外,有没有更好的方法?
谢谢

n53p2ov0

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>

但请记住,这只是一个设计技巧,对于指数化机器人来说,你的物品仍然会以“代码顺序”读取。
如果你有很多内容,我会在他的显示查询中分离每个帖子类型(并缓存它),然后在一个唯一的数组中重新组合内容,然后通过它进行跳跃。

相关问题