WordPress获取分类目录下文章列表的方法

 2017年09月07日 10:44  3,804  6  打印本文  
        在wordpress开发中, 调取分类目录下的文章,通常是使用query_posts()函数,总结一下有以下四种方法。

1.使用query_posts()函数

以下代码使用query_posts()函数调取分类目录下的文章,showposts是调取的数量。

  1. <?php
  2.     $cats = get_categories();
  3.     foreach ( $cats as $cat ) {
  4.     query_posts( 'showposts=20&cat=' . $cat->cat_ID );
  5. ?>
  6.     <h3><?php echo $cat->cat_name; ?></h3>
  7.     <ul class="sitemap-list">
  8.         <?php while ( have_posts() ) { the_post(); ?>
  9.         <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
  10.         <?php } wp_reset_query(); ?>
  11.     </ul>
  12. <?php } ?>

在官方文档中,这样强调:“如果我们不得不用到query_posts(),必须确保每次使用query_posts()后同时执行wp_reset_query();”。这就是为什么在上面的代码中加上了wp_reset_query()的原因。

修改其中的数字20可以设定显示的数量,可用于在单页面上显示全部分类文章。

2.使用get_posts()函数

只需通过get_posts来获取分类ID就可以输出分类目录下的文章,并且通过numberposts来控制显示的数量。

  1. <?php $posts = get_posts( "category=5&numberposts=20" ); ?>
  2. <?php if$posts ) : ?>
  3. <ul><?php foreach$posts as $post ) : setup_postdata( $post ); ?>
  4. <li>
  5. <a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?></a>
  6. </li>
  7. <?php endforeach; ?>
  8. </ul>
  9. <?php endif; ?>

3.结合wp_list_categories()函数输出分类标题

  1. <h2> <?php wp_list_categories('include=12&title_li=&style=none'); ?> </h2>
  2.       <!--//输出 ID 为12的分类的标题 -->
  3.          <?php  echo category_description(12); ?>
  4.       <!--//输出 ID 为12的分类的描述 -->
  5.           <?php query_posts('showposts=20&cat=12'); ?>
  6.       <!-- //query_posts 给 The Loop 限定的条件是:显示20篇日志和分类 ID 为12 -->
  7.            <?php while (have_posts()) : the_post(); ?>
  8.       <!--//The Loop 开始 -->
  9.      <li>
  10.       <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><? echo wp_trim_words( get_the_title(),24 ); ?></a>
  11.        <?php  the_time('m/d'); ?>
  12.      </li>
  13.       <!-- //用列表的方式输出带有链接的文章标题-->
  14.             <?php endwhile;wp_reset_query(); ?>
  15.       <!--//The Loop 结束 -->

4.自定义函数

(1).我们自定义一个函数popularPosts()

  1. function popularPosts($num) {
  2.     global $wpdb;
  3.     $posts = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , $num");
  4.     foreach ($posts as $post) {
  5.         setup_postdata($post);
  6.         $id = $post->ID;
  7.         $title = $post->post_title;
  8.         $count = $post->comment_count;
  9.         if ($count != 0) {
  10.             $popular .= '<li>';
  11.             $popular .= '<a href="' . get_permalink($id) . '" title="' . $title . '">' . $title . '</a> ';
  12.             $popular .= '</li>';
  13.         }
  14.     }
  15.     return $popular;
  16. }

这里使用get_results()查询了数据库,相对速度快一点。

(2).调用函数 popularPosts(20) 显示20篇文章。

  1. <div class="popular">
  2.     <h2>Most Popular Posts</h2>
  3.     <ul>
  4.         <?php echo popularPosts(20); ?>
  5.     </ul>
  6. </div>

历史上的今天:

weinxin
99八十一微信公众号
扫一扫关注99八十一微信公众号,打开微信简简单单即可查看99八十一所有内容,更快捷更方便。
九哥

吐槽一下

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前吐槽:6   其中:访客  3   博主  3

    • avatar QQ游客 来自天朝的朋友 QQ浏览器  Android 6.0.1 1605-A01 Build/MMB29M 广东省广州市 电信 【小白】

      你这主题优化的,好好看

      • avatar 里维斯社 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市天河区 电信 【书童】

        看起来好复杂,学习了

        • avatar 懿古今 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信 【进士】

          所以说WordPress是最适合折腾的,一个功能就有很多种实现方法,不错

            • avatar 九哥 博主 来自天朝的朋友 QQ浏览器 Windows 7

              @懿古今 嗯,很好很强大,比较人性化,用户体验也好,选择性强。