Доброго времени суток! Как-то хотел добавить php код в сайдбар, используя обычный текстовый виджет, но из этого ничего не вышло. Почему? Потому, что мои виджеты не поддерживали php. Я исправил это недоразумение и решил поделиться с вами решением данной проблемы.
Если вы читали предыдущие статьи, то могли заметить, что я негативно отношусь к плагинам. Предпочитаю добавить несколько строк кода вместо очередного балласта блога. Именно поэтому сейчас мы рассмотрим, как сделать поддержку php в виджетах WordPress без использования плагинов.
Вам не придется прилагать особых усилий, всего лишь нужно использовать небольшой код:
//Php в виджете 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; }
С помощью этого кода текстовый виджет будет выполнять любой php код. (автор кода: SlowProg)
Как и куда вставить код?
Сделать это можно несколькими способами. Зайдите в редактор, в вашей панели администратора и перейдите в «Функции темы (functions.php)», или найдите файл functions.php в вашей теме и откройте редактором Notepad++. Вставьте код в конце файла, перед самой последней строкой «?>».
Наглядный пример:
Вот и все! Теперь ваш текстовый виджет поддерживает php.
Как использовать?
Думаю, все пользователи WordPress знакомы с виджетами. Зайдите в панель администратора, «Внешний вид – Виджеты». Если ваша тема их не поддерживает, не спешите ее менять, сделайте тему Wodpress виджет-совместимой. Перетащите обычный текстовый виджет в боковую колонку и вставьте в него любой php код.
Для проверки я взял простенький php код вывода даты и времени. Все отлично работает. Новичкам часто тяжело что-либо менять в коде, или же они боятся что-то испортить и просят взамен посоветовать плагин. Друзья, здесь нет ничего сложного, если сделаете так, как описал я, то у вас все получится! Также, вы смело можете задавать вопросы в комментариях.
А что, например, еще можно поставить в виджет с помощью php-кода, кроме вывода даты и времени?
Что угодно 🙂 Например, у меня «Популярные статьи» и «Лучшие комментаторы месяца» выведены с помощью php кода в виджетах.
Ну, как сделать «Популярные статьи», Вы уже написали. А можете написать следующий пост о том, как установить с помощью php виджет «Лучшие комментаторы месяца»?
Наталия, конечно 🙂 В ближайшее время напишу.
Сделала поддержку php в виджетах по Вашему совету. Только в коде functions.php у меня не было в конце строчки
?>
У меня заканчивалось так:
}
/* You custom functions below */
Я вставила код перед последней строчкой
/* You custom functions below */
/* You custom functions below */ — в переводе с английского получается «Ваши функции ниже» Вы пользовались html редактором или заходили через админку WP? Последняя строка должна быть «?>»
Через админку WP, в Редактор 🙂
Плагин Antivirus ругается на этот код. Ему не нравятся слова eval и ob_get_contents. В чём проблема? Не опасно ли использование данного кода?
Я не пишу статью, если не знаю о чем речь 🙂 Этот код используется на данном блоге, полет нормальный 🙂 😉
С помощью этого кода планирую переделать Топ комментаторов. В «Функции темы» я скопированный код вставила. Буду ждать урока по установке «Топа коментаторов» в сайтбаре без использования плагина. Спасибо за ваш труд.
Пожалуйста 🙂 Думаю, скоро появится статья о топе комментаторов. 🙂
Затянул со статьей, но как и обещал — ТОП комментаторов без плагина + функция «Победители» 🙂