簡體   English   中英

PHP:需要循環才能在返回的帖子之間切換

[英]PHP: Need loop to alternate between returned posts

我有一個由三個查詢返回的帖子數組。 來自博客的3個帖子中的帖子不在“媒體”或“洞察”中,3個來自博客的帖子在“媒體”3中來自博客的帖子在“洞察”中。

這就是我所擁有的。 我不認為這是最優雅的解決方案:

<? $args = array(
    'post_type' => 'post',
    'posts_per_page' => 3,
    'category__not_in' => array( 268, 269 )
  );
$homePosts = new WP_Query($args);

$args = array(
    'post_type' => 'post',
    'category_name' => 'in-the-media',
    'posts_per_page' => 3
  );
$inthemediaPosts = new WP_Query($args);

$args = array(
  'post_type' => 'post',
  'category_name' => 'bt-insights',
  'posts_per_page' => 3
);
$insightsPosts = new WP_Query($args);

$allqueries = array($homePosts,$inthemediaPosts,$insightsPosts);
foreach ($allqueries as $myquery) {
  while ($myquery->have_posts()) : $myquery->the_post(); ?>

目前,循環通過3個主頁,然后是3個媒體帖子,然后是3個bt-insight帖子。

我需要的是循環通過1個主頁,1個媒體帖子,1個bt-insight帖子,然后1個homepost,1個inthemediea post ...等重復。

希望有道理。 建議?

while($allqueries[0]->have_posts() || $allqueries[1]->have_posts() || $allqueries[2]->have_posts()) {
  if ($allqueries[0]->have_posts()) $allqueries[0]->the_post();
  if ($allqueries[1]->have_posts()) $allqueries[1]->the_post();
  if ($allqueries[2]->have_posts()) $allqueries[2]->the_post();
}

如果你刪除allqueries的東西,之后怎么辦:

$insightsPosts = new WP_Query($args);

只需使用它。

for ($i = 0; $i < 3; $i++) {
    if ($homePosts->post_count > $i)
        echo $homePosts->posts[$i]->post_title;
    if ($inthemediaPosts->post_count > $i) 
        echo $inthemediaPosts->posts[$i]->post_title;
    if ($insightsPosts->post_count > $i) 
        echo $insightsPosts->posts[$i]->post_title;
}

這應該打印出帖子的標題,你可以根據需要使用其他字段。 這可以移動到一個函數,以避免重復邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM