详解WordPress开发中的get_post与get_posts函数使用


Posted in PHP onJanuary 04, 2016

get_post()
在一般主题制作时,get_post()函数我们一般很少会用到,但因为后面会讲到get_posts(),所以我们不得不先讲一下这个单数形式。这个函数的主要作用是,将一片指定的文章以一个对象或是数组的形式返回,以便我们后期利用。下面让我们简单的了解一下他的使用方法。

get_post()函数说明
WordPress 的函数名总是那么浅显易懂,get_post()函数正如其表,即获得一篇文章,将一篇指定的文章以一个对象或是数组的形式返回,以便我们后期利用。

函数使用

<?php
 get_post($post_id, $output); 
?>

$post_id变量,用于设置将要获取文章的ID,需要注意的是,这个变量我们不可以直接给一个实际值,那样会报错,我们只能以下面这样的形式调用。

$pid = 158;
get_post($pid);
//如果像get_post(158);这样调用则会报错

$post_id,默认值是none,经测试,这个变量不设置会报错,个人感觉这个变量好像没有默认值。

$output 变量用于设置返回数据的类型,有三种,对象、关联数组、数值数组。
对象:OBJECT
关联数组:ARRAY_A
数值数组:ARRAY_N
默认值:OBJECT

使用实例

<?php
$mypost_id = 158;
$post_id_158 = get_post($mypost_id, ARRAY_A);
$title = $post_id_158['post_title'];
?>

get_posts 
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' );
?>

注:

  • ‘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这个函数,这个函数会给那些用惯了模板标签的童鞋很大的帮助。

PHP 相关文章推荐
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
探讨:如何使用PhpDocumentor生成文档
Jun 25 PHP
php实现的Timer页面运行时间监测类
Sep 24 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
php实现购物车功能(下)
Jan 05 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
PHP Include文件实例讲解
Feb 15 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 #PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 #PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 #PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 #PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 #PHP
大家须知简单的php性能优化注意点
Jan 04 #PHP
weiphp微信公众平台授权设置
Jan 04 #PHP
You might like
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php接口与接口引用的深入解析
2013/08/09 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python实现包含min函数的栈
2016/04/29 Python
Python正则表达式指南 推荐
2018/10/09 Python
python判断输入日期为第几天的实例
2018/11/13 Python
django框架使用方法详解
2019/07/18 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
运动会广播稿300字
2014/01/10 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
煤矿安全生产标语
2014/06/06 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis