当前位置:K88软件开发文章中心编程语言PHPPHP01 → 文章内容

wordpress开发 – WordPress 常用函数 / get_post_meta

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-4 8:24:43

-->

简介

这个函数获取指定日志的指定 key 的自定义字段,如果要获取指定日志的所有自定义字段,使用get_post_custom()

用法

1
<span class="token deliminator"><?php</span> get_post_meta<span class="token punctuation">(</span><span class="token variable">$post_id</span><span class="token punctuation">,</span> <span class="token variable">$key</span><span class="token punctuation">,</span> <span class="token variable">$single</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token deliminator">?></span>

参数

$post_id
(integer) (required) 要获取自定义字段的日志 ID。
Default: None

$key
(string) (required) 要获取自定义字段的名称(key)。
Default: None

$single
(boolean) (optional) 如果设置为 true,返回单个值。如果 false 或者没设置,则返回自定义字段的数组。
Default: false

返回值

(mixed)
这个函数返回值比较复杂:

  • 如果只设置了 $post_id 的值,返回该日志的所有自定义字段的关联数组。
  • 如果 $single 设置为 false 或者留空,返回指定 key 的所有值的一个数组。
  • 如果 $single 设置为 true,返回指定 key 的第一个值(并且不是在一个数组中)。
  • 如果没有东西可以返回的时候,返回空数组,除非 $single 设置为 true ,则返回空字符串。
  • 还有一种特殊情况就是,自定义字段的值是序列化的数组,这样 $single 设置为 true,则返回未序列化的数组,而 $single 设置为 false 或者留空,则你会获取一个数组,其中的一个值是序列化之后的字符串,你需要使用 maybe_unserialize 函数将其解析成数组。

实例

基本用法

获取所有 key 的 meta:

1
<span class="token deliminator"><?php</span> <span class="token variable">$meta</span> <span class="token operator">=</span> get_post_meta<span class="token punctuation">(</span> get_the_ID<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token deliminator">?></span>

获取单个 key 的 meta:

1
<span class="token deliminator"><?php</span> <span class="token variable">$key_1_values</span> <span class="token operator">=</span> get_post_meta<span class="token punctuation">(</span><span class="token number">76</span><span class="token punctuation">,</span> <span class="token string">'key_1'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token deliminator">?></span>

在主循环中获取指定 key 的第一个值

1
2
3
4
5
6
7
<span class="token deliminator"><?php</span>
<span class="token variable">$key_1_value</span> <span class="token operator">=</span> get_post_meta<span class="token punctuation">(</span><span class="token variable">$post</span><span class="token operator">-</span><span class="token operator">></span>ID<span class="token punctuation">,</span> <span class="token string">'key_1'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment" spellcheck="true">// check if the custom field has a value
</span><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$key_1_value</span> <span class="token operator">!</span><span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token function">echo</span> <span class="token variable">$key_1_value</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token deliminator">?></span>

获取缩略图地址为自定义字段的值

当你在 WordPress 主循环中,你可以使用下面的代码获取名字为“thumb”的自定义字段的值作为缩略图地址。

1
2
3
4
5
<span class="token deliminator"><?php</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> get_post_meta<span class="token punctuation">(</span><span class="token variable">$post</span><span class="token operator">-</span><span class="token operator">></span>ID<span class="token punctuation">,</span> <span class="token string">'thumb'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token deliminator">?></span><span class="token markup">
    <span class="token operator"><</span>a href<span class="token operator">=</span>"</span><span class="token deliminator"><?php</span> the_permalink<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token deliminator">?></span><span class="token markup"><span class="token string">" rel="</span>bookmark"<span class="token operator">></span>
        <span class="token operator"><</span>img <span class="token keyword">class</span><span class="token operator">=</span><span class="token string">"thumb"</span> src<span class="token operator">=</span>"</span><span class="token deliminator"><?php</span> <span class="token function">echo</span> get_post_meta<span class="token punctuation">(</span><span class="token variable">$post</span><span class="token operator">-</span><span class="token operator">></span>ID<span class="token punctuation">,</span> <span class="token string">'thumb'</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span> <span class="token deliminator">?></span><span class="token markup"><span class="token string">" alt="</span></span><span class="token deliminator"><?php</span> the_title<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token deliminator">?></span><span class="token markup">" <span class="token operator">/</span><span class="token operator">></span>
    <span class="token markup"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span>
</span><span class="token deliminator"><?php</span> <span class="token keyword">endif</span><span class="token punctuation">;</span> <span class="token deliminator">?></span>

修改记录

Since 1.5.0

源文件

wp-includes/post.php


wordpress开发 – WordPress 常用函数 / get_post_meta