Создание плагина с использованием функции WordPress add_action

Внутри плагина "Hello_Dolly"

Я хочу написать плагин, который добавляет в определенное место на странице случайно выбранную фразу и/или изображение.
В программировании, особенно новичку, часто полезно изучить готовый код, написанный опытным разработчиком, да и не очень-то рационально было бы каждый раз "изобретать велосипед". Для начала рассмотрим, как работает очень простой плагин "Hello_Dolly", поставляемый в составе WordPress в качестве примера плагина. (Этот плагин добавляет случайно выбранную фразу на страницу администрирования WordPress.)

Во-первых,

интересно, зачем в начале файла плагина перед

 /*
 Plugin Name: ...
 Plugin URI: ...
 Description: ...
 Author: ...
 Version: ...
 Author URI: ...
 */

добавлено

/**
* @package Hello_Dolly
* @author Matt Mullenweg
* @version 1.5.1
*/

Это теги PHPDoc, генератора документации для php-кода. (Они используются, при генерации документации плагина, и их добавлять в код плагина, конечно же, необязательно.)
PHPDoc-комментарий начинается с /**. Каждая следующая строка должна начинаться с *. Закрывает PHPDoc-комментарий */.

Кстати, по поводу использования тегов встроенной документации в Кодексе WordPress (Inline Documentation) написано:

Для PHPdoc-блоков добавляется информация @since (когда был добавлен) (даже если эта информация пока недоступна), а в качестве информации @package всегда следует указывать "WordPress", если это не внешняя библиотека:

/**
 * ... Описание
 *
 * @package WordPress
 * @since 2.1 или {{@internal Unknown}}}
 *
 * ... Другая информация
 */

Блоки PHPdoc-комментариев не используются внутри блоков функций и методов за исключением @todo (что нужно сделать).

/**
 * @todo ... Описание
 */

или

/** @todo ... Описание*/

В общем, это интересная тема, но для другой статьи...

Во-вторых,

в плагине используются функции

wptexturize(...)
mt_rand(...) - функция PHP
add_action('admin_footer', 'hello_dolly');
add_action('admin_head', 'dolly_css');
get_bloginfo( 'text_direction' );

и в function dolly_css() задается стиль:

echo "
<style type='text/css'>
#dolly {
position: absolute;
top: 4.5em;
margin: 0;
padding: 0;
$x: 215px;
font-size: 11px;
}
</style>
";
}

С точки зрения создания плагина нас интересует функция WordPress add_action(). После изучения кода плагина понятно, что эта функция добавляет "в заданное место", точнее в заданный момент (момент загрузки 'admin_footer' и 'admin_head') результат заданной функции ('hello_dolly' и 'dolly_css').

Когда (куда) еще можно добавлять свой php-код?

Плагин может добавлять php-код с помощью хуков, в данном случае используется хук-действие (action hook).
Вот некоторые другие хуки-действия :

  • init - WordPress загрузился, но заголовки еще не отправлены
  • loop_start - перед обработкой первого поста цикла WordPress
  • loop_end - после обработки последнего поста цикла WordPress
  • get_footer - перед загрузкой файла шаблона footer.php
  • wp_footer - в конце тега <body>. Можно использовать для добавления контента.

Еще хуки

List of all WordPress hooks (Список всех хуков WordPress )
В Кодексе:
Plugin API/Hooks 2.0.x (Хуки-действия)
Plugin API/Filter Reference (Хуки-фильтры)

Добавление случайно выбранной фразы на страницу блога

<?php
/*
Plugin Name: Random Items
Plugin URI: http://mblogm.ru/
Description: Adds a ramdom phrase on every page
Author: MBlogM
Version: 1
Author URI: http://mblogm.ru/
*/
function get_phrase() {
/** Список фраз */
$phrases = "В Интернете кто-то неправ!
Блин! Я целый день работаю. С ума сойти.
Понедельник - день тяжёлый!
Понедельник. Начнем новую жизнь!
Сидим, как в деревне! Ни радио, ни телевизора - один Интернет остался!
Решил собраться с мыслями...ни одна мысль на собрание не пришла...
Может показаться, что я ничего не делаю, но на клеточном уровне я очень занят.
";

// Выделение отдельных строк
$phrases = explode("n", $phrases);

// Выбор случайной фразы
return wptexturize( $phrases[ mt_rand(0, count($phrases) - 1) ] );
}

// Добавление фразы на страницу
function add_phrase() {

$chosen = get_phrase();
echo "<p id='myphrase'>$chosen</p>";
}

// Привязка функции к действию wp_footer
add_action('wp_footer', 'add_phrase');

?>

Если все оставить так, как есть, фраза появляется в самом низу страницы, поэтому добавим позиционирование:

// Задание положения на странице
function phrase_css() {
echo "
<style type='text/css'>
#myphrase {
position: absolute;
top: 7.5em;
margin: 10;
padding: 10;
right: 70px;
font-size: 12px;
font-color: white;
}
</style>
";
}

add_action('wp_head', 'phrase_css');

Теперь случайно выбранная фраза находится справа в шапке страницы.
Конечно, такой плагин мало интересен. Фразы желательно хранить в базе данных или, хотя бы, в отдельном файле, чтобы можно было добавлять новые фразы, не открывая код плагина.
В общем, следующие шаги - это
(1) запись и извлечение фраз из базы данных:
Создание плагина: запись в базу данных
и
(2) написание формы для добавления фраз и изменения опций плагина на панели администрирования.

Опубликовано в рубрике Создание плагина |

Один комментарий на «Создание плагина с использованием функции WordPress add_action»

  1. Vesel4ak говорит:

    Ай спасибо))) Только начал копаться в вордпрессе и вот как раз вопрос такого плана интересовал)

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

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