get_posts 介绍

评论(16)

get_posts 函数,简单的来讲是 get_post 的复数新形势,但因为是文章多篇提取,所以使用方法上却略有不同,支持众多参数选择需要提取的文章,在 CMS 主题中经常被用到,当然如果你对 WordPress 有更深了解的话,你也有可能是用 WP_Query 来替代该函数,这就是后话了,今天主要介绍一下 get_posts 函数。

get_posts 函数详解

该函数属于 WordPress 的内置函数,用于在 WordPress 中提取多篇指定或随机文章。
越是描述简单的函数,使用起来就越是复杂,后面的需要仔细看咯!

使用方法

<?php 
$args = array(
    'numberposts'     => 5,
    'offset'          => 0,
    'category'        => ,
    'orderby'         => 'post_date',
    'order'           => 'DESC',
    'include'         => ,
    'exclude'         => ,
    'meta_key'        => ,
    'meta_value'      => ,
    'post_type'       => 'post',
    'post_mime_type'  => ,
    'post_parent'     => ,
    'post_status'     => 'publish' );
$posts_array = get_posts( $args ); 
?>

$args是该函数必要的变量
get_posts( $args )将返回数组型的变量。

变量参数详解

<?php 
$args = array(
    //需要提取的文章数
    'numberposts'     => 10,
 
    //以第几篇文章为起始位置
    'offset'          => 0,
 
    //分类的ID,多个用逗号将分类编号隔开,或传递编号数组,可指定多个分类编号。
    //大部分 CMS 使用该函数的重点。
    'category'        => ,
 
    //排序规则(注1)
    'orderby'         => 'post_date',
 
    //升序、降序 'ASC' —— 升序 (低到高)  'DESC' —— 降序 (高到底)
    'order'           => 'DESC',
 
    //要显示文章的ID
    'include'         => ,
 
    //要排除文章的ID
    'exclude'         => ,
 
    //自定义字段名称
    'meta_key'        => ,
    //自定义字段的值,配合上一个参数,来选择显示符合自定义字段数值的文章。
    'meta_value'      => ,
 
    //post(日志)——默认,page(页面),
    //attachment(附件),any —— (所有)
    'post_type'       => 'post',
 
    //文章的 mime 类型
    'post_mime_type'  => ,
 
    //要显示文章的父级 ID
    'post_parent'     => ,
 
    //文章状态
    'post_status'     => 'publish' );
?>

注1:
‘author’ —— 按作者数值编号排序
‘category’ —— 按类别数值编号排序
‘content’ —— 按内容排序
‘date’ —— 按创建日期排序
‘ID’ —— 按文章编号排序
‘menu_order’ —— 按菜单顺序排序。仅页面可用。
‘mime_type’ —— 按MIME类型排序。仅附件可用。
‘modified’ —— 按最后修改时间排序。
‘name’ —— 按存根排序。
‘parent’ —— 按父级ID排序
‘password’ —— 按密码排序
‘rand’ —— 任意排序结果
‘status’ —— 按状态排序
‘title’ —— 按标题排序
‘type’ —— 按类型排序

实例

刚我们讲到用数组去传参,当然我们也可以用字符串来给该函数传参,下面给一个简单的例子。

<?php
$posts_rand = get_posts('numberposts=3&orderby=rand');
?>

以上代码用于随机在 WordPress 中获取3篇文章。

总结

其实 query_posts() get_posts() 函数,接受大部分的参数,使用同样结构的数据库查询语句,并能达到一样的目的,但部分主题作者提示 query_posts()有可能会扰乱 WordPress 主循环,所以在这里不推荐使用。
get_posts 使用不难,难在获取文章后怎样在页面中显示,这里就需要有一定的 PHP 知识了。
如果是在文章循环之外想要将查询内容显示出来,可以看一下setup_postdata这个函数,这个函数会给那些用惯了模板标签的童鞋很大的帮助。

文献

WordPress 官方文档 :《Function Reference/get post
之前讲过这个函数的单数形式 《get_post() 详解》,在这里也许你会获得更多参考。





转载请注明转自: get_posts 介绍

  1. @LitFeature
    看本文总结,不推荐用query_posts()

  2. 不知道用get_post()可以对tag中文章进行筛选的吗还是用query_posts()比较好?

  3. @百家网络博客
    可以分页,请求参数应该跟wp里的query类一样,只是官方文档没有给出,你可以自己试一下。

  4. $posts_rand = get_posts(‘numberposts=300&orderby=rand’);请问如果要分页怎么写

  5. @梳木
    只是套用样式的话,可以直接复制一份page的php文件,把文件名改为想显示分类的slug名称就可以了

  6. 请问如果我想在已有的page页中显示指定分类中的文章内容(使此分类套用该page页格式),具体该如果操作呢?在网上参考了很多都没有效果。

  7. 学习ing

  8. @筱浯
    1.get_the_author_meta函数,你的用法就不对,如果在循环内,该函数不需要指定具体的ID,如果要指定,也是第二个参数才是ID值,第一个是你要查询的mate键值。

    @筱浯
    2.函数被吃?

  9. // $posts_rand = get_posts(‘numberposts=3&author=当前文章作者的ID’);
    刚才的函数怎么被吃了

  10. 请问翔子 如何获取当前文章作者的ID?并赋于author
    get_the_author_meta(‘ID’);

  11. Pingback: get_page|函数-WordPress

  12. Pingback: wp_get_recent_posts 获取最新文章|函数-WordPress

  13. @wa_aorz
    ‘date’ —— 按创建日期排序的意思是,将文章按照日期排序,而不是设定日期,
    不过你可以多提取出几篇,
    通过比对时间将文章在30天以内的文章显示出来,
    不过,这样做消耗必然大,
    可以用那个WP_Query类来实现你需要的查询,
    相关文章,我之前起草过,不过这个类解释起来比较复杂,正在构思中。

  14. 翔子,get_posts函数好像不可以限定文章的发布日期的,比如我调用5篇随机文章,但我想调用的文章的发布日期在30天以内,更久的我不想它显示出来,能做到吗?好像没这个参数哦~

  15. Pingback: setup_postdata|函数-WordPress

  16. Pingback: get_post_meta()|函数-WordPress