Доброго времени суток, дорогие друзья и читатели. Почти с самого создания блога у меня появился вопрос "Как отключить автоматическую замену кавычек в WordPress", но руки так и не доходили, так как жесткой надобности не было в этом. Есть они и есть с одной стороны, чего в них плохого... В целом ничего, даже хорошо, если конечно у вас сайт или блог не посвящен тематикам "Программирование" или "Вебмастеру", в которых кавычки имеют разное место быть! Недавно напрягло это всё окончательно и я решил покопать движок и убрать эти самые кавычки. Лично у меня были достаточно приемлемые кавычки, две в одну сторону и две в другую, а у вас может быть и иначе. Как всегда несколько способов решения данной проблемы.
1. Первый способ.
Он наверное самый простой будет. Суть его в том, чтобы отключить функцию wptexturize() в WordPress, которая отвечает как раз за отображение поста или страницы, она же превращает наши кавычки в автоматическом режиме в разнообразные. Проще говоря форматирование текста и символов на более привлекательные и читабельные, какие конечно позволяет ваш шаблон и шрифт...
Вставьте следующие строки в functions.php вашей темы:
//Заменить в тексте записей и страниц remove_filter('the_content', 'wptexturize'); //Заменить в заголовках записей и страниц remove_filter('the_title', 'wptexturize'); //Заменить в тексте комментариев remove_filter('comment_text', 'wptexturize'); |
Либо можно так:
if ( function_exists('remove_filter') ) { remove_filter('the_content', 'wptexturize'); remove_filter('the_title', 'wptexturize'); remove_filter('comment_text', 'wptexturize'); } |
Обращу ваше внимание, что код выше поможет только, если вы выводите контент с помощью the_content (чтобы узнать смотрите single.php или что-то подобное в вашей теме WP). Также бывает,
что кавычки плохо отрабатывают в заголовках, комментах или же в функции the_excerpt. Используйте код ниже, чтобы поправить ваши кавычки на всем сайте, по тому же принципу, что первый пример кода:
remove_filter('the_title', 'wptexturize'); remove_filter('the_content', 'wptexturize'); remove_filter('the_excerpt', 'wptexturize'); remove_filter('comment_text', 'wptexturize'); remove_filter('list_cats', 'wptexturize'); remove_filter('single_post_title', 'wptexturize'); remove_filter('comment_author', 'wptexturize'); remove_filter('term_name', 'wptexturize'); remove_filter('link_name', 'wptexturize'); remove_filter('link_description', 'wptexturize'); remove_filter('link_notes', 'wptexturize'); remove_filter('bloginfo', 'wptexturize'); remove_filter('wp_title', 'wptexturize'); remove_filter('widget_title', 'wptexturize'); |
2. Второй способ.
Если покопаться поглубже и залезть по уши в WordPress, то можно подчеркнуть следующий способ. Он не такой гибкий и проделывать его придется всякий раз когда движок обновляется, но тем не менее он рабочий и более широкий. Суть его примерно как и в способе выше, однако этот отключит замену кавычек везде где только можно. Также у кого не сработал первый способ, смело прибегаем ко второму. Также мы затронем в первом способе не только форматирование кавычек, но всего что только можно, а здесь нет. Открываем FTP клиент и далее открываем файл "/wp-includes/formatting.php".
В этом файле ищем:
$opening_quote = _x( '“', 'opening curly double quote' ); /* translators: closing curly double quote */ $closing_quote = _x( '”', 'closing curly double quote' ); |
Или это:
$opening_quote = _x( '“', 'opening curly double quote' ); /* translators: closing curly double quote */ $closing_quote = _x( '”', 'closing curly double quote' ); |
Далее заменяем на следующее:
$opening_quote = _x( '"', 'opening curly double quote' ); /* translators: closing curly double quote */ $closing_quote = _x( '"', 'closing curly double quote' ); |
Также небольшой бонус для тех кто не знает почему у кого-то выложенный php или js скрипт работает на сайте, а у вас нет. Дело также в форматировании. Для исправления надо отредактировать файлик, что описан выше formatting.php и заменить в нем несколько строк. Итак поехали:
Ищем:
$apos = _x( '’', 'apostrophe' ); |
Меняем на:
$apos = _x( ''', 'apostrophe' ); |
Ищем:
$double_prime = _x( '″', 'double prime' ); |
Меняем на:
$double_prime = _x( '"', 'double prime' ); |
На этом пожалуй и всё, выберите свой способ из этих, а может быть вы найдете свой. В таком случае пишите в комментариях, будет интересно почитать и посмотреть разницу в работе кодов:). Также если у вас остались или появились новые вопросы, то задавайте их также в комментариях. Всем спасибо за внимание! Делайте блог правильно!
Все работает, но вот проблема у меня в навигации по записям как снять от туда? на сайте, там в навигации предыдущий следующий пост, все равно меняет тире на цыфры?
Описанное решение в статье убирает/изменяет кавычки в тексте, и на сайте, при этом не затрагивая плагины и темы. Если я правильно понял, то у вас в постах в перелинковке (предыдущий и следующий посты), стоит кавычка в ту или иную сторону, в зависимости от типа поста (вперед - назад) и название новости. Если там нужно убрать кавычки, то смотрите тему и плагин для подобной перелинковки. Так как там стоит у ссылки before, с иконкой кавычки. Измените CSS стили и будет нужный результат.
Спасибо огромное!!! Наконец-то!
использую просто символ ′ и ничего не заменяется, дюймы высвечиваются прекрасно.