При работе с визуальным редактором WordPress многие сталкиваются с проблемой: после удаления текста из редактора в опубликованной статье или странице остаются пустые абзацы или пустые страницы. Это особенно актуально, если вы используете классический редактор или даже Gutenberg, но не знаете, как правильно очистить содержимое, чтобы на сайте не появлялись нежелательные пустоты.
Почему после удаления текста остаются пустые абзацы и страницы
Основная причина — HTML-разметка, которую WordPress автоматически генерирует и не всегда удаляет полностью при простом удалении текста в визуальном редакторе. Например, пустые теги <p></p> или <br> могут оставаться в коде, создавая визуальные пробелы на сайте.
Кроме того, если вы копируете текст из внешних источников, вместе с ним могут попасть невидимые символы или стили, которые сложно заметить в редакторе, но они влияют на отображение.
Ещё одна причина — использование различных плагинов, которые добавляют свои стили или блоки в содержимое, создавая дополнительные пустые элементы.
Как проверить и удалить пустые теги вручную
Первое, что стоит сделать — переключиться в текстовый (HTML) режим редактора и внимательно просмотреть код. Ищите пустые теги <p></p>, <br> и другие пустые блоки.
Удалите их вручную, сохраняйте изменения и проверяйте результат на сайте. Если пустые страницы связаны с переносами страниц (<!--nextpage-->), их тоже нужно удалить.
Если у вас много таких страниц, лучше использовать плагин или написать функцию, которая автоматизирует очистку содержимого.
Использование плагинов для очистки содержимого от пустых тегов
Существуют плагины, которые помогают автоматически оптимизировать и очищать HTML-код страниц и постов. Например:
- WP Clean Up — удаляет неиспользуемые теги, оптимизирует HTML.
- Remove Empty HTML Tags — удаляет пустые теги из содержимого.
- Advanced Database Cleaner — помогает очистить базу данных от мусора, включая остатки от удалённых элементов.
Установка и использование таких плагинов поможет минимизировать проблемы с пустыми абзацами и страницами.
Пример функции для автоматического удаления пустых абзацев из контента (journalx)
Если вы хотите решить проблему программно, можно добавить следующий код в файл functions.php вашей темы или в плагин-сниппет:
function journalx_remove_empty_p_tags($content) {
// Удаляем пустые абзацы, которые могут содержать пробелы, и т.п.
$content = preg_replace('/<p>\s*(?: )?\s*<\/p>/i', '', $content);
return $content;
}
add_filter('the_content', 'journalx_remove_empty_p_tags');
Эта функция использует регулярное выражение для удаления пустых параграфов из содержимого при выводе на сайте. Она ловит случаи, когда абзац пустой или содержит только неразрывный пробел.
Удаление пустых блоков в Gutenberg с помощью JavaScript
В редакторе Gutenberg проблема пустых блоков ещё более актуальна. Иногда после удаления содержимого блок остаётся пустым, что приводит к визуальным пустотам.
Для удаления таких блоков можно использовать пользовательский скрипт на JavaScript, который подключается к редактору:
function journalx_remove_empty_gutenberg_blocks() {
wp.data.subscribe(() => {
const blocks = wp.data.select('core/block-editor').getBlocks();
blocks.forEach(block => {
if (block.name === 'core/paragraph' && block.attributes.content.trim() === '') {
wp.data.dispatch('core/block-editor').removeBlock(block.clientId);
}
});
});
}
add_action('enqueue_block_editor_assets', function() {
wp_add_inline_script('wp-block-editor', '(' . journalx_remove_empty_gutenberg_blocks . ')();');
});
Этот код автоматически удаляет пустые параграфные блоки непосредственно в редакторе, не давая им оставаться в контенте.
Рекомендации по работе с визуальным редактором для предотвращения пустых страниц
Чтобы минимизировать появление пустых абзацев и страниц, следуйте таким советам:
- Используйте текстовый режим для удаления больших участков текста.
- Избегайте копирования форматированного текста из внешних редакторов без предварительной очистки.
- Периодически проверяйте HTML-код страниц на наличие пустых тегов.
- Тестируйте сайт после внесения изменений, чтобы убедиться, что пустые блоки не появились.
- Обновляйте плагины и тему, так как некоторые проблемы бывают вызваны багами в них.