it-swarm.xyz

Как я могу удалить бесхозные ключи в таблицах базы данных WordPress?

В частности в таблице wp_options. После почти 2-х лет производства блогов это, кажется, сильно возросло, и я не знаю, сколько там дерьма.

Знаете ли вы плагин, который работает с 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

Плагин Clean Options хорошо сработал для меня. Представленное автором описание плагина, кажется, соответствует тому, что вам нужно: "Находит потерянные опции и позволяет удалить их из таблицы wp_options".

Я не пробовал WP-Optimize пока лично, но это тоже выглядит многообещающе. И он говорит, что поддерживает WP 2.7 (тогда как в "Чистых настройках" упоминается только определенная поддержка WP 2.3), приятно!

4
Mike Lee

Это не обязательно устранит проблемы с wp_options, но я использовал WP-Optimize , чтобы исправить многие проблемы с размером базы данных на моих сайтах 3.0. Он очищает ненужные публикации сообщений, спам-комментарии и может автоматически решить множество проблем. В моем основном блоге размер БД был уменьшен с 30 МБ до чуть менее 6 МБ и теперь работает намного более плавно.

2
EAMann

Я запускаю на своем сайте как "Чистые параметры", так и WP_Optimize, и комбо отлично справляется с поддержанием базы данных в отличной форме.

1
Keith S.