Вывод PHP-кода через виджеты WordPress без плагина

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

Но далеко не все знают, как это сделать. Многие веб-мастера, чтобы можно было выполнять такой PHP-код в виджетах WordPress, используют различные плагины. Один из-них — Exec-PHP. Данный плагин может заставлять работать PHP-коды не только в виджетах, но и на страницах с записями. Но даже я часто пытался им пользоваться и у меня далеко не всегда выходило.

По умолчанию в WordPress виджеты не поддерживают работу PHP. И это правильно, ведь для этого есть файл sidebar.php, через который при желании можно осуществить работу и вывод любой функции. Но в последнее время появляются современные шаблоны, которые сверстаны, например, на основе kubrick. И без специальных знаний не позволяют вставлять в sidebar.php вообще какие-либо коды. Поэтому для многих шаблонов виджеты остаются единственным вариантом внедрения.

Итак, чтобы заставить WordPress выполнять PHP коды в виджетах, открываем для редактирования файл functions.php, ищем знак ?> (в самом низу файла), в некоторых темах ob_end_clean(); и перед ним вставляем следующий код:

function mayak_widget_php($widget_content) {
if (strpos($widget_content, ‘<‘ . ‘?’) !== false) {
ob_start();
eval(‘?’ . ‘>’ . $widget_content);
$widget_content = ob_get_contents();
ob_end_clean();
}
return $widget_content;
}
add_filter(‘widget_text’, ‘mayak_widget_php’, 99);

Всё — теперь любой PHP-код будет выполняться в виджетах. И без всяких дополнительных плагинов. Проверено на WordPress 4.7.5.
Сам способ брал отсюда.
!!! Но вот на WordPress 4.8 с шаблоном HeraldВерсия: 1.6 такая операция не прошла — после вставки кода в указанный файл просто не открывались страницы виджетов, тем и т.п. Так что — или искать другие варианты или дорабатывать этот. Если есть предложения, пишите.

комментария 2

  • Антон

    А копипастить то зачем?

    • BlackCat

      Ну ссылка на источник указана.

Оставить комментарий

35  +    =  41