描述
文章meta数据在管理界面上称为“自定义字段”。
参数
- $post_id
-
(int)(必填) 文章ID
- $meta_key
-
(string)(必填) 元数据(metadata)名称。
- $meta_value
-
(mixed)(必填) 元数据值。如果不是标量,则必须是可序列化的。
- $unique
-
(bool)(可选) meta_key是否必须唯一。
默认值: false
返回
(int|false) 成功时为meta ID,失败时为false。
更多信息
请注意,如果指定post的自定义字段中已经存在给定的键,则会添加另一个具有相同键名的自定义字段,除非$unique参数设置为true,在这种情况下,不会进行任何更改。如果要更新现有键的值,请改用update_post_meta()函数
字符转义
由于meta值是通过stripslashes()函数传递的,因此需要小心使用 \ 字符转义的内容。您可以在update_post_meta()文档中阅读有关该行为的更多信息和解决方案示例。
源码
更新日志
版本 | 描述 |
---|---|
1.5.0 | 开始引入 |
使用示例
隐藏自定义字段
如果您是插件或主题开发人员,并且计划使用自定义字段存储与插件或模板相关的参数,请注意WordPress不会在文章编辑界面上的自定义字段列表中或使用
the_meta()
模板函数时显示键以“_”(下划线)开头的自定义字段。例如,可以使用add_meta_box()
函数以一种不同寻常的方式显示这些自定义字段。以下示例:
<?php add_post_meta( 68, '_color', 'red', true ); ?>
将添加键名为
_color
且值为“red”的唯一自定义字段,但此自定义字段不会显示在文章编辑界面中。此外,如果
$meta_value
参数是一个数组,则它将不会显示在页面编辑界面上,即使您没有在键名前加下划线。添加或更新唯一自定义字段
如果键不存在,则添加新自定义字段,否则使用该键更新自定义字段的值。<?php if ( ! add_post_meta( 7, 'fruit', 'banana', true ) ) { update_post_meta ( 7, 'fruit', 'banana' ); }
默认用法
<?php add_post_meta( 68, 'my_key', 47 ); ?>
其他示例
只在具有给定键的自定义字段不存在的情况下,添加一个新的自定义字段:<?php add_post_meta( 68, 'my_key', '47', true ); ?>
添加几个值不同但键相同的自定义字段‘my_key’:
<?php add_post_meta( 68, 'my_key', '47' ); ?> <?php add_post_meta( 68, 'my_key', '682' ); ?> <?php add_post_meta( 68, 'my_key', 'The quick, brown fox jumped over the lazy dog.' ); ?>
有关更详细的示例,请参见post_meta函数示例页面。
我更喜欢一个更完整的解决方案,它检查是否为空并将其删除:
function my_update_post_meta($post_id, $meta_key, $new_meta_value) { $meta_value = get_post_meta($post_id, $meta_key, true); if ($new_meta_value && ” === $meta_value) add_post_meta($post_id, $meta_key, $new_meta_value, true); // unique else if ($new_meta_value && $new_meta_value !== $meta_value) update_post_meta($post_id, $meta_key, $new_meta_value, $meta_value); // same prev_value else if (” === $new_meta_value && $meta_value) delete_post_meta($post_id, $meta_key, $meta_value); }