Поправляем автоматическое изменение кавычек в WordPress

Сейчас быстро постараюсь рассказать как бороться с проблемой автоматической замены кавычек в CMS WordPress. Думаю всё и так понятно, но всё же пару слов сказать стоит. Дело в том, что при выводе поста из БД WP автоматически модифицирует делая его, по своему усмотрению, более правильным и пригодным для чтения в вебе. В частности разные печатные символы трансформируются в HTML сущности (мнемоники) и всё бы хорошо если бы не одно «но». Кавычки порой изменяются не так как надо.

Итак, что мы имеем? Кавычке в тексте поста, которые отображаются не верно. Всё потому, что WordPress тупо подставил HTML сущности. Кавычки обычные превратились в французские «ёлочки». В общем давайте исправлять. В сети много советов на этот счёт, самый распространённый такой:

Открываем файл wp-content/themes/название-темы/functions.php (его кстати можно редактировать и через админку WP) и добавляем в его конец следующий код:

if ( function_exists('remove_filter') ) {
    remove_filter('the_content', 'wptexturize'); // Отключение фильтра функцией wptexturize в текстах постов и страниц
    remove_filter('the_title', 'wptexturize'); // Отключение того-же фильтра в тайтлах
    remove_filter('comment_text', 'wptexturize'); // Отключение обработки комментов
}

И естественно сохраняем файл, после чего преобразований в заданных областях происходить не будет т.к. мы полностью отключили функцию под названием wptexturize, которая и отвечает за эти метаморфозы.

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

Второй более продвинутый способ заключается в непосредственном редактировании самого программного кода функции wptexturize. Для этого проследуем сюда /wp-includes/formatting.php. Открываем файл редактором кода и находим следующие строки:
(для двойных кавычек)

/* translators: opening curly double quote */
$opening_quote = _x( '“', 'opening curly double quote' );
/* translators: closing curly double quote */
$closing_quote = _x( '”', 'closing curly double quote' );

и так же для одинарных (если нужно)

/* translators: opening curly single quote */
$opening_single_quote = _x( '‘', 'opening curly single quote' );
/* translators: closing curly single quote */
$closing_single_quote = _x( '’', 'closing curly single quote' );

Там особо искать не придётся т.к. всё описано в самом верху. Так вот тут можно поступить по разному, как захотите. Можно просто «закомментировать» эти строки, что бы они больше не выполнялись и преобразования кавычек у вас не будет, а можно и заменить код на свой например так:
Для двойных кавычек.

/* translators: opening curly double quote */
$opening_quote = _x( '"', 'opening curly double quote' );
/* translators: closing curly double quote */
$closing_quote = _x( '"', 'closing curly double quote' );

Для одинарных.

/* translators: opening curly single quote */
$opening_single_quote = _x( ''', 'opening curly single quote' );
/* translators: closing curly single quote */
$closing_single_quote = _x( ''', 'closing curly single quote' );

Т.е. теперь, как видим, вид двойных и одинарных кавычек (так же называются апострофом) изменяться не будет, но будут подставлять их HTML сущности (мнемоники), что более правильно с точки зрения корректной HTML вёрстки.

Вот и всё. Думаю, что говорить, про сохранение файла и замене его на сайте говорить не стоит. Естественно вы можете заменять свои кавычки таким образом на, что угодно. Ах да, чуть не забыл, после изменения файла formatting.php обязательно сохраните его локальную копию т.к. при обновлении WordPress ваш изменённый файл затрётся (перезапишется) и надо будет вновь его менять/заменять, что бы всё работало как вы того хотите.

Поделиться!
Tags: , , ,

49.64MB | MySQL:52 | 0,273sec