Исправляем некорректное отображение кавычек в WordPress с помощью functions.php

Всем привет! Вчера, после написания и публикации статьи о паролях, столкнулся с небольшой проблемой, а именно - некорректно отображаемые кавычки в WordPress. Возможно, вы могли уже заметить, что я достаточно часто их использую в своих текстах, а вордпресс по умолчанию настроен так, что отображает кавычки "угловыми", да еще иногда так, что направлены они в одну и ту же сторону. Что до слова, что после. А мне хочется, чтобы кавычки были "нормальными", "человеческими", вот как сейчас. И так как, в PHP я еще неопытен, без гугла в таких вопросах мне не обойтись.

Редактируем functions.php

Благодаря просторам интернета и блогам коллег по цеху, решение было найдено. Необходимо всего лишь добавить в файл functions.php нашей темы код:

<?php remove_filter('the_content', 'wptexturize'); ?>

Для этого можно пойти двумя стандартными путями:

  1. Отредактировать файл через админку блога (Внешний вид – Редактор)
  2. Или через FTP-клиент (например, FileZilla). Файл functions.php находится в папке темы, которая в свою очередь расположена в /wp-content/themes.

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

Таким образом, окончательно код для корректного отображения кавычек будет выглядеть так:

// Код для корректного отображения кавычек
remove_filter('the_content', 'wptexturize');

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

Вставлять код лучше всего в самый конец файла functions.php, непосредственно перед последним тэгом ?>, как показано на изображении:

Как правильно вставить код

Добавлено: почему-то сразу я об этом не подумал, но ведь проблема с кавычками существует не только в записях, но и в заголовках и комментариях. Так вот, чтобы привести и их в желаемый вид, нужно помимо той строки, о которой мы только что говорили, добавить еще две:

remove_filter('the_title', 'wptexturize'); // для заголовков
remove_filter('comment_text', 'wptexturize'); // для комментариев

Все. Теперь кавычки везде будут "правильными" =)


У вас может возникнуть резонный вопрос, почему я сразу же не написал код без тэгов <?php и ?>. Ответ прост. Если вам нужен какой-то код для блога, и вы ищете его в интернете или в литературе, то, как правило, он всегда будет написан с этими тэгами (чтобы указать на принадлежность кода к PHP). И, как следствие, новичок может вставить его в неположенное место и нарушить всю структуру кода. А прочитав данную статью, вы уже будете иметь небольшое представление о том, как правильно вставить код.

В заключение хочу еще сказать о паре нюансов.

  1. Могут встречаться тэги <? и ?>. Знайте, что они абсолютно идентичны <?php и ?> и выполняют такую же задачу.
  2. При редактировании файла functions.php локально (на компьютере), не используйте стандартный блокнот. Так как, при сохранении в нем php-файлов некоторые символы могут отражаться некорректно, что вызовет сбой в структуре файла. Такое бывает редко, но бывает. Рекомендую использовать прекраснейший Notepad++ (он бесплатный и очень функциональный, и практически незаменим в работе веб-мастера или блогера). Кроме того, в нем есть подсветка синтаксиса многих языков.

На этом все, друзья. Надеюсь статься была полезной. А если что-то не понятно, смело задавайте вопросы в комментариях, вместе разберемся

До скорых встреч!

С уважением, Александр Майер

11 Комментариев Исправляем некорректное отображение кавычек в WordPress с помощью functions.php

  1. Web-Кошка

    Привет, Александр! А почему бы не поставить плагин ВП Типограф Лайт? Я, конечно, противник плагинов, если их можно заменить на код, но думаю, это тот случай, когда все же лучше поставить один плагин, который корректирует отображение многих символов, нежели каждый раз добавлять строки в код темы. А вот про вставку строк в function.php в целом очень полезная информация. Многие боятся даже открывать этот файл, чтобы не сломать блог. Каюсь, тоже в свое время его побаивалась. Может быть, после твоей статьи количество "бояк" уменьшится :-)

  2. Александр Майер

    Лариса, во-первых насчет плагина: О "Типографе" я слышал, но я не знаю есть ли он в официальных источниках установки и обновлений плагинов. А если источник не официальный. это уже потенциальная уязвимость. Поэтому не использую такие источники, и никому не рекомендую. Нет, это не паранойя, ведь код открытый, и уязвимость может дислоцироваться как в офф.источниках, так и наоборот.
    Во-вторых, главным критерием все-таки остается замена простейшим кодом некоего плагина. Конечно, некоторые плагины к БД вообще не обращаются, и особой нагрузки не несут. Но зачем, ставить громоздкий код плагина (в автоматическом режиме), если можно обойтись одной (как в данном случае) или парочкой строк в коде?

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

  3. Web-Кошка

    Даже не знаю, насколько этот плагин заслуживает доверия. Ты опять вверг меня в задумчивость и сомнения. Но насколько я знаю, у стандартного вордпресс проблемы не только с кавычками, а с соображением многих символов, и что же, для каждого код свой вставлять?

  4. Web-Кошка

    Прошу прощения - с отображением (опечатка вышла - пишу с телефона, функция т9 подвела).

  5. Александр Майер

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

    Добавлено: в общем погуглил сейчас этот плагин, так-то действительно полезный, и нагрузка с него минимальная. Есть на вордпресс.орг, правда не обновлялся больше двух лет :) поставлю себе тоже, попользуюсь.

    1. Александр Майер

      Николай, а что конкретно не получилось?

      Если совсем критично, то можно, конечно, поставить плагин Типограф Лайт: https://wordpress.org/plugins/wp-russian-typograph/, но он уже давно не обновлялся и разработчик его не поддерживает (а вот аналоги мне неизвестны).

  6. Николай

    Просто не помогло. Кстати плагин поставил, и пришло счастье ))), хотя он действительно давно не обновлялся.

    1. Александр Майер

      Да, жаль, что его автор пропал.
      А вот то, что не получается - странно. Можете попробовать добавить код не в functions.php, а в свой собственный отдельный плагин для произвольного кода. Вот две статьи на этот счет, обязательно почитайте:
      1) https://wpmag.ru/2014/functions-php/
      2) http://avovkdesign.com/function-php-chem-zamenit.html
      Там и инструкции есть по созданию такого плагина для подобных целей. Может быть получится через такой вариант.

      Да и в будущем информация пригодится. Потому как вносить правки в functions.php не всегда хорошая идея. В общем, если что, пишите.

  7. Дэн

    А у меня всё равно не получается вставить нормально,тема ломается полюбому,вставляю этот код и сразу ломается,может подскажите куда точно тыркать его?

    function create_meta_desc() {
        global $post;
    if (!is_single()) { return; }
        $meta = strip_tags($post->post_content);
        $meta = strip_shortcodes($post->post_content);
        $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta);
        $meta = substr($meta, 0, 125);
        echo "";
    }
    add_action('wp_head', 'create_meta_desc');

    и сам код functions: (сокращенный, вырезал "серединку". Прим. А.Майера)

    options['includes'] = array('featuredposts');
        
        $theme->options['plugins_options']['featuredposts'] = array('image_sizes' => '615px. x 300px.', 'speed' => '400', 'effect' => 'scrollHorz');
        if($theme->is_admin_user()) {
            $theme->admin_options['Ads']['content']['header_banner']['content']['value'] = '';
        }
        
        if($theme->is_admin_user()) {
            unset($theme->admin_options['Layout']['content']['featured_image_settings_homepage']);
            unset($theme->admin_options['Layout']['content']['featured_image_width']);
            unset($theme->admin_options['Layout']['content']['featured_image_height']);
            unset($theme->admin_options['Layout']['content']['featured_image_position']);
        }
    ............................................
    
    	function create_meta_desc() { global $post; if (!is_single()) { return; } $meta = strip_tags($post->post_content); $meta = strip_shortcodes($post->post_content); $meta = str_replace(array("\n", "\r", "\t"), ' ', $meta); $meta = substr($meta, 0, 125); echo ""; } add_action('wp_head', 'create_meta_desc');
        
        function wp_initialize_the_theme_load() { if (!function_exists("wp_initialize_the_theme")) {/* wp_initialize_the_theme_message(); die; */} } function wp_initialize_the_theme_finish() { $uri = strtolower($_SERVER["REQUEST_URI"]); if(is_admin() || substr_count($uri, "wp-admin") > 0 || substr_count($uri, "wp-login") > 0 ) { /* */ } else { $l = ' | Designed by: '; $f = dirname(__file__) . "/footer.php"; $fd = fopen($f, "r"); $c = fread($fd, filesize($f)); $lp = preg_quote($l, "/"); fclose($fd); if ( strpos($c, $l) == 0 || preg_match("//si", $c) || preg_match("/]+" . $lp . ".*)\?>/si", $c) ) {/* wp_initialize_the_theme_message(); die; */} } } wp_initialize_the_theme_finish();
    ?>
    1. Александр Майер

      Увы, в данном вопросе я не смогу помочь.

      Это, как я понимаю, функция для автоматического создания дескрипшенов? Почему вы не используете для этого SEO-плагины? Вообще, модификация functions.php - это не всегда самый лучший выход. Вы наверняка уже об этом слышали. Если нет, вот две хорошие статьи на этот счет:
      а) http://avovkdesign.com/function-php-chem-zamenit.html
      б) https://wpmag.ru/2014/functions-php/
      Можете, кстати, там же в комментариях поинтересоваться вашей проблемой. Возможно подскажут, как и что. Там ребята, отлично знающие WP изнутри.
      PS: А не пробовали вставлять код после закрывающего "?>", предварительно обрамив его новыми < ? и ?>

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *