从数据库中删除帖子元,即使不存在?

时间:2011-05-27 作者:Paul_p


这不是我第一次看到我们“删除”一个帖子元,即使它不存在:例如:

    $count = get_post_meta($postID, $count_key, true);
    if($count==\'\'){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, \'0\');
所以如果$count为空,那么如果数据库中不存在,我们首先删除post meta?为什么?谢谢你的回答

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

代码中显示的原因是delete_post_meta() 首先运行,是因为add_post_meta() 正在追赶它。如果没有先进行删除,那么最终会在元表中存储多个条目。

老实说,最好使用update_post_meta() 而不是两者兼而有之delete_post_meta()add_post_meta(). 原因是update_post_meta() 将尝试更新现有值,如果它不存在;将增加值。

SO网友:Jan Fabry

这段代码是来自核心WordPress代码还是来自插件或教程?

数据库中可能有无效的旧数据,如空字符串。为了确保从“清理”数据(始终为整数)开始,首先使用此键删除所有数据,然后插入清理数据是有意义的。

正如Brady所指出的,最好使用update_post_meta() 一步替换可能存在的值。

结束

相关推荐

Corrupt Wordpress Database

我认为这是最奇怪的文字印刷问题。一个拥有大量帖子数据库的客户网站已经有了自己的想法。前一分钟一切似乎都很好,接下来的帖子、类别和标签都不见了。此时仪表板告诉我9个类别中有2309个帖子,但当我单击admin中的categories链接时,列表中没有任何帖子。我可以在admin中看到所有帖子,但尽管它们过去被分配到类别并列出标签,但现在它们都“未分类”,没有标签。很明显,wordpress数据库在某种程度上已经损坏,但从哪里开始尝试修复呢!?以下是我迄今为止测试的内容:插件–我关闭了所有当前的插件。主题–我