По умолчанию виджеты поддерживают только обычный текст и HTML-код. Но люди очень часто сталкиваются с необходимостью вставки в виджет кода PHP, например при установки Sape.
Конечно, есть уйма плагинов, позволяющих это реализовать, но мы, как обычно, воздержимся от их использования и всё, что потребуется — это вставить следующий код в functions.php текущей темы:
function php_in_widgets($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', 'php_in_widgets', 99);
Та-дам, теперь можете добавлять PHP-код в текстовые виджеты. И никаких плагинов.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Спасибо, Миша!!! Только недавно уже установила похожий код, до этого пользовалась плагином. Эту статью немного бы пораньше - но думаю другим это будет очень полезно. -1 плагин +скорость работы блога.
пожалуйста)
кстати, очень многие плагины можно заменить несколькими строчками кода, чуть позже создам отдельную рубрику, посвященную замене плагинов на код.
Я с радостью буду туда заглядывать... Вот ещё бы руки там выдавали и голову... Такого раздела не планируется создать??? ))))
ыы)
Меня очень смущают эти строки:
Пож. объясните.
Добрый день, Нурлан!
в данном примере функции ob_get_contents, ob_start, ob_end_clean нужны для буферизации вывода, то есть всё, начиная с функции ob_start вместо того, чтобы выводиться, записывается в буфер.
Если у вас ругается антивирус, то возможно проблема в eval, так как она выполняет PHP-код, содержащийся в виджете.
Подскажите пожалуйста, может немного не по теме, но все-таки...вот есть стандартный виджет "Свежие записи". Где можно просмотреть код этого виджета, дабы внести изменения в него (хочу миниатюры постов в сайдбаре вывести через стандартный виджет)?
класс виджета свежих записей находится в этом файле
wp-includes\default-widgets.php
, начиная с 527й строчки)А как обойтись без eval? Antivirus ругается... Не опасно ли использование данного кода?
ну, антивирус недоволен тем, что выполняется php-код из виджета, если к настройкам виджета не будет доступа у подозрительных лиц, тогда никакой опасности нет
Скажите, а как навигацию сделать как у вас тут кнопки справа и влево экрана?
1. добавить две ссылки в HTML сайта, расположить их при помощи
position:fixed
,2. сами ссылки генерируются функцией get_adjacent_post()
как-то так :) могу на следующей неделе написать об этом пост.
Не робит уже =(
спасибо. то что искал! работает как описано.
после сохранения в текстовом виджете весь php код почему-то становится закомментированным....