Wordpress автоматически добавляет «& nbsp;»?


12

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

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

Я уже пробовал это в файле функций шаблона:

//disable auto p
remove_filter ('the_content', 'wpautop');
remove_filter ('comment_text', 'wpautop');
// Remove auto formatting
remove_filter('the_content', 'wptexturize');
remove_filter('comment_text', 'wptexturize');
remove_filter('the_title', 'wptexturize');

2
На самом деле, это происходит автоматически, когда вы переключаете вкладки, я тоже это заметил и нашел это очень раздражающим. Пока понятия не имею, как это исправить ...
Joost de Valk

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

ну у меня тоже есть эта проблема. Когда я отправляю сообщение вручную и нажимаю кнопку ввода, он добавляет абзац для меня. Это происходит после того, как я установил крошечный mce. В любом случае, что вы подразумеваете под этим: Фильтруйте tiny_mce_init, чтобы переопределить правила фильтрации содержимого по умолчанию

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

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

Ответы:


2

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


4
не работал для меня Без использования Tiny MCE, только в HTML каждое «обновление» по-прежнему добавляет новые  s
Christian

3
Также не работает для меня
Сидональдсон

4

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

Если я скопирую и вставлю свою статью из редактора Wordpress в текстовый редактор, который поддерживает шестнадцатеричное отображение (я использую EditPad Pro), я вижу, что текст, который я считаю периодом, за которым следуют два пробела, в действительности представляет собой текст, за которым следует один пробел, за которым следует символ Unicode с шестнадцатеричным кодом A0, который является символом Unicode NO-BREAK SPACE .

Мне удалось удалить неразрывный пробел в существующих статьях, заменив пробел, за которым следовал символ NO_BREAK SPACE, только пробелом. В большинстве текстовых редакторов вы сможете сделать это с помощью функции поиска и замены, скопировав «два пробела» в текстовое поле «Найти» и записав один пробел в текстовое поле «Заменить».

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


3

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

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

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

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

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


11
Я уверен, что ваш ответ № 2 неверен. Это или кто-то "прикрутил собаку" на интерфейсе пользователя. Если редактор предназначен для использования только как Visual или HTML, зачем вообще там вкладки? Почему бы просто не использовать его в настройках, чтобы использовать его так или иначе? Более того, по умолчанию вкладки есть ... это не какая-то продвинутая функция или опция разработчика, которую вы должны настроить. Я почти уверен, что они предназначались для того, чтобы пользователи могли переключаться между ними, и что настоящая проблема заключается в том, что иногда они плохо работают вместе. (особенно в случае форматирования пространства)
luckykind

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

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

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

1

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

Обходной путь: Скопируйте текст в редактор, такой как sublime или notepad ++, найдите и замените его обычными пробелами. Вы можете скопировать один из них из текста.

Отказ от ответственности: это не столько ответ, сколько обходной путь, так что не стесняйтесь понижать голос. Для меня Wordpress радостно добавляет nbsp везде и без рифмы или причины. Не уверен, что вызывает это. Это происходит с текстом на иврите намного больше, чем с любым английским текстом.


0

В случае, если кто-то еще застрял с этим в 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 просто для того, чтобы этот фильтр работал последним, если они  добавляются где-то посередине.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.