WordPress автоматически добавляет " "?

27 сент. 2011 г., 22:54:07
Просмотры: 44.6K
Голосов: 13

Я не уверен, делает ли это сам WordPress или Tiny MCE. Но при переключении между HTML и визуальным редактором он добавляет  , и добавляет дополнительный символ каждый раз, когда я переключаюсь туда и обратно. У меня даже нет разрыва строки в коде, похоже, он каким-то образом сам решает, куда их поместить, основываясь на тегах в моем HTML-коде.

Что вызывает это и как это исправить?

Я уже пробовал это в файле functions.php шаблона:

//отключить автоматические параграфы
remove_filter ('the_content', 'wpautop');
remove_filter ('comment_text', 'wpautop');
// Отключить автоматическое форматирование
remove_filter('the_content', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title', 'wptexturize');
5
Комментарии

На самом деле это происходит автоматически при переключении вкладок, я тоже это заметил и нахожу очень раздражающим. Пока не знаю, как это исправить...

Joost de Valk Joost de Valk
28 сент. 2011 г. 18:17:46

Я почти исключительно использую HTML-редактор, вставляя туда код из BBEdit. Похоже, это происходит со мной при сохранении в WP.

Goodbye Stack Exchange Goodbye Stack Exchange
25 окт. 2011 г. 22:30:18

У меня тоже есть эта проблема. Когда я публикую вручную и нажимаю кнопку Enter, он автоматически добавляет абзац. Это началось после установки TinyMCE. Что вы имеете в виду под этим: Фильтр tiny_mce_init, чтобы переопределить правила фильтрации контента по умолчанию

User User
30 апр. 2012 г. 13:19:23

Это происходит у меня с заголовками записей в цикле. Кажется, это случайно (происходит только с некоторыми пробелами в некоторых записях).

Drewdavid Drewdavid
23 нояб. 2016 г. 07:26:15

Мне удалось найти простое решение этой проблемы: https://wordpress.stackexchange.com/a/291746/135285

AturSams AturSams
21 янв. 2018 г. 21:38:47
Все ответы на вопрос 6
0

Я обнаружил, что неразрывные пробелы вставляются, когда я использую два пробела после точки. Редактор, похоже, интерпретирует лишний пробел как мою попытку использовать пробелы для форматирования текста.

Если я скопирую свою статью из редактора WordPress в текстовый редактор, поддерживающий отображение в шестнадцатеричном формате (я использую EditPad Pro), я вижу, что текст, который, как я думал, представляет собой точку с двумя пробелами, на самом деле является текстом с одним пробелом, за которым следует символ Unicode с шестнадцатеричным кодом A0, то есть символ НЕРАЗРЫВНЫЙ ПРОБЕЛ (NO-BREAK SPACE).

Мне удалось удалить неразрывный пробел в существующих статьях, заменив пробел, за которым следует символ НЕРАЗРЫВНОГО ПРОБЕЛА, на обычный пробел. В большинстве текстовых редакторов это можно сделать с помощью поиска и замены, скопировав "два пробела" в поле поиска и вписав один пробел в поле замены.

Я смог избежать этой проблемы в будущем, просто используя только один пробел после точки.

24 нояб. 2015 г. 06:32:52
4

Что вызывает это и как это исправить?

Любое содержимое, добавляемое или удаляемое из вашего контента записи, вызвано tiny_mce_init, который применяет свои правила фильтрации контента.

Способы предотвратить это:

  1. Отфильтровать tiny_mce_init, чтобы переопределить стандартные правила фильтрации контента
  2. Прекратите переключаться между визуальным и HTML-редакторами. Серьёзно; если вы не хотите использовать вариант №1 выше, не переключайтесь между редакторами. WordPress предназначен для использования таким образом, что контент вводится с помощью визуального или HTML-редактора, но не обоих одновременно.

Пример использования фильтра tiny_mce_before_init в Codex. Ещё один пример настройки/кастомизации TinyMCE в Codex здесь.

28 сент. 2011 г. 17:40:34
Комментарии

Я почти уверен, что ваш ответ №2 ошибочен. Либо кто-то "накосячил" с интерфейсом.

Если редактор задумывался только для использования в визуальном или HTML-режиме, зачем вообще делать вкладки? Почему бы просто не добавить настройку для выбора одного из режимов?

Более того, вкладки включены по умолчанию... Это не какая-то продвинутая функция для разработчиков, которую нужно отдельно настраивать. Я почти уверен, что они предназначены для переключения между режимами, а реальная проблема в том, что иногда они плохо работают вместе (особенно с пробелами и форматированием).

luckykind luckykind
18 нояб. 2011 г. 05:43:36

@luckykind Нет, они не предназначались для переключения туда-сюда. Это архитектурная проблема TinyMCE. И это далеко не единственная проблема.

kaiser kaiser
2 окт. 2013 г. 15:38:41

Нельзя же серьёзно утверждать, что интерфейс с вкладками для переключения между HTML и визуальным редактированием не предназначен для такого использования. Уже почти 2016 год, а проблема всё ещё существует.

Eric J. Eric J.
24 нояб. 2015 г. 06:13:38

Я думаю, мой компьютер не был предназначен для включения, но раз у него есть кнопка питания, мы его включили, а значит, все проблемы — вина пользователя. Дизайн и код, очевидно, безупречны.

AturSams AturSams
21 янв. 2018 г. 21:29:53
1

Если кто-то до сих пор столкнулся с этой проблемой в 2020 году. У нас возникла эта проблема после переноса большого количества контента в WordPress. Как вы думаете, все просто копировали и вставляли, и в итоге у нас оказалось слишком много контента, чтобы исправлять его вручную. Я реализовал приведенную ниже PHP-функцию, добавил её в functions.php, и это решило нашу проблему.

    function replace_content($content) {
        $content = htmlentities($content, null, 'utf-8');
        $content = str_replace(" ", " ", $content);
        $content = html_entity_decode($content);
    return $content;
    }
    add_filter('the_content','replace_content', 999999999)

Число 999999 просто гарантирует, что этот фильтр сработает последним, на случай если эти   добавляются где-то в середине процесса.

9 янв. 2020 г. 16:05:50
Комментарии

Спасибо, это сработало для меня, чтобы избежать необходимости перебирать все посты клиента и обновлять их содержимое.

Branden Silva Branden Silva
20 дек. 2020 г. 17:37:52
2

Я просто использую remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );, и это предотвращает создание WordPress лишней разметки. Вы копируете и вставляете свой код из внешнего редактора?

28 сент. 2011 г. 15:54:21
Комментарии

не сработало у меня. Без использования Tiny MCE, просто в HTML каждое "обновление" всё равно добавляет новые  

Christian Christian
17 июн. 2012 г. 17:34:24

Тоже не работает у меня

sidonaldson sidonaldson
27 окт. 2015 г. 12:44:11
0

Я использую WordPress для блога на иврите.

Обходное решение: Скопируйте текст в редактор, например Sublime или Notepad++, и замените неразрывные пробелы на обычные. Один из них можно скопировать прямо из текста.

Отказ от ответственности: это не совсем ответ, а скорее обходной путь, так что можете смело ставить минусы. У меня WordPress без видимой причины везде добавляет неразрывные пробелы. Не уверен, что вызывает эту проблему. Это происходит с текстом на иврите гораздо чаще, чем с английским текстом.

21 янв. 2018 г. 21:38:09
0
-1

В CSS-файле. Добавьте display: inline-flex для элемента p внутри the excerpt. Лишние пробелы больше не будут мешать. Работает у меня.

16 дек. 2013 г. 12:20:19