Как отключить автоматическую замену кавычек и дефисов в тексте постов, заголовках, комментариях и цитате

По умолчанию WordPress пропускает содержимое и заголовки постов, комменты и цитаты через функцию, заменяющую одни кавычки на другие, дефисы на тире и некоторые другие символы. Исключение составляет содержимое этих HTML-тегов:

<pre> <code> <kbd> <style> <script> <tt>

В них символы не заменяются.

Вот пример замены кавычек, так выглядит содержимое редактора:

кавычки в редакторе WordPress

Кстати, не имеет значения, какая вкладка выбрана в редакторе — «Визуально» или «HTML».

А вот так выглядят кавычки после замены:

измененные кавычке в заголовке и содержимом поста

Таблица замены символов фильтром wptexturize

Порывшись в функции 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() перестали работать шорткоды.

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: