При активном использовании редактора Gutenberg в WordPress иногда в базе данных накапливаются устаревшие или поврежденные чанк-блоки. Они могут негативно влиять на производительность сайта, создавать конфликты при загрузке страниц и усложнять работу с контентом. В этой статье мы подробно рассмотрим, как обнаружить такие старые чанк-блоки и безопасно удалить их из базы данных на платформе WPengine, а также приведём примеры кода для автоматизации процесса.
Что такое чанк-блоки Gutenberg и почему их нужно удалять
Гутенберг (Gutenberg) — это современный блочный редактор WordPress, который хранит контент в виде JSON-блоков. Для оптимизации загрузки и редактирования эти блоки разбиваются на «чанки» — отдельные части кода, которые сервер загружает по мере необходимости.
Со временем, особенно при частом редактировании и обновлении контента, в базе данных могут оставаться старые чанк-блоки, которые уже не связаны с актуальными постами. Они занимают место, замедляют запросы и могут вызывать ошибки при рендеринге страниц.
Удаление таких данных помогает поддерживать базу в чистоте, снижает нагрузку на сервер и повышает стабильность работы сайта.
Как обнаружить старые чанк-блоки в базе данных WordPress
Для начала нужно понять, где именно хранятся чанк-блоки. В WordPress контент постов хранится в таблице wp_posts, а блоки Gutenberg — в поле post_content. Однако чанк-блоки, которые мы хотим удалить, обычно находятся в дополнительных таблицах или метаданных, например в wp_postmeta или в кэшах плагинов.
На платформе WPengine можно использовать доступ к базе через phpMyAdmin или консоль MySQL. Для поиска устаревших чанков можно выполнить запросы с фильтрацией по ключам метаданных или по содержимому поля с блоками, например:
SELECT post_id, meta_key FROM wp_postmeta WHERE meta_key LIKE '_wp_block_chunk_%';Данный запрос покажет все метаданные, связанные с чанками Gutenberg. Чтобы определить, какие из них не связаны с текущими постами, нужно сопоставить post_id с существующими публикациями.
Автоматический поиск неиспользуемых чанков
Для автоматизации поиска можно написать функцию, которая проверит наличие чанков без соответствующего поста и вернёт список таких элементов:
function wpengine_find_orphan_gutenberg_chunks() {
global $wpdb;
$chunks = $wpdb->get_results("SELECT pm.meta_id, pm.post_id FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID
WHERE pm.meta_key LIKE '_wp_block_chunk_%' AND p.ID IS NULL");
return $chunks;
}Данная функция вернёт метаданные чанков, для которых отсутствуют посты — это и есть кандидаты на удаление.
Как безопасно удалить старые чанк-блоки из базы
Удаление данных из базы — операция критичная, поэтому сначала обязательно сделайте резервную копию через инструменты WPengine или с помощью плагина для бэкапа.
Если вы точно определили устаревшие чанк-блоки, их можно удалить с помощью SQL-запроса:
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE pm.meta_key LIKE '_wp_block_chunk_%' AND p.ID IS NULL;Этот запрос удалит все метаданные чанков, не привязанные к существующим постам.
Для выполнения из кода WordPress можно использовать следующий пример функции с префиксом wpengine_:
function wpengine_delete_orphan_gutenberg_chunks() {
global $wpdb;
$deleted = $wpdb->query(
"DELETE pm FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID
WHERE pm.meta_key LIKE '_wp_block_chunk_%' AND p.ID IS NULL"
);
return $deleted;
}Вы можете запускать эту функцию вручную из административной панели или автоматизировать через крон-задачи WordPress.
Использование плагина Clearfy Pro для очистки
Плагин Clearfy Pro, доступный на wpshop.ru, предлагает удобные инструменты для оптимизации базы, в том числе очистку устаревших данных и кэшированных блоков Gutenberg. Он автоматически сканирует и удаляет неиспользуемые чанк-блоки, снижая нагрузку на сайт без необходимости ручного вмешательства.
Как предотвратить накопление старых чанк-блоков в будущем
Чтобы ваша база данных оставалась чистой, рекомендуется соблюдать несколько правил:
- Регулярно обновляйте WordPress и используемые плагины, чтобы минимизировать ошибки в обработке блоков.
- Используйте проверенные плагины для очистки базы данных, например Clearfy Pro или WP-Optimize.
- Автоматизируйте удаление устаревших данных через WP-Cron, вызывая функцию
wpengine_delete_orphan_gutenberg_chunksраз в неделю или месяц. - Избегайте частого удаления и повторного создания сложных блоков без необходимости.
Также стоит мониторить ошибки PHP и логи на WPengine, чтобы своевременно реагировать на сбои, связанные с блоками Gutenberg.
Пример автоматизации через WP-Cron
Добавьте следующий код в файл functions.php вашей темы или в плагин, чтобы создать задачу, которая будет еженедельно очищать базу от устаревших чанков:
function wpengine_schedule_chunk_cleanup() {
if (!wp_next_scheduled('wpengine_weekly_chunk_cleanup')) {
wp_schedule_event(time(), 'weekly', 'wpengine_weekly_chunk_cleanup');
}
}
add_action('wp', 'wpengine_schedule_chunk_cleanup');
add_action('wpengine_weekly_chunk_cleanup', 'wpengine_delete_orphan_gutenberg_chunks');Такой подход позволит автоматически поддерживать базу данных в оптимальном состоянии без лишних усилий.