如何删除WordPress数据库表中的孤立键?

时间:2010-08-11 作者:Drake

尤其是在餐桌上wp_options. 经过近两年的博客制作,它似乎增加了很多,我不知道里面有多少垃圾

你知道有哪个插件可以与WordPress 3.0或safe query一起运行来搜索孤立的键/行吗

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

没有一个查询会100%确定删除所有未使用的内容,也不会删除这些内容,因为任何主题或插件都可以向wp_options 桌子尽管如此,只要稍加努力,您就可以很好地了解哪些内容未被使用,然后手动决定哪些内容需要删除,哪些内容不需要

您可以将以下代码暂时放入主题的functions.php 文件,然后访问面向公众的站点上的每个(类型)页面,更重要的是访问管理控制台中的所有管理页面。一旦你这样做了,你就可以打开你的wp_options 坐在桌子上,看看场地use_count (由下面的代码添加)查看哪些选项具有use_count 等于零(使用计数基本上没有意义,除非自添加此代码以来,至少读取或更新了一次大于1的内容。)

global $wpdb;
header(\'Content-Type:text/plain\');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field=\'use_count\'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT \'0\' AFTER autoload");
}

add_action(\'all\',\'monitor_get_option_usage\');
function monitor_get_option_usage($filter){
    if (preg_match(\'#^option_(.*)$#\',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action(\'updated_option\',\'monitor_update_option_usage\');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = \'$option\'");
}
有了它,你可能就能识别出那些与早已过时的插件、以前的主题相关的选项,甚至是你自己早期添加但不再使用的选项。将它们全部导出到备份(以防万一),然后删除您可以轻松删除的内容。完成后,可以移除use_count 字段(如果你想的话,它出现在那里不会有什么坏处),并将上面的代码从数据库中删除functions.php 文件也是

虽然这还不完美,但总比什么都没有好得多。希望有帮助

SO网友:Mike Lee

插件Clean Options 对我来说效果很好。作者对插件的描述似乎符合您的需要:“查找孤立选项,并允许从wp_选项表中删除它们。”

我还没试过WP-Optimize 但就个人而言,这一点看起来也很有希望。它说它支持WP 2.7(而Clean Options只提到对WP 2.3的明确支持),很好

SO网友:EAMann

这并不一定能消除与此相关的问题wp_options 但我用过WP-Optimize 修复我的3.0网站上的许多数据库大小问题。它清除了不必要的帖子修订、垃圾评论,并能自动修复许多问题。在我的主要博客上,DB从30MB减少到了6MB以下,现在运行更加平稳

SO网友:Keith S.

我在我的网站上运行Clean Options和WP_Optimize,这个组合在保持数据库良好状态方面做得非常好

结束

相关推荐