永远的追高 發表於 2023-6-13 00:00:00

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

<p>
<strong>get_post() </strong><br>
在一般主题制作时,get_post()函数我们一般很少会用到,但因为后面会讲到get_posts(),所以我们不得不先讲一下这个单数形式。这个函数的主要作用是,将一片指定的文章以一个对象或是数组的形式返回,以便我们后期利用。下面让我们简单的了解一下他的使用方法。</p>
<p>
get_post()函数说明<br>WordPress 的函数名总是那么浅显易懂,get_post()函数正如其表,即获得一篇文章,将一篇指定的文章以一个对象或是数组的形式返回,以便我们后期利用。</p>
<p>
函数使用</p>
<div>
<div>
<div id="highlighter_154730">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
</td>
<td>
<div>
<div>
<code>&lt;?php</code>
</div>
<div>
<code> </code><code>get_post(</code><code>$post_id</code><code>, </code><code>$output</code><code>); </code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
$post_id变量,用于设置将要获取文章的ID,需要注意的是,这个变量我们不可以直接给一个实际值,那样会报错,我们只能以下面这样的形式调用。</p>
<div>
<div>
<div id="highlighter_703395">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
</td>
<td>
<div>
<div>
<code>$pid</code> <code>= 158;</code>
</div>
<div>
<code>get_post(</code><code>$pid</code><code>);</code>
</div>
<div>
<code>//如果像get_post(158);这样调用则会报错</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
$post_id,默认值是none,经测试,这个变量不设置会报错,个人感觉这个变量好像没有默认值。</p>
<p>
$output 变量用于设置返回数据的类型,有三种,对象、关联数组、数值数组。<br>
对象:OBJECT<br>
关联数组:ARRAY_A<br>
数值数组:ARRAY_N<br>
默认值:OBJECT</p>
<p>
使用实例</p>
<div>
<div>
<div id="highlighter_951224">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
</td>
<td>
<div>
<div>
<code>&lt;?php</code>
</div>
<div>
<code>$mypost_id</code> <code>= 158;</code>
</div>
<div>
<code>$post_id_158</code> <code>= get_post(</code><code>$mypost_id</code><code>, ARRAY_A);</code>
</div>
<div>
<code>$title</code> <code>= </code><code>$post_id_158</code><code>[</code><code>'post_title'</code><code>];</code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>get_posts  </strong><br>
get_posts 函数,简单的来讲是 get_post 的复数新形势,但因为是文章多篇提取,所以使用方法上却略有不同,支持众多参数选择需要提取的文章,在 CMS 主题中经常被用到,当然如果你对 WordPress 有更深了解的话,你也有可能是用 WP_Query 来替代该函数,这就是后话了,今天主要介绍一下 get_posts 函数。</p>
<p>
get_posts 函数详解<br>
该函数属于 WordPress 的内置函数,用于在 WordPress 中提取多篇指定或随机文章。<br>
越是描述简单的函数,使用起来就越是复杂,后面的需要仔细看咯!</p>
<p>
使用方法</p>
<div>
<div>
<div id="highlighter_243339">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
</td>
<td>
<div>
<div>
<code>&lt;?php </code>
</div>
<div>
<code>$args</code> <code>= </code><code>array</code><code>(</code>
</div>
<div>
<code>  </code><code>'numberposts'</code>   <code>=&gt; 5,</code>
</div>
<div>
<code>  </code><code>'offset'</code>     <code>=&gt; 0,</code>
</div>
<div>
<code>  </code><code>'category'</code>    <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'orderby'</code>     <code>=&gt; </code><code>'post_date'</code><code>,</code>
</div>
<div>
<code>  </code><code>'order'</code>      <code>=&gt; </code><code>'DESC'</code><code>,</code>
</div>
<div>
<code>  </code><code>'include'</code>     <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'exclude'</code>     <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'meta_key'</code>    <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'meta_value'</code>   <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'post_type'</code>    <code>=&gt; </code><code>'post'</code><code>,</code>
</div>
<div>
<code>  </code><code>'post_mime_type'</code> <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'post_parent'</code>   <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>'post_status'</code>   <code>=&gt; </code><code>'publish'</code> <code>);</code>
</div>
<div>
<code>$posts_array</code> <code>= get_posts( </code><code>$args</code> <code>); </code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
$args是该函数必要的变量<br>
get_posts( $args )将返回数组型的变量。</p>
<p>
变量参数详解</p>
<div>
<div>
<div id="highlighter_68912">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
<div>
25</div>
<div>
26</div>
<div>
27</div>
<div>
28</div>
<div>
29</div>
<div>
30</div>
<div>
31</div>
<div>
32</div>
<div>
33</div>
<div>
34</div>
<div>
35</div>
<div>
36</div>
<div>
37</div>
<div>
38</div>
<div>
39</div>
<div>
40</div>
<div>
41</div>
<div>
42</div>
</td>
<td>
<div>
<div>
<code>&lt;?php </code>
</div>
<div>
<code>$args</code> <code>= </code><code>array</code><code>(</code>
</div>
<div>
<code>  </code><code>//需要提取的文章数</code>
</div>
<div>
<code>  </code><code>'numberposts'</code>   <code>=&gt; 10,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//以第几篇文章为起始位置</code>
</div>
<div>
<code>  </code><code>'offset'</code>     <code>=&gt; 0,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//分类的ID,多个用逗号将分类编号隔开,或传递编号数组,可指定多个分类编号。</code>
</div>
<div>
<code>  </code><code>//大部分 CMS 使用该函数的重点。</code>
</div>
<div>
<code>  </code><code>'category'</code>    <code>=&gt; ,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//排序规则(注1)</code>
</div>
<div>
<code>  </code><code>'orderby'</code>     <code>=&gt; </code><code>'post_date'</code><code>,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//升序、降序 'ASC' —— 升序 (低到高) 'DESC' —— 降序 (高到底)</code>
</div>
<div>
<code>  </code><code>'order'</code>      <code>=&gt; </code><code>'DESC'</code><code>,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//要显示文章的ID</code>
</div>
<div>
<code>  </code><code>'include'</code>     <code>=&gt; ,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//要排除文章的ID</code>
</div>
<div>
<code>  </code><code>'exclude'</code>     <code>=&gt; ,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//自定义字段名称</code>
</div>
<div>
<code>  </code><code>'meta_key'</code>    <code>=&gt; ,</code>
</div>
<div>
<code>  </code><code>//自定义字段的值,配合上一个参数,来选择显示符合自定义字段数值的文章。</code>
</div>
<div>
<code>  </code><code>'meta_value'</code>   <code>=&gt; ,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//post(日志)——默认,page(页面),</code>
</div>
<div>
<code>  </code><code>//attachment(附件),any —— (所有)</code>
</div>
<div>
<code>  </code><code>'post_type'</code>    <code>=&gt; </code><code>'post'</code><code>,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//文章的 mime 类型</code>
</div>
<div>
<code>  </code><code>'post_mime_type'</code> <code>=&gt; ,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//要显示文章的父级 ID</code>
</div>
<div>
<code>  </code><code>'post_parent'</code>   <code>=&gt; ,</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//文章状态</code>
</div>
<div>
<code>  </code><code>'post_status'</code>   <code>=&gt; </code><code>'publish'</code> <code>);</code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
注:</p>
<ul>
<li>
‘author' —— 按作者数值编号排序</li>
<li>
‘category' —— 按类别数值编号排序</li>
<li>
‘content' —— 按内容排序</li>
<li>
‘date' —— 按创建日期排序</li>
<li>
‘ID' —— 按文章编号排序</li>
<li>
‘menu_order' —— 按菜单顺序排序。仅页面可用。</li>
<li>
‘mime_type' —— 按MIME类型排序。仅附件可用。</li>
<li>
‘modified' —— 按最后修改时间排序。</li>
<li>
‘name' —— 按存根排序。</li>
<li>
‘parent' —— 按父级ID排序</li>
<li>
‘password' —— 按密码排序</li>
<li>
‘rand' —— 任意排序结果</li>
<li>
‘status' —— 按状态排序</li>
<li>
‘title' —— 按标题排序</li>
<li>
‘type' —— 按类型排序</li>
</ul>
<p>
实例<br>
刚我们讲到用数组去传参,当然我们也可以用字符串来给该函数传参,下面给一个简单的例子。</p>
<div>
<div>
<div id="highlighter_601717">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
</td>
<td>
<div>
<div>
<code>&lt;?php</code>
</div>
<div>
<code>$posts_rand</code> <code>= get_posts(</code><code>'numberposts=3&amp;orderby=rand'</code><code>);</code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
以上代码用于随机在 WordPress 中获取3篇文章。</p>
<p>
<strong>总结</strong><br>
其实 query_posts() 和 get_posts() 函数,接受大部分的参数,使用同样结构的数据库查询语句,并能达到一样的目的,但部分主题作者提示 query_posts()有可能会扰乱 WordPress 主循环,所以在这里不推荐使用。<br>
get_posts 使用不难,难在获取文章后怎样在页面中显示,这里就需要有一定的 PHP 知识了。<br>
如果是在文章循环之外想要将查询内容显示出来,可以看一下setup_postdata这个函数,这个函数会给那些用惯了模板标签的童鞋很大的帮助。</p>
頁: [1]
查看完整版本: 详解WordPress开发中的get_post与get_posts函数使用