Вставка PHP кода в WordPress записи и виджеты

Давно подумывал над тем, чтобы вставлять исполняемый код в посты, страницы и виджеты WordPress. Поскольку сам движок написан на PHP — логично вставлять именно его, хотя можно попробовать встроить например Perl, воспользовавшись CPAN-модулем PHP::Interpreter или PECL-модулем PHP под названием perl. Но PHP вставить естественно проще :).

Итак, как же вставить в WordPress PHP? Как и в большинстве других случаев, когда надо модифицировать движок — просто воспользоваться подходящим плагином.
Плагинов находится множество, я попробовал 4 штуки и остановился на Exec-PHP.
Он умеет всё, что мне было надо:

  • Вставлять исполняемый PHP код в посты (и соответственно — в страницы)
  • Втавлять код в виджеты

Прейдём к настройке плаина.

Настройка может оказаться не совсем очевидной — с административной страницы плагина всё сделать не получится. Чтобы исполнение PHP-кода в WordPress заработало, нужно убедиться в следующем:

  • Что пункт "WordPress должен исправлять некорректный XHTML код автоматически" в меню Настройки->Написание неактивен
  • Что выключен «графический» редактор в меню Пользователи->Ваш профиль (стоит галка на "Отключить «визуальное редактирование» при написании")
  • Что нужной группе пользователей (в WordPress это называется «ролью») разрешено исполнение PHP-кода (для роли «Administrator» должно быть разрешено по умолчанию)

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

Считаю не лишним напомнить про опасность исполнения неочищенного кода. Не знаю, поддерживает ли PHP какую-то аналогичую perl -T опцию, поэтому нужно просто помнить про очистку пользовательского ввода (использование недопустимых символов, размеры аргументов опций и т.п.), экранирование всех передаваемых в shell команд и их аргументов и так далее.

В остальном польза от встроенного в WordPress PHP кода очевидна — это полная свобода действий с содержимым блога, помноженная на простоту выполнения этих действий!

PHP — Personal Home Page Tools

Общие сведения о PHP

PHP скрипты, сео, курсы, примеры, плагин, wordpress
Язык PHP (Personal Home Page Tools, или, как он теперь называется, PHP: Hypertext Preprocessor) является представителем семейства скриптовых языков программирования. Название у языка говорящее, основная область его применения — разработка различных интернет-приложений (интернет-скриптов) и именно в этой области PHP наиболее распространён.

PHP — краткая история создания

Корнями PHP уходит к Perl, затем интерпретатор языка претерпел изменения в сторону большей веб-ориентированности и был переписан на С. Соответственно, PHP включает в себя черты обоих «родителей» — синтаксис похож на синтаксис С, ассоциативные массивы (хэши) и цикл foreach заимствованы у Perl.

PHP — основные особенности и функции

Основная особенность PHP — штатная возможность встраивать исполняемый код в html-код веб-страниц, что делает его очень удобным для создания динамически изменяющихся страниц, при этом шаблоны страниц одновременно являются и статическими, и динамическими элементами.

Функции PHP для веб-разработки

Помимо того, PHP обладает богатым набором встроенных инструментов для веб-программирования, среди которых стоит отметить основные:

  • Встроенные массивы данных, в которые автоматически загружаются переменные окружения сервера, а также параметры, извлекаемые из GET и POST-запросов;
  • В язык встроена поддержка основных СУБД (семейство SQL и другие распространённые СУБД);
  • Возможность отправлять HTTP-заголовки в автоматическом режиме;
  • Поддержка работы с сессиями, cookies, HTTP-авторизацией
  • Работа с файлами (в виде сокетов, удалённых и локальных файлов);
  • Обработка форм, включая XForms, обработка загружаемых на сервер файлов;

PHP и графические приложения

Кроме своего прямого предназначения — создания веб-страниц, PHP также может использоваться для разработки кросс-платформенных графических приложений, среды для разработки которых так же, как и сам язык, распространяются на условиях open-source.

Пример кода на PHP — создание и обработка веб-формы

Ниже приведён пример кода на PHP, выполняющий обработку html-формы. В примере пользователь вводит имя и выбирает пол, после чего нажимает кнопку «Ответить». PHP-скрипт получает данные из формы, производит над ними заданные действия и распечатывает результат в браузер.

Проверка имени пользователя не осуществляется, поскольку данные из формы никуда дальше не иду, но если вы планируете передавать их в рабочий скрипт или в системную утилиту — не лишним будет сделать проверку регулярным выражением (навроде такого: /^ [^/\.$?&*] $/ix) для отсечения ввода символов, которые в имени встречаться не должны. А при передаче системным утилитам пользовательского ввода — дополнительно использовать escapeshellarg.

Пример веб-формы

Как тебя зовут: ?
Ты или ?


Код для обработки формы на PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<form name="PHP_example_web_form" action="" method="post">
<table rows="2" cellspacing="8" cellpadding="4">
<tr><td>Как тебя зовут: </td><td><input type="text" name="u_name" value=""  size="10" maxlength="20" />?</td></tr>
<tr><td>Ты <label><input type="radio" name="sex" value="m" checked="checked">мальчик</label></td>
<td> или <label><input type="radio" name="sex" value="w">девочка</label>?</td></tr>
</table>
<input type="submit" value="Ответить" />
</form>

<?php
// если в скрипт было что-то передано - начать обработку
if(count($_POST)>0){
   // если переданное имя пользователя не пустое - продолжаем
   if(count_chars($_POST['u_name'])>0){
        unset($prefixes_m); // на всякий случай очистить массив
        unset($prefixes_w); // то же

        // если пол указан как мужской - выбрать прилагательное в мужском роде
        if($_POST['sex'] === 'm'){
            // массив с прилагательными
            $prefixes_m = array('мужественный', 'великий', 'сообразительный', 'учёный', 'хитрый');
            // выборка случайного элемента из массива
            $prefix = $prefixes_m[rand(0,count($prefixes_m) - 1)];
        }
        // иначе если пол - женский - выбрать прилагательное женского рода
        elseif($_POST['sex'] === 'w'){        
            $prefixes_w = array('прекрасная', 'нежная', 'восхитительная', 'обаятельная', 'неповторимая');
            $prefix = $prefixes_w[rand(0,count($prefixes_w) - 1)];
        }

        // распечатать результат
        print '<br /><hr><p>';
        print '<div title="Приветствие" class="php-test" contenteditable="true">';
        print 'Привет, '.$prefix .' '. $_POST['u_name'].'!';
        print '</div></p>';
   } // конец обработки имены
} // конец обработки формы
?>

audit — бесплатный скрипт для мониторинга позиций и показателей сайта

Бесплатный скрипт для отслеживания показателей, рейтингов и статистики сайтов скачать

Пример работы скрипта audit

Когда-то ко мне (через третьи руки) попал простой, но достаточно удобный бесплатный скрипт, позволяющий следить за показателями и рейтингами указанных сайтов. Он удобен именно для быстрой проверки показателей сайтов (как сделать сайт самому?), которые затем можно детализировать при помощи различных веб-сервисов определения показателей. Автор скрипта мне неизвестен, в самом скрипте я упоминаний авторства не нашел.

Возможности скрипта для отслеживания показателей сайтов

Называется он audit и позволяет отслеживать такие показатели сайта, как:

  • Яндекс ТиЦ
  • Google PR
  • количество страниц в индексе яндекса, google и aport
  • ip-адрес указанного домена
  • срок окончания регистрации домена

(далее…)

Библиотека для WordPress. Как сделать своё файлохранилище

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

(далее…)

Напишем плагин для WordPress. Часть 1

Чему посвящен цикл статей "Напишем плагин для WordPress?"

wordpress_plugins

Как написать свой плагин (plug-in) для WordPress? Зачем делать свой плагин? Как опубликовать плагин на wordpress.org и как его обновлять?

Если вы, как и я, задавали себе хотя бы один из этих вопросов — вам будет полезен мой цикл публикаций о том, как написать свой плагин для wordpress. Я планирую дать ответы на эти вопросы, а также рассказать о том, что потребуется для написания плагина, какими знаниями нужно обладать и где найти необходимую информацию. Все публикации о написании wordpress плагина будут снабжены примерами и комментариями из моего личного опыта. Милости прошу 🙂

Оглавление

Оглавление будет пополняться по мере выхода новых частей руководства по написанию плагина для wordpress.

  1. Введение, общая информация (Напишем плагин для WordPress. Часть1.)
  2. Общая теория (Напишем плагин для WordPress. Часть 2.)
  3. Подготовка к созданию страницы настроек (Напишем плагин для WordPress. Часть 3.)
  4. Создание страницы настроек плагина (Напишем плагин для WordPress. Часть 4.)
  5. Функциональная составляющая (Напишем плагин для WordPress. Часть 5.)
  6. Интернационализация и русификация (Напишем плагин для WordPress. Часть 6.)
  7. Добавление в репозиторий WordPress.org (Напишем плагин для WordPress. Часть 7.)
  8. Файл с исходным кодом плагина для WordPress

(далее…)

Плагин добавления подписи под сообщениями WordPress — WordPress RSS Signaturer

WordpressSignaturer

Я решил развить тему с показом подписи под публикациями WordPress и оформить функцию вывода случайных фраз под сообщениями в виде небольшого плагина для WordPress.

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

(далее…)