删除不必要的帖子元数据

默认情况下,每次您在WordPress中编写或更新任何帖子或页面时,它都会创建两个非常独特的帖子元数据。其中一个是_edit_lock,另一个是_edit_last。更不用说它们是出于非常特定的原因而创建的。“ _edit_lock”元数据可帮助用户在编辑期间对其帖子进行控制。当您在一个站点中有多个用户时,此功能非常有用。这样可以防止其他用户从原始用户那里接管控制或编辑功能。另一方面,“ _ edit_last”基本上存储上次编辑的时间。到目前为止,一切都很好。

问题是,对于每个帖子或页面,这两个帖子元数据都会永久存储在数据库中。这也意味着,如果您在网站上写了100个帖子,则很可能您将有200个帖子元条目,这些条目几乎没有用,但却占用了数据库空间。随着时间的流逝,这些数据将堆积在您的数据库上,并有可能减慢数据库查询的速度。另一个问题是,如果您重命名旧帖子的帖子标题,它还会在wp_postmeta(通常)表上创建另一行,称为_wp_old_slug元关键字。


WordPress发布元表格WordPress Post Meta Table的屏幕截图。

现在,所有这些发布的元数据基本上是无用的。但是,有一些方法可以摆脱它们。您可以从表中手动删除它们,也可以使用插件来完成工作。有趣的是,我想出了一种使用不同方法摆脱它们的方法。我想在工作时存储这些元数据,然后在我从系统注销时删除它们。这是您可能一直在寻找的魔术功能。

function delete_useless_post_meta() {
global $wpdb;
$table = $wpdb->prefix.'postmeta';
$wpdb->delete ($table, array('meta_key' => '_edit_last'));
$wpdb->delete ($table, array('meta_key' => '_edit_lock'));
$wpdb->delete ($table, array('meta_key' => '_wp_old_slug')); }
add_action('wp_logout','delete_useless_post_meta');

您现在要做的就是复制此代码段并将其粘贴到主题的functions.php页面上。现在,您可以做自己最擅长的事情,而不必担心数据库空间。如果您正在构建大型数据库或条目数量众多,则此片段实际上可以节省您的生命。

说明
我创建了一个简单的函数,该函数已与add_action函数挂钩,并且仅当用户从系统注销时才会调用此函数。在函数中,我调用$ wpdb对象是因为我打算从数据库的“ wp_postmeta”表中删除某些行。除非您在WordPress安装过程中对表前缀进行了任何更改,否则默认的发布元表应为“ wp_postmeta”。但是,就我而言,这不是默认值。为了避免可能的错误,我创建了$ table变量,该变量将自动检索您的发布元表的前缀并将其保存在内存中。然后从保存有特定“ meta_key”的表中执行“删除”过程。这很简单。

注意:在开始使用此代码段之前,请备份数据库。我亲自在计算机和Web服务器上测试了此功能,并且没有出现任何问题。我也不希望您遇到任何麻烦。我希望您会发现这篇文章有用。请随意尝试此代码段,如果您对此问题有任何疑问,请告诉我。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注