В редакторе Gutenberg WordPress часто возникают ситуации, когда после редактирования или вставки контента остаются пустые блоки. Они не видны на фронтенде, но мешают удобству редактирования, увеличивают размер контента и могут негативно влиять на SEO и производительность сайта. В этой статье мы подробно разберем, как программно и с помощью плагинов удалить пустые блоки из контента WordPress.
Почему в WordPress появляются пустые блоки Gutenberg
Пустые блоки могут появляться по разным причинам:
- Пользователь случайно нажал Enter несколько раз.
- При копировании и вставке из других редакторов остаются лишние пустые параграфы.
- Автоматические процессы импортов или миграций создают пустые блоки.
- Некорректная работа некоторых плагинов, которые добавляют блоки без содержимого.
Такие блоки не несут смысловой нагрузки, но делают HTML код громоздким и могут влиять на скорость загрузки страниц.
Как найти и удалить пустые блоки с помощью PHP-функции
Для удаления пустых блоков можно использовать фильтр the_content. Мы напишем функцию cyrtolatRemoveEmptyBlocks, которая будет искать в HTML-коде контента пустые блоки и удалять их.
Пример функции:
function cyrtolatRemoveEmptyBlocks($content) {
// Регулярное выражение для поиска пустых блоков Gutenberg
$pattern = '/<!-- wp:([^ ]+) -->\s*<\/?\1[^>]*>\s*<!-- /wp:\1 -->/m';
// Удаляем все пустые блоки
$content = preg_replace($pattern, '', $content);
// Удаляем пустые параграфы
$content = preg_replace('/<p>\s*<\/p>/m', '', $content);
return $content;
}
add_filter('the_content', 'cyrtolatRemoveEmptyBlocks', 20);Объяснение кода:
- Первое регулярное выражение ищет блоки Gutenberg, которые не содержат внутреннего содержимого (только комментарии блоков и пустые теги).
- Второе удаляет пустые параграфы
<p></p>. - Функция подключается к фильтру
the_contentс приоритетом 20, чтобы очистить контент перед выводом.
Данный метод работает для стандартных блоков, но если у вас кастомные блоки, возможно, потребуется адаптация регулярных выражений.
Использование плагинов для удаления пустых блоков
Если вы не хотите писать код самостоятельно, можно использовать готовые плагины, которые оптимизируют контент и удаляют пустые блоки:
- Clearfy Pro — мощный набор инструментов для оптимизации сайта, включая очистку контента от лишних блоков и тегов. Подробнее: Clearfy Pro на WPSHOP.
- ABC Pagination — плагин, который не только улучшает навигацию, но и оптимизирует вывод контента, уменьшая пустые блоки при пагинации.
- WPRemark — полезен для очистки комментариев и контента, помогает убирать ненужные пустоты.
Эти плагины можно настроить для автоматической очистки контента при сохранении или выводе.
Как автоматизировать удаление пустых блоков при сохранении записи
Чтобы пустые блоки не попадали в базу данных, можно автоматизировать их удаление на этапе сохранения записи, используя хук save_post:
function cyrtolatCleanPostContentOnSave($post_id) {
// Проверяем тип записи и права
if (wp_is_post_revision($post_id) || get_post_type($post_id) !== 'post') {
return;
}
$post = get_post($post_id);
$content = $post->post_content;
$clean_content = cyrtolatRemoveEmptyBlocks($content);
if ($clean_content !== $content) {
// Обновляем запись с очищенным контентом
wp_update_post([
'ID' => $post_id,
'post_content' => $clean_content,
]);
}
}
add_action('save_post', 'cyrtolatCleanPostContentOnSave');Этот код вызывает нашу функцию очистки контента при сохранении поста, что предотвращает накопление пустых блоков в базе данных.
Проверка и отладка: как убедиться, что пустые блоки удалены
После внедрения решений стоит проверить, что пустые блоки действительно удаляются:
- Откройте запись в редакторе Gutenberg и посмотрите, нет ли лишних пустых блоков.
- Посмотрите исходный код страницы на фронтенде — пустые теги и комментарии блоков должны отсутствовать.
- Используйте инструменты отладки, например, Query Monitor, чтобы проверить, что контент выводится корректно.
Если вы используете кэширование, очистите кэш после изменений.
Заключение
Удаление пустых блоков Gutenberg — важный этап оптимизации WordPress-сайта. Правильная очистка улучшает удобство редактирования, повышает скорость загрузки и качество SEO. В статье рассмотрены практические методы — от простого PHP-кода до использования профессиональных плагинов с примерами кода и разъяснениями.