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

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

03 декабря 2014
Александра
WordPress, Плагины WP
комментарий 131

Практически каждый, кто ведет блог на WordPress и самостоятельно занимается его обслуживанием, знает о существовании волшебного файла 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 и на блогах авторов или веб-разработчиков.

Если все еще остались сомнения — сделайте чашечку кофе и обязательно прочтите статью Константина Ковшенина на WP Magazine — «Вся правда о functions.php». В первой части просто и доступно рассказывается почему не стоит верить в мифы о functions.php.

к оглавлению ↑

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

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

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

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

<?php
/* ====================================
 * Plugin Name: Functions.PHP
 * Description: Мой новый functions.php
 * Version: 1.0
 * ==================================== */

function functionsphp_head_info(){
 echo "n<!-- Плагин Functions.PHP активен -->n";
}
add_action('wp_head', 'functionsphp_head_info');

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

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

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

Материал доступен только подписчикам!

Разблокировать

к оглавлению ↑

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

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

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

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

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

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

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

к оглавлению ↑

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

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

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

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

к оглавлению ↑

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

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

к оглавлению ↑

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

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

function functionsphp_googleanalytic (){
    echo <<<EOT

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

</script>

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

к оглавлению ↑

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

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

function functionsphp_footertext (){
    echo <<<EOT

<!-- мой комментарий в подвале перед </body> -->

<!-- а ниже - подключение скрипта -->
<script type='text/javascript' src='http://avovkdesign.com/wp-content/js/xfiles.js'></script>

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

к оглавлению ↑

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

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

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

function functionsphp_shortcode_info ( $atts , $content = null ) {
    return '<div class="info">'. do_shortcode( $content ) .'</div>';
}
add_shortcode( 'info', 'functionsphp_shortcode_info' );

к оглавлению ↑

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

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

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

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

Понравилась статья?

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

Веб дизайнер, фронт-энд разработчик.
Все статьи автора

Получайте новые статьи прямо на свою почту!

http://avovkdesign.com/function-php-chem-zamenit.html

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