Как убрать неразрывные пробелы в WordPress (не в TinyMCE)?
Беда с автоматической расстановкой переносов в заголовках и блоках пагинации: WP подкидывает мне в них неразрывные пробелы . Что неизбежно приводит к растягиванию и выходу за поля. Даже директива hyphens в значении auto справляется только с текстами самих постов, внутри article.
То, что визуальный редактор TinyMCE способен творить всякое, это не новость. Но проблема почему-то проявляется именно в header и nav-links. Наверное где-то ещё, но не в тексте. Отключал все плагины, сносил любой кэш, расставлял в заголовках ­ — не помогает. Вариант (докатился) word-break: break-all; конечно не вариант — дефисов переноса от него не дождёшься.
Судя по массе постов-исследований в интернетах, вопрос заезженный. И всё-таки оставшийся без панацеи.
Спасити-памагити.
Дополнительно:
Для начала расскажи что ты делаешь чтобы они получались. Как и где?
Я пытаюсь добавить переносы во все текстовые области: hyphens:auto; пока хватает. Но рандомные добавки между слов в заголовках h1 — это уже критично. Они растягиваются и выходят за пределы блоков. Какая-нибудь «ЭНДОСКОПИЧЕСКАЯ РЕТРОГРАДНАЯ ХОЛАНГИОПАНКРЕАТОГРАФИЯ» рушит всё. Разумеется, в первую очередь экраны мобилок.
Временно решил победить при помощи <wbr>. Что конечно костыль. Но хотя бы так.
ничего не приходится делать. Оно само :))
Почему же у меня (у десятков моих клиентов) такое "само" не происходит? Ты явно что-то делаешь для этого.
Ответы:
Опубликуйте ссылку тестовой страницы, пожалуйста
- Я Алень. Сам над собой топорик подвесил: когда-то закинул в футер скрипт, в котором был обязательный ­ (u00AD). Теперь прибил скрипт и всё заиграло. Сначала вообще грешил на замечательный плагин WP-Typography...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
WordPress сам по себе не должен массово вставлять
в заголовки, header и pagination. Чаще всего это делает не ядро, а фильтр темы/плагина: типографика, автоформатирование, SEO-плагин, page builder, функция для “красивых переносов” или кастомный фильтр наthe_title,wp_title,paginate_links.Первое, что нужно сделать — найти, откуда приходит неразрывный пробел. Временно переключитесь на стандартную тему и отключите плагины типографики/оптимизации текста. Если проблема исчезает, значит виновата тема или плагин, а не WordPress.
Для диагностики по коду ищите в теме и плагинах:
grep -R "nbsp" wp-content/themes wp-content/plugins grep -R "the_title" wp-content/themes wp-content/plugins grep -R "paginate_links" wp-content/themes wp-content/plugins
Если нужно точечно убрать
из заголовков, можно добавить фильтр:add_filter('the_title', function ($title) { return str_replace('&nbsp;', ' ', $title); }, 20);
Но это не решит nav-links. Для пагинации можно обработать вывод:
add_filter('paginate_links_output', function ($html) { return str_replace('&nbsp;', ' ', $html); }, 20);
Если фильтра
paginate_links_outputнет в Вашей версии/сценарии, придётся обрабатывать место, где тема вызываетpaginate_links().С точки зрения CSS, вместо
word-break: break-allлучше использовать более мягкие правила:.entry-title, .nav-links { overflow-wrap: anywhere; word-break: normal; hyphens: auto; }
Но если в строке стоит неразрывный пробел, CSS не всегда спасёт. Поэтому правильный путь: найти источник подстановки
и отключить его. Фильтрstr_replaceможно оставить как страховку, но не как основное лечение.