Вставка php в виджет WordPress

Внутри самой системы управления контентом WordPress не предусмотрена функция поддержки интерпретации php-кода из виджета.

В данной статье я хочу рассмотреть порядок действий, которые необходимо произвести для того, чтобы код php верно интерпретировался при вставке его в виджет WordPress.

Возможно кто-то спросит, для чего вообще нужно вставлять php-код в виджет?

Приведу наглядный пример: когда я реализовывал на своем сайте отображение топ комментаторов без использования плагина, то мне понадобилось как раз таки вставить код php в виджет WordPress, чтобы лучшие комментаторы моего сайта отображались как я и задумывал в сайдбаре:

Как вставить код 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, начнет правильно интерпретироваться.

Комментарии 14

  • Что-то давненько Вы не писали. Информация интересная, вот так почитаешь и вскоре и сам начнешь разбираться в кодах 💡 Хотя для меня это полный и дремучий лес. Проще говоря как в концовке анекдота: …какие румбы, ты мне пальцем покажи. 😐 ➡

    • Андрей, действительно я давно не писал, я сейчас нахожусь в отпуске на своей основной работе и как-то все не получалось добраться до компьютера 😐 все какие-то дела
      Да уж, точно как в анекдоте 😀 , хотя в данном случае все делается довольно просто, тут даже не надо особо разбираться ➡

  • Ага полезная штука, давно себе установил))

    • Александр, действительно функция может оказаться полезной, и мне не совсем понятно, почему она не предусмотрена по умолчанию 🙂

  • Давненько слышал об этой функции и прочитал не колько статей похожих на вашу,но…не знаю как это обьяснить,я предпочитаю плагины кодам!!!Наверно это из-за того,что мой блог до их пор не перегружен контентом и поэтому не чувствую проблем со скоростью функционала!!!Так что пока что вашу статью добавил в закладку и воспользуюсь этой информацией по мере надобности в будущем!Спасибо вам за статью ➡

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

    • Юрий, то есть если я правильно понял, добавляете код непосредственно в sidebar.php (если хотите сделать альтернативу виджета)?
      В этом случае согласен, происходит дополнительная оптимизация (не поисковая, разумеется) ресурса!

  • Я у себя ТОП комментаторов реализовал кодом, так намного лучше и 1 плагин минусом. Но я по-моему файл, который в заметке не вставлял в Function.php, наверное для различных тем свои правила. 🙄

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

  • Спасибо Владимир! Интересный способ. 🙂

  • Да уж,кода не разбираешься куда что закинуть.
    Такая инфа очень полезна.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Adblock
detector