Вторник , 19 Март 2024
ДомойПрограммыПлагин для подключения PHP файла в WordPress через include

Плагин для подключения PHP файла в WordPress через include

Здравствуйте, друзья.

За время существования блога мне несколько раз приходило в голову выполнения php кода на его страницах. Но после более тщательного обдумывания находились замены в виде самостоятельных страниц или видоизменения идея до применения в другом ключе. Хотя плагины выполнения кода существуют, несколько из тех, что попробовал, совершенно не понравились. Одни из них требовали предварительного создания кодов с последующей вставкой с помощью шорт-кодов. Другие позволяли добавлять код при помощи стандартной для php конструкции <?php ?>, что исключало, порой, использование в визуальном редакторе — я с ним не работаю, но знакомым проще работать именно так.

WordPress plugin PHPinclude

Вообще, для моих нужд вполне было бы достаточно найти способ подключить какой-либо php файл в WordPress с помощью include. Сходу такого не нашёл, поэтому сделал небольшой плагин.

Подключение скриптов выполнить очень просто, используется такая специальная инструкция:
[include=/путь/к/файлу/от/корня/wp/имя-файла.php]

На данный момент можно подключить только 1 скрипт. Целесообразность внедрения нескольких пока под вопросом, но если потребуется, можно сделать.

Данную инструкцию нужно вставить в требуемом месте. Помимо этого, есть возможность передавать скрипту GET-параметры в стандартном виде, отделив их в строке подключения через знак вопроса и перечисляя через амперсанд. Пример:
[include=/путь/к/файлу/от/корня/wp/имя-файла.php?a=1&b=2]

Это создаст новые параметры в суперглобальном $_GET-массиве: $_GET[‘a’] = 1 и $_GET[‘b’] = 2. После исполнения скрипт данный массив вернётся к первоначальному состоянию.

Возможно, кто-то задастся вопросом, почему было бы не внедрить для кода что-то вроде [phpi][/phpi], в котором исполнять произвольные php инструкции с помощью функции exec. Но дело в том, что WordPress усердно занимается автоматическим форматированием, щедро снабжая код тегами <p></p> и <br>. Отключать данную особенность в плагине глобально будет плохим решением. Таким образом, пришлось бы выполнять обратную операцию, для предварительной чистки имеющегося программного текста с его дальнейшим исполнением, что может повлечь потенциальное нарушение логики работы внедрённого кода.

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

Для установки можете скачать архив с плагином и установить его с помощью стандартных средств — находясь в админке пройдите в Плагины → Добавить новый → Загрузить плагин. Выберите дистрибутив и установите. Второй вариант — самостоятельно залейте распакованный архив по FTP, папку (отсчитывать от корня блога!) ./wp-content/plugins/. В любом случае, после выполнения в этой папке появится каталог phpinclude.

Чтобы подключить, пройдите по ссылке меню Плагины, и у PHPinclude кликните Активировать. После этого можно добавлять, с помощью специальной конструкции, выполняемые php файлы к своим постам. Данные файлы нужно заливать по FTP, в любой удобный подкаталог сайта.

Скачать PHPinclude

Практически любой плагин снижает (хоть и не на много) производительность WordPress. Поэтому настоятельно рекомендую использовать PHPinclude только в том случае, если это действительно необходимо.

Если есть какие-то пожелания или замечания по работе PHPinclude, оставляйте их в комментариях. Постараюсь оперативно разрешить все вопросы.

Список изменений и дополнений

Список изменений
-- -----------------------------------------------------------------------------
[0.3b]
Проделана большая работа, перепилено едва ли не всё.

Добавлены альтернативные способы подключения скриптов. Помимо основного:
[include=]
<?include=?>
&lt;?include=?&gt;

Общая канва вызова имеет вид:
[include=cache:path?params]
где:
  cache — время жизни кеша, в секундах. Кешируется результат работы скрипта!
          Имеет смысл использовать для скриптов, формирующих HTML на основе
          сложных выборок;
  path — путь к файлу от корня сайта (если начинается со слеша), либо имя файла
         в папке scripts плагина;
  params — параметры в виде k1=v1&k2=v2. Поддерживаются массивы k[1]=10&k[2]=20

[Примеры работы]
[include=test.php] подключить файл test.php, находящийся в папке scripts плагина
[include=/script/test.php] подключить файл test.php, находящийся в папке script
    корня сайта — http://site.name/script/test.php
[include=60:test.php] — кешировать результат работы на 60 секунд
[include=test.php?arr[key1]=1&arr[key2]=2] — вызвать скрипт
    с параметром-массивом $_GET['arr']

[Прочие плюшки]
— плагин обзавёлся настройками;
— можно управлять файлами в папке scripts: создавать/удалять/редактировать;
— есть возможность установить перехват буфера вывода — полезно, если скрипт
  должен сохранять данные между запросами;
— теперь можно инклюдить несколько файлов на страницу;
— прочие улучшения.


[0.2.1b]
Исправлена неприятна ошибка, 2 и более точки в путях заменялись на слеш.
Павлуха — http://pavluha.net/ — огромное спасибо за этот момент!


[0.2b]
Первая публичная бета-версия. Подключение файла выполняется так:
[include=/путь/к/файлу/от/корня/wp/имя-файла.php]

Скрипту можно передавать GET-параметры:
[include=/путь/к/файлу/от/корня/wp/имя-файла.php?act=1&subact=2]
Перед выполнением скрипта будут созданы следующие параметры:
$_GET['act'] = 1;
$_GET['subact'] = 2;
При этом, текущий $_GET-массив сохранится, а после выполнения скрипта будет
восстановлен до первоначального состояния.

Добавлено вырезание тегов параграфов (<p></p>), которые автоматом добавляет WP,
перед и после вставки результатов работы кода


[0.1b]
Первая бета-версия. Позволяет внедрять php-файлы прямо в посты. Делается это
с помощью:
[include=/путь/к/файлу/от/корня/wp/имя-файла.php]
Рейтинг: 0

Автор публикации

2 070
не в сети 11 месяцев

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (Оценок пока нет)
Загрузка...

38 комментариев

  1. Надежда Давыдова

    При росте посещаемости моего блога стало уменьшатся среднее количество просмотров. Сейчас думаю над тем, как увлечь пользователя просматривать больше страниц. Возможно, такой плагин способен принести «дополнительную полезность» для пользователя. Вот только не представляю, что именно с его помощью можно реализовать.

    Рейтинг: 0
    • Можно попытаться подстроиться под пользователя, выводя то, что ему должно быть интересно.
      Но лучше сработает какой-нибудь хак на клиенте (выполненный на JavaScript), который при закрытии вкладки ранее XX секунд, допустим, будет спрашивать у пользователя, почему он так быстро покидает сайт и выводить на экран похожие записи, или скроллить страницу вниз, просить написать комментарий, в общем, хоть как-то отреагировать; допускаю, что такой трюк вызовет бурное негодование у некоторых.
      Сейчас это всё голословно, но если будет идея, можно провести тестирование по удержания юзеров разными способами.

      Рейтинг: 0
      • Надежда Давыдова

        Я бы лучше придумала какие-нибудь калькуляторы или психологические тесты с предложением в сайдбаре, чтобы это было ненавязчиво. Но не будет ли это серьезной нагрузкой?

        Рейтинг: 0
        • Если вынести всё на клиент, для сервера это будет практически незаметно. Если такие вещи требуют осуществления запросов к сторонним ресурсам, можно у себя создать скрипт, который выводит входные данные/промежуточные результаты/итоги в html с «подключить» его в сайдбаре через iframe (как обычный HTML). Правда, есть и минус — кто-то может использовать его на своём сайте, но это ведь будет являться ссылкой, так что снова плюс получается.

          Рейтинг: 0
          • Надежда Давыдова

            Еще раз убеждаюсь в том, что нет ничего невозможного. Если эту мысль хорошенько обдумать, уверена, это будет большой плюс сайту.

            Рейтинг: 0
            • Надежда, вот как раз «обдумать всё хорошенько» и является самым сложным smile
              Если сайт ничего не продаёт, остаётся держать ориентацию на проводимое время / количество комментариев.
              У меня мозга не хватает, как можно завлечь народ и понравить сайт.

              Рейтинг: 0
              • Надежда Давыдова

                Ну на этом сайте я бы вывела предложение проверить, насколько ты знаешь … ну что у вас там программистов самое простое?

                Увлечь человека например проверить свой мастерский уровень, выдать ему какой-нибудь виртуальный диплом smile

                Рейтинг: 0
                • Получат 3 человека дипломы ГУРУ веб-разработки, и снова никому будет не интересно. Хотя даже 3 человека — это плюс к пребыванию на сайте.
                  Надежда, ты просто мега-мозг генератор идей smile

                  Рейтинг: 0
  2. Надежда Давыдова

    О, премного благодарна smile Но как говорят американцы, если ты такой умный, почему не такой богатый? Мне бы найти из кучи всех этих идей одну стоящую smile

    Рейтинг: 0
  3. Надежда Давыдова

    Ну вот, на пенсию не отпускают ) А я мечтаю когда-нибудь заработать столько денег, чтобы объездить весь мир. Очень хочу увидеть руины Греции, Баальбек, руины древних цивилизаций в Америке…

    Но пока конечно нужно пахать ))))

    Рейтинг: 0
  4. Интересная штуковина. Пока не придумал, как это можно применить, но код посмотрел и взял на заметку. Не понял только этого:
    preg_replace('!\.{2,}!', '/', $PHPi_file); # заменить несколько точек на одну
    Если и правда зачем-то нужно заменять несколько точек на одну, то в данном случае они заменятся на слеш

    Рейтинг: 0
    • Я использую, например, в этой статье, вывод списка изменений/дополнений ;-)

      Да, это ошибка, огромное СПАСИБО!
      Несколько точек на одну заменить на случай таких шляп /../../ в запросе. Ну мало-ли, как там путь соизволят вставить.

      Рейтинг: 0
      • А, понял. Запретил самому себе шариться по серверу глубже корня сайта. smile
        Для удобства надо админку скрипту добавить, чтобы её могли посещать пользователи с привилегиями не ниже администратора. И в админке загружать скрипты в отведённую для этого папку. И про путь можно вообще забыть (при вставке хэштега в пост указывать только имя скрипта), и в файловую систему не придётся лазить

        Рейтинг: 0
        • По поводу админки думал, и хранить тогда скрипты прямо в директории с плагином можно.
          Но вот что действительно может понадобиться, так это вырезание всех проставленных тегов при удалении плагина. Как-то не задумывался об этом, а тут торкнуло. Как думаешь, нужно ли заморачиваться насчёт этого?

          Рейтинг: 0
          • Да, если кто-то решит удалить плагин, то в постах могут непонятные штуки остаться. Надо удалять, только с предупреждением, что процедура необратимая. Как обычно, больше интерфейса, чем самой работы — один mysql запрос update)

            Рейтинг: 0
            • И дополнительно ещё кнопочку сделать, для принудительного удаления из всех записей.
              И скрипты не загружать, а сразу редактировать.
              И… да фиг знает сколько всего можно сделать. Но нужно ли это кому будет? laugh

              Рейтинг: 0
              • У авторов плагина Hyper Cache видел плагин со схожим функционалом. Плюс: там есть возможность инклуда в ифрейм. Минус: в php-инклуде они не продвинулись даже до отправки параметров. В общем-то, кому-то это нужно значит.
                А если фантазировать, то ещё редактор кода с подсветкой синтаксиса)

                Рейтинг: 0
                • Ага, значит, что-то подобное есть.
                  А параметры у меня тоже только простые принимает, массив не взлетит, хотя можно добавить и такое, если кому-нибудь реально будет нужно, но тогда придётся менять примитив вызова, дабы квадратные скобки не усложняли быстрое получение кусочка для плагина. Может, даже на <include=path/file>. Из плюсов — не будет плагина, всё равно не выведется на страницу. Из минусов — придётся обрабатывать вариант &lt;include=path/file&gt;
                  Кстати, можно ещё больше усложнить и дать возможность добавлять несколько файлов. И не только для поста, но и для виджетов. ИМХО, эти пункты изврат какой-то уже, не знаю пока, нафига оно кому может понадобиться.

                  Рейтинг: 0
  5. Александр Каратаев

    Кстати, интересный плагин. Можно использовать, например, для демонстрации кода в работе… Хотя, при такой нужде я бы тоже наверное пошёл по пути создания отдельных страниц, не привязанных напрямую к WordPress…

    Рейтинг: 1
    • Александр, спасибо на добром слове smile
      В первую очередь, делалось для себя и сейчас успешно используется. Скорее всего, для подавляющего большинства не нужно. Новичкам сложно, профи и так знают, что и как сделать.

      Рейтинг: 0
  6. Установил, активировал.
    Записал в страницу через редактор запись:
    [include=/wp-content/plugins/phpinclude/scripts/test.php]

    В результате, страница грузится, но контент на странице обрывается. Могу ссылку скинуть посмотреть, поможете исправить?

    Рейтинг: 0
  7. Это то, что надо! Спасибо, мужик. Отличный плагин использования PHP кода для WordPress. У меня Exec-PHP не заработал нормально. А Ваш отлично подошел.

    Рейтинг: 0
  8. Ильдар Хакимов

    Отличное решение, include почему-то через плагины для php не обрабатывается, а здесь и работает и редактор кода есть на весь экран.

    Рейтинг: 1
    • Ильдар, здравствуйте.
      Это скорее вариант-ленивчик, ДСП (для собственного пользования). Иногда нужно добавить небольшой скрипт, а юзать что-то громоздкое, пусть и в десятки раз более функциональное, не хочется.
      Рад, если оказалось полезно кому-то ещё.

      Рейтинг: 0
  9. Привет всем из солнечного Еревана !

    Спасибо Анди, давно искал такой плагин, и случайно нашел у тебя!

    Рейтинг: 1
    • Айк, доброго вечера!
      Круто если пригодится. Делалось для себя, но запилил настройки и выложил для всех. Надеюсь, не только у меня работает.

      Классная фотография. Просто нереальная красотища. Захотелось посмотреть вживую smile

      Рейтинг: 0
  10. Доброго дня!
    Плагин класный, но у меня с ним улетает меню http://botanhost.ru/zakaz-xostinga/. Тема Phlox, страница сделана в Elementor. Подскажите куда копать. Уж больно нужен этот плагин. Буду вставлять php код зашифрованный zendом. Благодарю за помощь.

    Рейтинг: 1
    • Здравствуйте.
      Спасибо (:
      Это похоже на работу функции phpinfo(), так? Данная функция формирует полноценную html-страницу, начиная с доктайпа. Можно исхитриться и перехватить вывод, отрезав ненужное:
      <?php
      ob_start
      ();
      phpinfo();
      $buf ob_get_contents();
      ob_end_clean();
      echo 
      preg_replace('!^.+<body>(.+)</body.+$!s''$1'$buf);

      Но придётся самому добавить стили если хочется раскрашенную таблицу.
      Альтернативные варианты — выводить в фрейме, либо вообще на отдельной странице.

      Рейтинг: 0

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

Политика конфиденциальности

Наш сайт использует файлы cookies, чтобы улучшить работу и повысить эффективность сайта. Продолжая работу с сайтом, вы соглашаетесь с использованием нами cookies и политикой конфиденциальности.

Принять