Лучший способ разрешить плагины для PHP-приложения. Вставка PHP кода в WordPress через виджеты Отступление plugin php
7-мая версия PHP увидела свет в недавнем 2015 году. Новый виток в развитии этого языка программирования принес много возможностей для всех тех, кто использует PHP . Среди преимуществ новой версии следует выделить скорость. Так, по данным разработчиков, скорость работы скриптов на PHP 7 , по сравнению с предыдущими версиями, возросла почти в два раза. В связи с этим, многие владельцы сайтов, на которых установлены более старые версии PHP , хотят перейти на новую.
Зачем проверять на совместимость?Следует отметить, что перед тем, как в панели управления Вашего хостинга менять версию PHP на более новую и быструю, необходимо проверить сайт WordPress на совместимость с ней, а именно темы и плагины. Такая необходимость возникает из-за того, что обычно в новых версиях программного обеспечения какие-то функции добавляются, а некоторые вообще перестают существовать. Если в каком-то плагине или теме используется несуществующие в новой версии функции или методы, то это привет к ошибке, что может нарушить работу сайта в целом.
Как проверить на совместимость с PHP 7.0? Плагин PHP Compatibility CheckerПлагин PHP Compatibility Checker позволяет просканировать весь сайт и указать, какие из его компонентов (темы, плагины) не совместимы с выбранной версией PHP . Для начала необходимо его установить и активировать, после чего в админ-панели перейти Инструменты -> PHP Compatibility .
Как видим, плагин предлагает весьма понятные настройки. Для начала проверки необходимо выбрать версию PHP , на совместимость с которой хотите проверить сайт (блок PHP Version ). Удобной функцией плагина является выбор статуса проверяемых компонентов. Доступны на выбор два варианта: либо проверять среди активных тем и плагинов, либо в неактивных (поле Plugin / Theme Status ). Для старта проверки нужно нажать кнопку Scan site again .
Результат проверки также можно загрузить в текстовом файле, нажав для этого кнопку Download Report .
Каждый знакомый с WordPress слышал про файл темы (шаблона) functions.php . Однако не все хорошо понимают его назначение, видя в нем лишь файл в котором хранятся различные php функции. В сети, как и у меня на этом сайте, часто предлагается добавлять PHP код в этот файл. Однако не каждый код подойдет для этого файла. Не потому что он не будет работать, а потому что он не подходит по логике использования.
Также при редактировании functions.php новички допускают ошибки из-за которых сайт перестает работать.
В этой статье я постараюсь рассмотреть все эти моменты: когда нужно использовать functions.php и когда этого лучше не делать, какие ошибки при редактировании functions.php могут возникнуть.
Возможности functions.phpfunctions.php располагается в папке темы и загружается каждый раз, во время просмотра внешней части сайта, в админ-панели и даже во время AJAX запросов. Нет случая, когда functions.php не будет подключен и это открывает широкие возможности перед разработчиками.
Для примера, следующий код, вставленный в файл темы functions.php расширит возможности темы - включит поддержку миниатюр поста:
Add_action("after_setup_theme", "wp_kama_theme_setup"); function wp_kama_theme_setup(){ // Поддержка миниатюр add_theme_support("post-thumbnails"); }
Другой пример, код заменит текст в подвале админ-панели WordPress, на данные о количестве запросов к базе данных, времени генерации страницы и использовании памяти:
## Данные о количестве запросов к базе данных в подвале админки
add_filter("admin_footer_text", "wp_usage"); // в админке
add_filter("wp_footer", "wp_usage"); // на сайте
function wp_usage(){
echo sprintf(__("SQL: %d за %s сек. %s MB", "km"),
get_num_queries(),
timer_stop(0, 3),
round(memory_get_peak_usage()/1024/1024, 2));
}
- «Плагины работают медленнее чем код в файле functions.php», говорят неосведомленные - это не так!
Теоретически вставка кода в functions.php равносильна установке плагина, но это не одно и тоже. Ведь при смене темы, мы получим совершенно другой functions.php и все внесенные изменения будут потеряны, а вот плагин останется, сколько тему не меняй. С этих соображений и нужно относится к файлу functions.php. Если добавляемый функционал относится не только к теме, но и к сайту в целом, то стоит задуматься о подключении его в виде плагина.
Второй пример выше «Данные о количестве запросов к базе данных в подвале админки». По логике не подходит для использования в файле functions.php. Потому что, если мы сменим шаблон, то мы потеряем этот функционал, а он используется в админке и нужен независимо от того какая тема используется.
Поэтому, давайте удалим его из functions.php и сделаем из него плагин - это просто!
Чтобы создать плагин нужно создать файл с кодом ниже (название файла может быть любое), добавить его в каталог плагинов wp-content/plugins/ и активировать плагин в админ-панели:
. Обычно, если вставляемый код имеет в начале и в конце эти теги, то их нужно удалить. Также, файл functions.php не должен выводить на экран никакой текст (HTML код или другой контент). Вывод текста допускается только внутри функции, которые в дальнейшем будут использоваться в шаблоне или которые прикрепляются к хукам (подробнее см. ниже).
Нельзя допускать никаких символов до , в том числе невидимые символы (перенос строки), потому что functions.php подключается до установки http заголовков (в таких заголовках передаются различные данные, например, что это html документ; что кодировка utf-8 другое). По правилам PHP, контент должен выводится на экран после того, как отправлены заголовки. А все что за пределами это и есть контент - текст выводимый на экран, даже невидимый символ \n. Поэтому такой текст вызывает ошибку.
Чтобы не было ошибок, учитывайте 4 момента: #1 Правильная вложенностьПример, у нас была такая структура:
........здесь код......... ?>
Правильно так:
#2 Никаких переносов строк, пробелов, текста до
Такой код вызовет ошибку:
А этот нет:
Логичнее его записать так:
Бывает что перенос строки ставят в самом конце functions.php, вот тогда это становится настоящей проблемой, потому что все казалось бы правильно, но сайт не работает. На самом деле после?> или до здесь пустая строчка
По этой причине многие разработчики вообще удаляют закрывающий тег?> , это допустимо для PHP. Рекомендую всегда делать именно так:
внутри PHP функции
Если в functions.php присутствует функция, то внутри этой функции можно использовать теги , например, для того, чтобы визуально выделить HTML код внутри функции:
это html код
Дело в том, что в этом случае функция только лишь регистрируется и не выполняет никаких действий. Все что внутри функции (между { }) не работает пока эта функция не будет вызвана, а вызываются такие функции обычно из шаблона или через фильтры, уже после того как отправлены HTTP заголовки. Поэтому в данном примере, мы можем игнорировать переносы строк и использовать?> и