Вторник , 24 Октябрь 2017
Как новичку заработать в интернете?
ДомойПрограммыПлагин для подключения 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

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

1 617
не в сети 7 часов

x64 (aka andi)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Рейтинг: 0
    • А если пробовать всё подряд, но в lite-варианте? Наверняка какая-нибудь выстрелит ;-)

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

        Пока со скрипом начинает получаться интернет-бизнес, если его можно так назвать. Но работать еще… впрочем, как и везде. Потом возможно и другими идеями займусь.

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

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

            Спасибо, Andi smile Прорвемся, думаю. Как говорится, не святые горшки лепят. Главное просто оттачивать свои умения, накапливать знания. Как говорится, успех — дело техники smile

            Рейтинг: 0
            • Чтобы 100% продвинуться в Яндекс, нужно купить Яндекс laugh
              Есть, к чему стремиться.

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

                Я не уйду с твоего сайт сегодня ))))

                Купить Яндекс — это конечно круто, да, неплохая цель. Но мне хватит и своего маленького сайта с посещаемостью хотя бы полляма. Тогда можно и на раннюю пенсию smile

                Рейтинг: 0
                • Мой провайдер решил иначе, оключился интернет (только на сайт прова доступ был), так он ещё и гостевую вырубил, чтобы пользователи, стало быть, не доставали расспросами sad
                  Как же пенсия, а развивать проекты кто будет? Не-не, никакой пенсии, только плодотворная полная занятость)

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

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

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

    Рейтинг: 0
    • Не в пенсии счастье, а в её количестве: депутат РФ, стаж 5 лет, сумма — 150к/месяц laugh
      Надежда, желаю осуществление мечт, тем более они такие красивые и познавательные!

      Рейтинг: 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
    • Дмитрий, здравствуйте.
      1. Попробуйте через php-теги так: <?include=test.php?>
      2. Включите вывод ошибок в браузер. Без текста ошибок можно долго угадывать, в чём дело.

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

    Рейтинг: 0

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

Ваш email не будет опубликован.Необходимы поля отмечены *

*

Добавьте изображение (jpg/gif/png)

Авторизация

Регистрация

Пароль не введен

Генерация пароля