После полного удаления плагина 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
Готово!
Наслаждайтесь более чистой, легкой и быстрой базой данных 🙂.
Источники
Источник: https://www.kobzarev.com/wordpress/cleaning-db-after-wpml-removal/