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

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

Плагины и functions.php

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

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

Главные отличия плагина и functions.php

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

  • фильтры WordPress (например, wp_head для добавления/удаления meta тегов в <head>)
  • шоткоды add_shortcode()
  • социальные кнопки
  • код Метрики, Analytisc и других подобных
  • SEO инструменты
  • пользовательские записи и таксономии (register_post_type()и register_taxonomy())
«Территория темы» — все, что непосредственно касается оформления сайта:

  • настройки темы (меню registern_nav_menus(), сайдбары register_sidebar(), виджеты и пр.)
  • настройка длины анонса, текста ссылки «Читать далее» и т.п.
  • любые объявления с помощью add_theme_support()
  • пользовательский 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 и добавить в него следующий код:

Первая часть плагина — это комментарий, который предоставляет WordPress служебную информацию о плагине — имя, описание и версию. Эти данные удалять нельзя.<br ?—>
Вторая часть — это функция, выводящая html-комментарий и хук-событие, запускающее выполнение нашей функции в секции сайта.
Плагин можно установить, загрузив созданный файл на сайт через FTP в директорию /wp-content/plugins/. А для установки через админ-панель, нужно запаковать этот файл в .zip архив.

Как установить плагин — Альтернатива functions.php

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

Альтернатива functions.php - установка плагина

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

установка плагина wordpress

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

установка завершена

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

Для демонстрации работы плагин добавляет html комментарий в секцию <head> сайта. Можно проверить наличие этого комментария. Для этого переходим на сайт, нажимаем правой кнопкой мыши и выбираем меню Посмотреть исходный код. В этом окне нажимаем Crtl + F, чтобы активировать окно поиска на странице, и вводим название плагина «Functions.PHP». Если плагин работает, то мы найдем вот такую строку в коде:

плагин functionphp работает

Если плагин активирован и такой строки в исходном коде нету, проверьте наличие кеширующих плагинов на сайте и очистите кеш при их наличии.

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

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

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

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

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

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

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

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

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

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' );

Теперь всегда используем свой плагин Functions.PHP

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

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

Все что нужно — установить плагин и разместить в нем свой код. И дальше любые куски кода с пометкой «вставить в functions.php» добавляем в наш волшебный плагин.

Автор: Александра Вовк