2

wordpress のカテゴリを介してリンクされた投稿を通じて関連する投稿を表示しようとしていますが、結果のフィルタリングに問題があります。

現時点での私のコードは次のとおりです。

     $current_post = $post->ID;
         $i = 0;
         $categories = get_the_category();
         foreach ($categories as $category) {            
            $posts = get_posts('numberposts=4&category='. $category->term_id . '&exclude=' . $post->ID);
                foreach($posts as $post) { 
                                     // DO BASIC ECHO POST CONTENT STUFF

                     $i++;
                     if ($i == 3) break;
                         }
           } 


wp_reset_query();

私のコードの問題は、投稿が 3 つのカテゴリにある場合 (それが適切な Web プラクティスでなくても)、このループは 12 件の投稿 (カテゴリごとに 4 件の投稿) をエコーし​​、別の記事が同じ 3 つのカテゴリにある場合は、 3回表示されます(重複)。最大 4 件の投稿を表示したいのですが、重複はありません。

$i == 3 ブレークだと思いました。最初の「グローバル」4結果の後に停止します。しかし、そうではありませんか?結果に重複した結果がないようにするにはどうすればよいですか?

4

2 に答える 2

1

表示された投稿の配列を作成し、この配列にない投稿が表示されているかどうかを確認できます。

$show_array = array();

// ...

foreach($posts as $post) { 
   if (!in_array($post['id'], $show_array)) {
       // show post
       $show_array[] = $post['id'];
   }
}
于 2013-02-01T09:40:26.897 に答える