使用WordPress函数add_post_meta()向给定的帖子添加元字段
WordPress 中的此add_post_meta
功能用于向特定帖子添加新的自定义字段(也称为帖子元数据)。此功能可用于存储与帖子相关的其他信息,例如作者信息、评级或自定义设置。
通过使用add_post_meta
,开发人员可以通过向帖子添加自定义字段轻松扩展 WordPress 的功能,然后可以使用这些字段在前端显示附加信息或自定义网站的行为。add_post_meta
函数是一个有用的组件,用于向 WordPress 帖子添加自定义元数据。它允许开发人员轻松存储有关帖子的其他信息,例如作者、日期和自定义字段。通过使用此功能,开发人员可以增强其 WordPress 网站的功能和灵活性。通过正确使用和理解其参数,该add_post_meta
函数可以大大改善用户体验并扩展 WordPress 网站的功能。
推荐:[最新版]WordPress SEO插件Rank Math Pro
add_post_meta()基本语法
描述
WordPress PHP add_post_meta () 函数用于向指定帖子添加元字段
用法
add_post_meta($post_id, $meta_key, $meta_value, $unique);
- $post_id (int):您想要添加元字段的帖子的 ID。
- $meta_key (字符串):元字段的名称。
- $meta_value (mixed):元字段的值。如果该值是非标量的,则应可序列化。
- $unique (bool):如果设置为 true,则如果已存在具有相同键的元字段,则该函数将不会添加元字段。默认为 false。
推荐:[最新版]YITH WooCommerce Social Login社交登录插件
add_post_meta()函数
获取帖子指定自定义字段的值。如果给定的键已存在于指定帖子的自定义字段中,则会添加另一个具有相同键的自定义字段,除非$unique参数设置为true
,在这种情况下不会进行任何更改。如果要更新现有键的值,请改用update_post_meta()函数(源文件可参考这里)
function add_post_meta( $post_id, $meta_key, $meta_value, $unique = false ) {
// Make sure meta is added to the post, not a revision.
$the_post = wp_is_post_revision( $post_id );
if ( $the_post ) {
$post_id = $the_post;
}
return add_metadata( 'post', $post_id, $meta_key, $meta_value, $unique );
}
推荐:[最新版]Hero Menu免费下载响应式WordPress Mega Menu超级菜单插件
如何使用add_post_meta()
添加元字段这会向 ID 为 42 的帖子添加一个名为“color”,值为“blue”的元字段。
add_post_meta(42, 'color', 'blue', true);
添加多个元字段在这里,我们向单个帖子添加具有相同键但不同值的多个元字段。
add_post_meta(42, 'colors', 'blue');
add_post_meta(42, 'colors', 'red');
add_post_meta(42, 'colors', 'green');
添加前检查这将检查帖子 7 的元字段“水果”是否存在。 如果不存在,则添加它; 否则,就更新它。
if (!add_post_meta(7, 'fruit', 'banana', true)) {
update_post_meta(7, 'fruit', 'banana');
}
删除元字段如果元字段“颜色”的值为“蓝色”,则会从帖子 42 中删除该字段。
delete_post_meta(42, 'color', 'blue');
完整的解决方案此函数检查元字段是否存在新值,并根据需要添加、更新或删除它。
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);
else if ($new_meta_value && $new_meta_value !== $meta_value)
update_post_meta($post_id, $meta_key, $new_meta_value, $meta_value);
else if ('' === $new_meta_value && $meta_value)
delete_post_meta($post_id, $meta_key, $meta_value);
}
如何添加多个帖子元数据
$post_id = 456;
$meta_values = array( 'color' => 'blue', 'size' => 'large' );
foreach ( $meta_values as $meta_key => $meta_value ) {
add_post_meta( $post_id, $meta_key, $meta_value, true );
}
如何更新现有帖子元数据
$post_id = 789;
$meta_key = 'price';
$new_meta_value = 100;
$old_meta_value = get_post_meta( $post_id, $meta_key, true );
if ( $old_meta_value !== '' ) {
update_post_meta( $post_id, $meta_key, $new_meta_value, $old_meta_value );
} else {
add_post_meta( $post_id, $meta_key, $new_meta_value, true );
}
推荐:[最新版]WP Speed of Light Pro插件WordPress速度优化插件