Wp_UPDATE_POST()做了什么$wpdb类不能做的事情?

时间:2017-03-06 作者:38365

我最近不得不对我的wp_posts 来自WordPress插件的表。我第一次试着用wp_update_post(), 认为这样做就行了。显然地wp_update_post() is only able to edit a predefined set of table fields (可能是WP默认值)。然后我偶然发现$wpdb 班我想我读到了wp_update_post() 使用$wpdb 这很有趣,但也引出了一个问题,为什么wp_update_post() 当您可以使用$wpdb 直接上课?什么是wp_update_post() 这样做$wpdb 不是吗?它需要填充什么?或者,这更像是一个管理问题,比如资源或安全问题?如果是这样的话,那么直接使用$wpdb的缺点是什么?

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

  1. wp_update_post() 调用一些钩子$wpdb 不是靠自己。你必须自己做才能与其他插件兼容。

  2. wp_update_post() 调用一些与数据库条目卫生、缩略图、附件、时间(格式、区域等)、注释、分类、元、缓存等相关的函数$wpdb, 确保适当地处理所有这些问题。

    WordPress将更新wp_update_post() 始终使其与数据库、核心代码、插件支持等的当前状态保持兼容。即使您做得一切正常,未来的更新也将很困难$wpdb.

    所以如果可以wp_update_post(), 然后始终使用它,仅使用$wpdb 如果你想要的与更新帖子相关的操作不能用它来完成。

SO网友:Howdy_McGee

当您可以只使用WPDB时,为什么要使用WP\\u Query()?

其思想是,这些函数使基于关键字提取数据更容易、更快,而不是写出SQL查询。函数本身将生成必要的SQL来提取所需的数据,这反过来又会加快开发速度。

参考问题关于wp_update_post() and predefined fields 讨论以下两个字段:not 默认WordPress安装的一部分group_accesstag_list. 这个wp_update_post() 函数将命中所有built-in fields很好。

的缺点$wpdb 您确实需要了解SQL,并且需要意识到正常的数据清理和何时使用prepare() 还有哪些功能已经准备好了你的陈述,而这些几乎都不是缺点。这个$wpdb 类本质上比任何默认WordPress函数都更强大,因为假设您知道获取、修改或删除数据的正确SQL,那么您可以访问所有数据,无论是否自定义。

TL;DR $wpdb 更强大,但不那么友好和宽容。

SO网友:Milo

大多数API函数都附带了操作和过滤器。其他插件或主题可能有附加到这些操作的代码,这些代码在您直接添加/更新表时不会触发。

例如,缓存插件服务于缓存中的页面,并且仅在更新帖子时刷新缓存。直接更新post数据,缓存将继续为旧版本服务,因为没有任何内容触发刷新操作。