Почему не стоит редактировать functions.php и чем его заменить?

Статья последний раз была обновлена 27.07.2023

Практически каждый, кто ведет блог на WordPress и самостоятельно занимается его обслуживанием, знает о существовании волшебного файла functions.php. Часто его применяют абсолютно не по назначению, что может привести к существенным проблемам. Давайте вместе более детально разберемся с этим вопросом.

Уверяю, прочитав эту статью, вы измените свое отношение к плагинам и перестанете пополнять ваш functions.php очередным сниппетом кода.

Плагины и functions.php

Многие владельцы сайтов на WordPress твердо убеждены, что плагины непременно будут нагружать и тормозить блог. А если просто добавить код в functions.php, то это никак не повлияет на нагрузку. Увы, это не совсем так…

Дело в том, что нагрузку вызывает не конкретно плагин, а его неверно написанный код, который, легко может попасть и в functions.php из очередного руководства.

Давайте посмотрим в чем главные отличия плагина и functions.php.

Плагины Файл functions.php
Предназначены для расширения функционала сайта Предназначен для обслуживания конкретной темы и ее тонкой настройки (размер миниатюр, локализация темы и пр.)

«Территория плагина» — все, что касается контента:

  1. фильтры WordPress (например, wp_head для добавления/удаления meta-тегов в области тега head);
  2. шоткоды add_shortcode();
  3. социальные кнопки;
  4. код Метрики, Analytisc и других подобных;
  5. SEO-инструменты;
  6. пользовательские записи и таксономии (register_post_type() и register_taxonomy()).

«Территория темы» — все, что непосредственно касается оформления сайта:

  1. настройки темы (меню registern_nav_menus(), сайдбары register_sidebar(), виджеты и пр.);
  2. настройка длины анонса, текста ссылки «Читать далее» и т.п.;
  3. любые объявления с помощью add_theme_support();
  4. пользовательский CSS;
Легко активируются и переносятся на другой блог Привязан к определенной теме WordPress и все, что туда будет добавлено перестанет работать при смене активной темы. Переносить этот функционал придется вручную каждый раз при смене шаблона
При наличии критических ошибок не активируется или отключается Ошибки показываются прямо на сайте или вовсе загружается пустая страница
Если добавить код в плагин и в functions.php активной темы — он выполнится в обоих случаях с одинаковой скоростью. Единственное различие — код плагина выполнится немного раньше, а это говорит исключительно об отличии в порядке запуска

Принципиальное отличие плагина от файла functions.php — в назначении и порядке выполнения.

Также необоснованно мнение, что код в functions.php выполнится быстрее, чем в плагине. Один и тот же код в плагине и в functions.php выполнится с одинаковой скоростью и нагрузкой.

Очень часто проблемы c высокой нагрузкой возникают из-за дополнительного функционала плагинов, а скорость загрузки сайта страдает от подключения скриптами своих стилей, скриптов и другого контента. Поэтому важного уделить внимание выбору плагина, дабы избежать проблем в будущем.

Если вы обычный блоггер и далеки от веб-разработки, то при выборе плагина обязательно обращайте внимание на отзывы в репозитории WordPress и на блогах авторов или веб-разработчиков.

Плагин как альтернатива файлу functions.php

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

Давайте создадим свой плагин — альтернативу файлу functions.php. Не стоит пугаться, он будет выглядеть один в один как любимый functions.php. Все, что потребуется — просто добавить пустой плагин на свой сайт. И затем в него можно вставлять необходимый код, как раньше делали это c functions.php.

Прежде всего нам нужно создать на компьютере файл с названием functionsphp.php и добавить в него следующий код:

n";
}
add_action('wp_head', 'functionsphp_head_info');

Первая часть плагина — это комментарий, который предоставляет WordPress служебную информацию о плагине — имя, описание и версию. Эти данные удалять нельзя.

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

Плагин можно установить, загрузив созданный файл на сайт через FTP в директорию /wp-content/plugins/. А для установки через админ-панель, нужно запаковать этот файл в .zip архив.

Как установить плагин?

Для установки плагина через админ-панель, заходим в «Консоли» в меню «Плагины» → «Добавить новый» и нажимаем кнопку «Загрузить плагин».

В окне загрузки указываем путь к zip-архиву плагина, нажав кнопку «Выбрать файл» и затем начинаем установку кнопкой «Установить».

По завершению загрузки и установки плагина, нам предложат активировать его или перейти на страницу плагинов. Я активировала плагин.

Попадаем на страницу со списком всех плагинов и видим, что установка и активация прошли успешно.

Для демонстрации работы плагин добавляет html-комментарий в секцию head сайта. Можно проверить наличие этого комментария. Для этого переходим на сайт, нажимаем правой кнопкой мыши и выбираем меню «Посмотреть исходный код», комментарий должен отразиться. Если на сайте используются плагины кэширования, то возможно нужно будет сбросить кэш.

Как редактировать плагин?

На время редактирования плагинов, их лучше деактивировать. Если редактировать активный плагин, то при обнаружении конфликта или ошибки WordPress автоматически отключит его. А это — еще один огромный плюс в пользу плагина вместо functions.php, так как в случае последнего получим неработающий сайт и необходимость заходить и исправлять ошибку через FTP.

Чтобы отредактировать плагин, заходим в «Консоли» в меню «Плагины» → «Установленные» и под названием нашего плагина нажимаем ссылку «Редактировать».

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

Что точно стоит добавить в свой плагин?

Далее я приведу несколько примеров, которые помогут добавить код в head или перед закрывающим тегом body, а также просто дополнительный функционал на сайт.

Добавление кода в тег head вроде Google Analytics

Чтобы подключить скрипт или вывести информацию внутри тега head, добавьте этот код с примером подключения аналитики Google. Все, что написано между символами <<

function functionsphp_googleanalytic (){
    echo <<
 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 ga('create', 'UA-01010101-1', 'vashsite.com');
 ga('send', 'pageview');



EOT;
}
add_action('wp_head', 'functionsphp_googleanalytic');

Добавления кода перед закрывающим тегом body

Эта функция подойдет, если необходимо добавить код в подвал сайта или там-же подключить скрипты и т.п.

function functionsphp_footertext (){
    echo << -->




EOT;
}
add_action('wp_footer', 'functionsphp_footertext');

Собственные шоткоды

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

В примере ниже добавляется shortcode info, текст внутри которого оборачивается в тег div с классом info.

function functionsphp_shortcode_info ( $atts , $content = null ) {
    return '
'. do_shortcode( $content ) .'
'; } add_shortcode( 'info', 'functionsphp_shortcode_info' );

Теперь всегда используйте свой плагин!

Губарь Маргарита Александровна

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

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