Очистка базы данных 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
Готово!
Наслаждайтесь более чистой, легкой и быстрой базой данных ?.
Ты хоть сам понимаешь что тут написал?
Что не так? Жду ваши комментарии, пояснения, замечания и пруфы без сотрясания воздуха и мета-вопросов.
Спасибо, сориентировал. Синтаксис не понятен. Где его запускать? Я работаю через phpmyadmin, поэтому от первого запроса у меня осталось SELECT COUNT(*) FROM wp_options WHERE option_name LIKE ‘%icl%’ А таблицы удалил вручную, которые icl
Это обычные SQL запросы, выполненные через WP CLI.