Как выполнить php-код в текстовом виджете WordPress?

Опубликовано: 02.11.2014 | 591

Как выполнить php-код в текстовом виджете WordPress?

Всем привет. С Вами снова Александр Васильев. У меня наверное опять пошёл период лени. До обеда собирался написать пост, но всё никак не мог собраться :) Потом встал с кровати и всё-таки решил. Полазив по своему текстовому файлу с темами, выбрал такую, которая не требует большого объёма поста… Не охота что-то сегодня обширно писать.

Ладно. Лень всё-равно положу на лопатки и продолжу писать большие объёмные статьи, но уже не сегодня. Сегодня я хочу рассказать Вам о том, как выполнить php-код в виджете WordPress. Для чего это нужно? Это может пригодится во многих случаях, особенно при внедрении каких-то кодов вместо плагинов. Ну или в других случаях, когда нужно чтобы в виджете работал наш php-сценарий.

С такой потребностью я сталкивался при внедрении кода «Топ комментаторов». Там нужно было в виджете выводить самых общительных с помощью php. Больше никак. Вот Вам живой пример того, для чего нужна такая функция на блоге. Тем более что большого кода для организации такого функционала внедрять не требуется (всего несколько строчек в одном файле).

Сегодняшний пост в содержании не нуждается. Я просто покажу Вам как это сделать и пойду спокойно отдыхать дальше. Ну уж очень сильно сегодня меня лень одолела. Ничего не поделаешь. Да и начал активное обсуждение на своём любимом форуме.

Код для возможности выполнения сценария php в виджетах

По умолчанию в WordPress нет такой функции. Если Вы вставите php-код в виджет он отобразится как код и интерпретироваться не будет. Для внедрения такой фишки, откройте файл functions.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
echo "Hello world";
?>

Теперь перейдите на блог и посмотрите в область виджетов. Если там отображается фраза «Hello world», значит внедрённый функционал работает и Вы сможете выполнять php-сценарии непосредственно в виджетах.

Используйте такой функционал только по назначению. Только тогда, когда он действительно необходим. Если же Вам не нужна возможность выполнения php-сценариев в виджетах, не стоит его внедрять!

На этом у меня всё. Спасибо за внимание и до скорых встреч. С уважением, Александр Васильев.

БредТак себеНеплохоХорошоОтлично
Загрузка...
Подписка на новые статьи блога


Не будь жадиной! Поделись с друзьями :)



Комментарии к этой записи (Правила):

  1. Юрий Йосифович (20.11.2014)



    Интересно, внедрение такого кода не повлияет на безопасность блога в целом?

    1. Александр Васильев (20.11.2014)



      Думаю нет. Ну а за безопасность я не боюсь. Бэкап всегда на компе :)

      1. Иван Зелинский (20.11.2014)



        Сделав бэкап, можно спокойно спать, но все же ой как нежелательные подобные проблемные моменты. Александр справ ошибку не «о авторе» правильно «Об авторе» — Наталья давеча заметила и подскзала

      2. Александр Васильев (20.11.2014)



        Спасибо. Исправил :)

  2. Александр (30.11.2015)



    Очень интересно. А я вот уже долгое время ищу способ как можно вставить php код внутрь статьи не используя плагины. Но пока все решения представляются только с помощью плагинов а так чтобы прописать код и с помощью него вставлять код внутрь статьи найти не могу. Может у вас есть какое-нибудь решение ля такой реализации или вы не задумывались пока об этом?

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

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

:arrow: 
:biggrin: 
:confused: 
:cool: 
:cry: 
:eek: 
:evil: 
:exclaim: 
:idea: 
:lol: 
:mad: 
:mrgreen: 
:neutral: 
:question: 
:razz: 
:redface: 
:rolleyes: 
:sad: 
:) 
:surprised: 
:twisted: