По умолчанию WordPress пропускает содержимое и заголовки постов, комменты и цитаты через функцию, заменяющую одни кавычки на другие, дефисы на тире и некоторые другие символы. Исключение составляет содержимое этих HTML-тегов:
<pre> <code> <kbd> <style> <script> <tt>
В них символы не заменяются.
Вот пример замены кавычек, так выглядит содержимое редактора:
Кстати, не имеет значения, какая вкладка выбрана в редакторе — «Визуально» или «HTML».
А вот так выглядят кавычки после замены:
Порывшись в функции wptexturize(), я составил небольшую таблицу заменяемых символов:
Символ в редакторе | Заменяется на | В итоге |
---|---|---|
' | ‘ ’ | ‘ ’ |
" | « » | « » |
– (с пробелами по краям) | — | — |
–– | — | — |
––– | — | — |
(tm) | ™ | ™ |
... (многоточие) | … | … |
'' (две кавычки рядом) | » | » |
`` | « | « |
Кавычки и тире могут отличаться в зависимости от локализации! То что в таблице — для русской версии WordPress.
Все четыре следующих сниппета нужно вставлять в functions.php.
Отключение замены символов в содержимом поста:
remove_filter('the_content', 'wptexturize');
В заголовке поста:
remove_filter('the_title', 'wptexturize');
В тексте комментария:
remove_filter('comment_text', 'wptexturize');
В цитате:
remove_filter('the_excerpt', 'wptexturize');
Из предыдущих примеров видно, что фильтры применяются для функций the_content(), the_title(), comment_text() и the_excerpt(), поэтому, можно просто заменить их на другие, например функцию the_content() на:
echo get_the_content();
примеры замены остальных трех функций:
echo get_comment_text(); // comment_text() echo get_the_title(); // the_title() echo get_the_excerpt(); // the_excerpt()
Функции нужно искать и менять в файлах темы, the_content() вероятно будет находиться в single.php или loop.php и т.д.
Рекомендую быть осторожнее с этим методом, потому что можно потерять и другие фильтры, например у меня после замены the_content() перестали работать шорткоды.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Кажется это в новых версиях WordPress это уже исправлено
неа))
ну это как бы не баг - его не нужно исправлять,
тем не менее, есть люди, которым очень не нравится такая автозамена кавычек - этот пост как раз для них)
Помогите пожалуйста, у меня такая проблема : я странице задаю ярлык цифрой , например " 1 " , то WP сам дописывает "-2" и в результате у меня получается ссылка вот такого вида "1-2" , как это убрать ? почему дописывается"-2 " ?? Заранее спасибо
WordPress дописывает 2 в том случае, если страница с указанным ярлыком уже существует (возможно в виде черновика)
Первый способ не работает:
Fatal error: Call to undefined function remove_filter() in */wp-includes/functions.php
Версия WP 3.8.1, PHP 5.5
Добавляем все выше указанное в конец файла */wp-includes/functions.php и все работает