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

Вот его код:

<?php
/**
 * @package Hello_Dolly
 * @version 1.6
 */
/*
Plugin Name: Hello Dolly
Plugin URI: http://wordpress.org/extend/plugins/hello-dolly/
Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
Author: Matt Mullenweg
Version: 1.6
Author URI: http://ma.tt/
*/

function hello_dolly_get_lyric() {
	/** These are the lyrics to Hello Dolly */
	$lyrics = "Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
We feel the room swayin'
While the band's playin'
One of your old favourite songs from way back when
So, take her wrap, fellas
Find her an empty lap, fellas
Dolly'll never go away again
Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
We feel the room swayin'
While the band's playin'
One of your old favourite songs from way back when
Golly, gee, fellas
Find her a vacant knee, fellas
Dolly'll never go away
Dolly'll never go away
Dolly'll never go away again";

	// Here we split it into lines
	$lyrics = explode( "n", $lyrics );

	// And then randomly choose a line
	return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] );
}

// This just echoes the chosen line, we'll position it later
function hello_dolly() {
	$chosen = hello_dolly_get_lyric();
	echo "<p id='dolly'>$chosen</p>";
}

// Now we set that function up to execute when the admin_notices action is called
add_action( 'admin_notices', 'hello_dolly' );

// We need some CSS to position the paragraph
function dolly_css() {
	// This makes sure that the positioning is also good for right-to-left languages
	$x = is_rtl() ? 'left' : 'right';

	echo "
	<style type='text/css'>
	#dolly {
		float: $x;
		padding-$x: 15px;
		padding-top: 5px;		
		margin: 0;
		font-size: 11px;
	}
	</style>
	";
}

add_action( 'admin_head', 'dolly_css' );

?>

Первое, что вам необходимо знать в создании плагинов — как WordPress его находит. Он должен обязательно находиться в директории wp-content/plugins/ или в собственной папке в ней и иметь расширение .php (движок рекурсивно просматривает все папки и находящиеся в них файлы, соответствующие этому расширению и имеющие внутри заголовок). Заголовок ищется в комментариях. В рассматриваемом нами плагине много комментариев об авторстве, однако почти все они необязательны — минимальный заголовок может быть всего лишь таким:

<?php
/*
Plugin Name: Hello Dolly
*/
?>

Это минимальная информация даст возможность WordPress распознать, что перед ним действительно какой-то плагин и определить его имя.

Далее читать плагин лучше снизу.

add_action( 'admin_head', 'dolly_css' );

Этой строчкой плагин цепляет функцию dolly_css() на хук admin_head, существующий в WordPress по-умолчанию. Эта функция добавляет стиль CSS для красивого отображения того, что затем будет выводиться.

add_action( 'admin_notices', 'hello_dolly' );

Эта строчка так же вешает функцию hello_dolly() на хук admin_notices. Функция hello_dolly() определена выше.

function hello_dolly() {
	$chosen = hello_dolly_get_lyric();
	echo "<p id='dolly'>$chosen</p>";
}

Она осуществляет вызов функции hello_dolly_get_lyric(), кладет её результат в переменную $chosen и выводит его, обернутого тегом <p> с id dolly, для которого уже зарегистрированы стили.

$lyrics = "Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
We feel the room swayin'
While the band's playin'
One of your old favourite songs from way back when
So, take her wrap, fellas
Find her an empty lap, fellas
Dolly'll never go away again
Hello, Dolly
Well, hello, Dolly
It's so nice to have you back where you belong
You're lookin' swell, Dolly
I can tell, Dolly
You're still glowin', you're still crowin'
You're still goin' strong
We feel the room swayin'
While the band's playin'
One of your old favourite songs from way back when
Golly, gee, fellas
Find her a vacant knee, fellas
Dolly'll never go away
Dolly'll never go away
Dolly'll never go away again";

Функция hello_dolly_get_lyric() содержит текст песни Hello Dolly, разделенный переносом строки.

$lyrics = explode( "n", $lyrics );

Затем функцией explode он превращается в массив, в элементах которого содержатся строки.

return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] );

После чего возвращается отформатированный (wptexturize) случайный (mt_rand) элемент этого массива. Всё просто, не правда ли?