仅更新一个自定义元字段

时间:2013-06-14 作者:Faisal Shehzad

我试图只更新一个以序列化形式存储的自定义字段。通过更新该字段,我的其他自定义元字段将变为空白/空。

如何仅更新序列化数据中的特定元值。

update_post_meta( $pId, \'my_meta\', $new_data );
非常感谢,

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

听起来好像您正试图将修改后的信息直接保存到数据库中的序列化值中。你不能那样做。

您必须提取该键的当前元数据,以便拥有和数组或对象,更新该数组或对象,然后将整个内容保存回数据库。

类似于。。。

$old_meta = get_post_meta( $pId, \'my_meta\', true);
$old_meta[\'somekey\'] = $new_value;
update_post_meta( $pId, \'my_meta\', $old_meta );
注:get_post_metaunserialize 为了你。

还要注意update_post_meta 获取第四个参数。。。

update_post_meta($post_id, $meta_key, $meta_value, $prev_value);
该参数是可选的,但如果用于。。。

。。。区分具有相同键的多个字段。如果省略,并且此post和meta键有多行,则将更新所有meta值。

http://codex.wordpress.org/Function_Reference/update_post_meta

您可以使用它来确保只覆盖要覆盖的键/值。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在