Внутри самой системы управления контентом WordPress не предусмотрена функция поддержки интерпретации php-кода из виджета.
В данной статье я хочу рассмотреть порядок действий, которые необходимо произвести для того, чтобы код php верно интерпретировался при вставке его в виджет WordPress.
Возможно кто-то спросит, для чего вообще нужно вставлять php-код в виджет?
Приведу наглядный пример: когда я реализовывал на своем сайте отображение топ комментаторов без использования плагина, то мне понадобилось как раз таки вставить код php в виджет WordPress, чтобы лучшие комментаторы моего сайта отображались как я и задумывал в сайдбаре:
Приведенный пример является лишь частным случаем, подтверждающим возникающую порой необходимость вставки php в виджет WordPress, и я не думаю, что на этом круг возможностей этой самой вставки кода в виджет ограничивается.
Именно по этой причине в данной статье я и расскажу о том, как сделать так, чтобы код php, вставленный в виджет WordPress, поддерживался и исполнялся как положено, помогая вам реализовать свои планы.
Как сделать поддержку кода php в виджете WordPress?
На самом деле выполняется поставленная задача крайне просто и быстро и всего в одно действие: нужно лишь вставить в файл functions.php вашего шаблона WordPress дополнительный код:
1 2 3 4 5 6 7 8 | add_filter('widget_text','sp_widget_execute_php',100); function sp_widget_execute_php($text) { if(strpos($text,'<!--?') !== false) { ob_start(); eval('?-->'.$text); $text = ob_get_contents(); ob_end_clean(); } return $text; } |
И сохранить произведенные изменения.
При вставке кода в файл functions.php нужно придерживаться ряда правил, в частности размещать код функции необходимо внутри конструкции < ?php ? >, а точнее после < ?php но перед ? >.
При этом нельзя нарушать целостность кода других функций. Проще всего вставить данный код в самый конец файла перед закрывающим тегом ?>.
Также советую вам предварительно сделать резервную копию исходного файла functions.php на случай потери работоспособности вашего интернет-ресурса вследствие совершения каких-либо ошибок при проведении манипуляций с данным файлом шаблона.
Вносить изменения в файле functions.php можно как непосредственно из админ-панели WordPress (Внешний вид → Редактор), так и с использованием текстового редактора (рекомендую использовать notepad++) посредством доступа к файлам шаблона через FTP-клиент (о том, как настроить FTP-клиент я писал в статье).
Теперь все должно работать, и код php, вставленный в виджет WordPress, начнет правильно интерпретироваться.
Что-то давненько Вы не писали. Информация интересная, вот так почитаешь и вскоре и сам начнешь разбираться в кодах 💡 Хотя для меня это полный и дремучий лес. Проще говоря как в концовке анекдота: …какие румбы, ты мне пальцем покажи. 😐 ➡
Андрей, действительно я давно не писал, я сейчас нахожусь в отпуске на своей основной работе и как-то все не получалось добраться до компьютера 😐 все какие-то дела
Да уж, точно как в анекдоте 😀 , хотя в данном случае все делается довольно просто, тут даже не надо особо разбираться ➡
Ага полезная штука, давно себе установил))
Александр, действительно функция может оказаться полезной, и мне не совсем понятно, почему она не предусмотрена по умолчанию 🙂
Давненько слышал об этой функции и прочитал не колько статей похожих на вашу,но…не знаю как это обьяснить,я предпочитаю плагины кодам!!!Наверно это из-за того,что мой блог до их пор не перегружен контентом и поэтому не чувствую проблем со скоростью функционала!!!Так что пока что вашу статью добавил в закладку и воспользуюсь этой информацией по мере надобности в будущем!Спасибо вам за статью ➡
Пожалуйста, Игорь ➡ !
На самом деле полезная функция, потому не хочется искать файлик, который выводит сайдбар или еще какой-нибудь, и потом искать место куда вставить…
Так я раньше думал, но сейчас я убрал все функции вывода виджетов и все делаю через код(меньше запросов к базе — за счет чего хоть и маленький, но прирост в скорости загрузки). 😎
Юрий, то есть если я правильно понял, добавляете код непосредственно в sidebar.php (если хотите сделать альтернативу виджета)?
В этом случае согласен, происходит дополнительная оптимизация (не поисковая, разумеется) ресурса!
Да да, именно в sidebar.php
Я у себя ТОП комментаторов реализовал кодом, так намного лучше и 1 плагин минусом. Но я по-моему файл, который в заметке не вставлял в Function.php, наверное для различных тем свои правила. 🙄
Возможно вы разместили код, отвечающий за вывод топ комментаторов, непосредственно в файле шаблона (например в sidebar.php), тогда функция поддержки интерпретации php в виджете не нужна. Но может я и ошибаюсь)
Спасибо Владимир! Интересный способ. 🙂
Пожалуйста, Евгений! 🙂
Да уж,кода не разбираешься куда что закинуть.
Такая инфа очень полезна.