0

私は の新人ですWordPress。各親カテゴリの最初/最後の投稿を表示する必要があります。それはどのサブカテゴリにもあるかもしれません。

それを取得するには簡単なコードが必要です。

ありがとう。

4

2 に答える 2

0
<?php
$category = get_categories();
foreach ($category as $cat)
{
    query_posts( array ( 'cat' => $cat->cat_ID, 'posts_per_page' => 5 ) );
    echo '<div class="post">';
    echo '<h2>'.$cat->cat_name.'</h2>';
    echo '<ul>';
    while (have_posts())
    {
        the_post();
        echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
    }
    echo '</ul>';
    $category_id = get_cat_ID($cat->cat_name);
    $category_link = get_category_link($category_id);
    echo '<div class="paging">';
    echo '<a href="'.$category_link.'" title="'.$cat->cat_name.'">More Post from '.$cat->cat_name.'</a>';
    echo '</div>';
    echo '</div>';
}
?>
于 2013-03-25T09:31:47.200 に答える
0

カスタムクエリを使用してこれを行うことができました。実行したクエリは次のとおりです。

SELECT * FROM (
  SELECT a.*, d.name as category FROM wp_posts AS a
     INNER JOIN wp_term_relationships AS b ON b.object_id = a.ID
     INNER JOIN wp_term_taxonomy AS c ON b.term_taxonomy_id = c.term_taxonomy_id AND c.parent = 0
     INNER JOIN wp_terms AS d ON d.term_id = c.term_id AND c.taxonomy = 'category'
     ORDER BY a.post_date DESC
  ) as f
GROUP BY f.category
ORDER BY f.post_date DESC;

これが行うことは、カテゴリ分類に関連する投稿の完全なデータセットを取得し、それを降順モードで並べ替えて、最新の投稿を最初に配置し、カテゴリ別にグループ化し、もう一度並べ替えることです。最も古いものを取得したい場合は、DESC を ASC に変更してください。

このスクリプトをデータベースで使用すると、127,000 件の投稿があり、私のサーバーは非常に強力ですが、このクエリを実行するには 0.0042seg かかります。

これが誰かを助けることを願っています、乾杯!

于 2013-08-21T16:29:36.563 に答える