it-swarm.cn

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

特别是在表wp_options中。经过近两年的博客制作,似乎增加了很多,我不知道有多少废话。

你知道一个与WordPress 3.0或安全查询一起运行以搜索孤立键/行的插件吗?

10
Drake

没有任何查询可以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文件中删除上面的代码。

虽然这仍然不完美,但总比没有好。希望能帮助到你?

7
MikeSchinkel

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

我还没有尝试 WP-Optimize 但是个人,但那个看起来也很有希望。它说它支持WP 2.7(而清洁选项只提到对WP 2.3的明确支持),很好!

4
Mike Lee

这不一定会删除wp_options的问题,但我使用 WP-Optimize 来修复我的3.0站点上的大量数据库大小调整问题。它清除了不需要的帖子修订,垃圾评论,并可以自动修复很多问题。在我的主要博客上,数据库从30MB减少到不到6MB,现在运行得更顺畅。

2
EAMann

我在我的网站上运行了Clean Options和WP_Optimize,并且combo在保持数据库良好状态方面做得非常出色。

1
Keith S.