Верх страницы
Обложка к записи Очистка базы данных WordPress после удаления WPML
Время для прочтения: 2 мин. 3 сек.

Очистка базы данных WordPress после удаления WPML

После полного удаления плагина WPML и его аддонов очень часто приходится ручками очищать базу данных WordPress от ненужных более данных.

Перед началом работ — сделайте полную резервную копию базы данных сайта!

Удаление таблиц WPML и опций

В этой секции мы удалим ненужные строки из таблицы wp_options, которые относятся к WPML, а затем и сами таблицы..

Чтобы оценить профит от наших действий, посчитаем размер автозагружаемых опций (autoload=true) до начала работ и после них при помощи wp doctor:

wp doctor check autoload-options-size --allow-root --skip-plugins --skip-themes

Вывод:

+-----------------------+---------+------------------------------------------------------------+
| name                  | status  | message                                                    |
+-----------------------+---------+------------------------------------------------------------+
| autoload-options-size | warning | Autoloaded options size (1.05mb) exceeds threshold (900kb) |
+-----------------------+---------+------------------------------------------------------------+

Видно, что размер этих данных уже сейчас превышает предельно доступные 900 KB.

Очистка wp_options от WPML

WPML использует текстовые префиксы icl и wpml при сохранении настроек в таблице wp_options.

Начнём со строк, которые содержат icl.

wp db query "SELECT COUNT(*) FROM $(wp db prefix)options WHERE option_name LIKE '%icl%'"

Находятся 10 строк с вхождением icl, которые можно безболезненно удалить.

+----------+
| COUNT(*) |
+----------+
|       10 |
+----------+

Удаляем их при помощи следующей команды:

wp db query "DELETE FROM $(wp db prefix)options WHERE option_name LIKE '%icl%'"

Теперь ищем строки, которые содержат wpml.

wp db query "SELECT COUNT(*) FROM $(wp db prefix)options WHERE option_name LIKE '%wpml%'"

Находятся 40 строк с вхождением wpml, которые можно безболезненно удалить с вашего сайта.

+----------+
| COUNT(*) |
+----------+
|       40 |
+----------+

Удаляем их при помощи следующей команды:

wp db query "DELETE FROM $(wp db prefix)options WHERE option_name LIKE '%wpml%'"

Теперь снова посчитаем размер автозагружаемых опций:

wp doctor check autoload-options-size --allow-root --skip-plugins --skip-themes

Вывод:

+-----------------------+---------+--------------------------------------------------------------------+
| name                  | status  | message                                                            |
+-----------------------+---------+--------------------------------------------------------------------+
| autoload-options-size | success | Autoloaded options size (785.78kb) is less than threshold (900kb). |
+-----------------------+---------+--------------------------------------------------------------------+

Как видим, было сэкономлено более 100 KB после очистки базы от данных WPML.

Удаление таблиц WPML

Далее мы получаем список таблиц WPML в базе данных, в названии которых есть icl:

wp db tables --all-tables --allow-root | grep icl

Этот конкретный сайт имеет нестандартный префикс таблиц inform в базе данных WordPress по умолчанию, поэтому не обращайте на это внимания:

infom_icl_content_status
infom_icl_core_status
infom_icl_flags
infom_icl_languages
infom_icl_languages_translations
infom_icl_locale_map
infom_icl_message_status
infom_icl_mo_files_domains
infom_icl_node
infom_icl_reminders
infom_icl_string_packages
infom_icl_string_pages
infom_icl_string_positions
infom_icl_string_status
infom_icl_string_translations
infom_icl_string_urls
infom_icl_strings
infom_icl_translate
infom_icl_translate_job
infom_icl_translation_batches
infom_icl_translation_status
infom_icl_translations

Пишем простой скрипт, который использует WP-CLI для поиска и удаления таблиц WPML из базы данных WordPress:

WPMLTABLES=($(wp db tables --all-tables --allow-root | grep icl))

# loop through the options and create the query equivalent
for WPMLTABLE in ${WPMLTABLES[@]}
do
    echo "Dropping ${WPMLTABLE}"
    wp db query "DROP TABLE ${WPMLTABLE}" --allow-root
done

Вывод:

Dropping infom_icl_content_status
Dropping infom_icl_core_status
Dropping infom_icl_flags
Dropping infom_icl_languages
Dropping infom_icl_languages_translations
Dropping infom_icl_locale_map
Dropping infom_icl_message_status
Dropping infom_icl_mo_files_domains
Dropping infom_icl_node
Dropping infom_icl_reminders
Dropping infom_icl_string_packages
Dropping infom_icl_string_pages
Dropping infom_icl_string_positions
Dropping infom_icl_string_status
Dropping infom_icl_string_translations
Dropping infom_icl_string_urls
Dropping infom_icl_strings
Dropping infom_icl_translate
Dropping infom_icl_translate_job
Dropping infom_icl_translation_batches
Dropping infom_icl_translation_status
Dropping infom_icl_translations

Готово!

Наслаждайтесь более чистой, легкой и быстрой базой данных ?.

Источники

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

4 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Ruslan
Ruslan
3 лет назад

Ты хоть сам понимаешь что тут написал?

Константин
Константин
3 лет назад

Спасибо, сориентировал. Синтаксис не понятен. Где его запускать? Я работаю через phpmyadmin, поэтому от первого запроса у меня осталось SELECT COUNT(*) FROM wp_options WHERE option_name LIKE ‘%icl%’ А таблицы удалил вручную, которые icl

Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы