Создаем простой плагин wordpress: часть 2

Опубликовано: 01.09.2018

видео Создаем простой плагин wordpress: часть 2

Создание плагина WordPress. Часть 1

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



Скачать исходники для статьи можно ниже

Для начала, рекомендую прочитать мою предыдущую статью — Создаем простой плагин wordpress: mnogoblogplugin .

Наверное, вам уже достаточно часто приходилось удалять плагин — Hello Dolly со своего сайта на wordpress — в силу его бесполезности —  а вы не задумывались, почему он присутствует во многих сборках движка wordpress?


Создание сайта на WordPress / Урок #2 - Работа с плагинами и установка темы

Плагин Hello Dolly выводит в панели управления wordpress фрагменты текста песни «Hello, Dolly», в исполнении  Луи Армстронг.

Оказывается, он служит в качестве демонстрации — как простой и хорошо написанный плагин!

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

 

Давайте же разберемся с плагином Hello, Dolly и немного его доработаем!

Скачать плагин можно по следующему url: «wordpress.org/plugins/hello-dolly»

Скачиваем zip архив, распаковываем и открываем главный файл плагина (плагин простой — поэтому состоит только из одного php файла) — hello.php с помощью бесплатного редактора кода Notepad ++ .

 

1. Вначале идет стандартный информационный заголовок:

... Plugin Name: Hello Dolly Plugin URI: ... Description: This is not just a plugin, it symbolizes the hope and ... Author: Matt Mullenweg Version: 1.6 Author URI: ... */

 

2. Далее создается новая функция с названием «hello_dolly_get_lyric» , в которой создается некая переменная с именем «lyric», которой присваиваются фразы из песни:

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 ...

Далее, в данной же функции «hello_dolly_get_lyric», идет разбиение фраз из песни на строки следующим кодом:

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

После, в этой же функции, происходит случайный выбор (рандомный) нужной строки (фразы):

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

После чего функция «hello_dolly_get_lyric» закрывается.

 

3. Следующим шагом создается функция с именем «hello_dolly»

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

В данной функции к переменной «chosen» присваивается значение функции «hello_dolly_get_lyric», а после она (переменная «chosen») просто выводится (echo) в неком абзаце с идентификатором (id) «dolly» (для того чтобы прописать стили оформления для абзаца — его местоположение).

 

4. Далее идет зацепка плагина (хук).

add_action( 'admin_notices', 'hello_dolly' );

То есть вывод фразы из песни привязывается к стандартной функции wordpress — «admin_notice» — запускается сразу после загрузки меню панели управления и выводится только в админке.

То есть функция с именем «hello_dolly» выполняется только, когда происходит действие  «admin_notice».

 

5. Далее идет еще одна функция с именем «dolly_css» , которая прописывает стили оформления для идентификатора (id)  «dolly» (который был прописан в пункт 3, смотри выше)

function dolly_css() { $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> "; }

 

6. И последнее — снова зацепка плагина (хук плагина)

add_action( 'admin_head', 'dolly_css' );

Который запускает функцию «dolly_css» (стили оформления) при срабатывании стандарной функции wordpress — «admin_head» — запускается когда выводится раздел с тегом <head> в панели управления.

Вот и весь плагин Hello Dolly!

А теперь давайте начнем его дорабатывать и изменять!

Для того, чтобы изменить код плагина достаточно войти в панель управления сайтом на wordpress, в левом меню выбрать пункт «Плагины» и его подпункт «Редактор», справа в выпадающем списке выбрать нужный нам плагин.

 

1. Изменим стандартный информационный заголовок.

На следующий:

/* Plugin Name: mnogoblogplugin Plugin URI: http://mnogoblog.ru/sozdaem-prostoj-plagin-wordpress Description: Преобразует в каждом слове заголовка первую букву из прописной в заглавную. Version: 1.0 Author: Mnogoblog Author URI: http://mnogoblog.ru */

 

2. Давайте добавим русские слова , вместо слов английской песни, например возьмем мудрые цитаты:

function hello_dolly_get_lyric() { /** These are the lyrics to Hello Dolly */ $lyrics = "Не нужно много слов, чтобы сказать правду. Мы бедные, потому что мы честные. В жизни нет ничего сложного. Это мы сложны. Жизнь — простая штука, и в ней чем проще, тем правильнее. Умейте прощать, ведь это свойство сильных. Слабые никогда не прощают.";

 

3. Далее изменим зацепки плагина (хук)

Давайте сделаем вывод мудрых фраз на страницах сайта, а не в админке, для этого привяжем их вывод к стандартной функции wordpress — wp_head.

add_action( 'wp_head', 'hello_dolly' );

,  а также зацепку стилей:

add_action( 'wp_head', 'dolly_css' );

 

4. Давайте изменим сами стили оформления.

Сделаем вывод мудрых фраз по середине:

<style type='text/css'> #dolly { padding-top: 15px; text-align: center; font-size: 14px; } </style>

 

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

Для этого в конце кода плагина добавим следующую строчку:

add_shortcode('mudrosti', 'hello_dolly');

Теперь, если мы вставим, например внутри записи, следующий шорткод [mudrosti] , то наши «мудрые мысли» будут появляться и в записях — на месте данного шоткода.

Незабываем, что шорткод нужно вставлять через «Текстовой редактор» (Text), а не «Визуальный редактор» (Visual).

В результате код плагина у нас будет следующим:

<?php /** * @package Hello_Dolly * @version 1.6 */ /* Plugin Name: mnogoblogplugin Plugin URI: http://mnogoblog.ru/sozdaem-prostoj-plagin-wordpress Description: Преобразует в каждом слове заголовка первую букву из прописной в заглавную. Version: 1.0 Author: Mnogoblog Author URI: http://mnogoblog.ru */ function hello_dolly_get_lyric() { /** These are the lyrics to Hello Dolly */ $lyrics = "Не нужно много слов, чтобы сказать правду. Мы бедные, потому что мы честные. В жизни нет ничего сложного. Это мы сложны. Жизнь — простая штука, и в ней чем проще, тем правильнее. Умейте прощать, ведь это свойство сильных. Слабые никогда не прощают."; // 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( 'wp_head', '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 { padding-top: 15px; text-align: center; font-size: 14px; } </style> "; } add_action( 'wp_head', 'dolly_css' ); add_shortcode('mudrosti', 'hello_dolly'); ?>

У нас должно получиться следующее:

 

6. Добавим в панели управления пункт для настройки плагина.

Для начала создадим новый подпункт в пункте «Настройки» («Параметры») в панели управления wordpress, для этого вставим в код плагина следующие строчки:

add_action( 'admin_menu', 'my_plugin_menu' ); function my_plugin_menu() { add_options_page( 'Опции плагина мудрые мысли', 'Мудрые Мысли', 'manage_options', 'my-unique-identifier', 'my_plugin_options' ); } function my_plugin_options() { if ( !current_user_can( 'manage_options' ) ) { wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); } echo '<div class="wrap">'; echo '<p>Здравствуйте, вы находитесь в настройках плагина "Мудрые мысли".</p>'; echo '</div>';

Данным кодом мы создали подпункт с названием «Мудрые Мысли».

Обращаю внимание, что функция не закрыта — в конце кода нет знака «}» — это сделано для того, чтобы вставить еще код в данную функцию.

Далее давайте продолжим редактировать страничку настройки плагина, а именно: добавим в код плагина поле, для ввода одной из мудрых мыслей — для этого продолжим дополнять код вышеуказанной функции:

// variables for the field and option names $opt_name = 'mt_favorite_misli'; $hidden_field_name = 'mt_submit_hidden'; $data_field_name = 'mt_favorite_misli'; // Read in existing option value from database $opt_val = get_option( $opt_name ); // See if the user has posted us some information // If they did, this hidden field will be set to 'Y' if( $_POST[ $hidden_field_name ] == 'Y' ) { // Read their posted value $opt_val = $_POST[ $data_field_name ]; // Save the posted value in the database update_option( $opt_name, $opt_val ); // Read their posted value $opt_val2 = $_POST[ $data_field_name ]; // Save the posted value in the database update_option( $opt_name2, $opt_val2 ); // Put an options updated message on the screen ?> <div class="updated"><p><strong><?php _e('Мысль сохранена.', 'mt_trans_domain' ); ?></strong></p></div> <?php } // Now display the options editing screen echo '<div class="wrap">'; // header echo "<h2>" . __( 'Настройки плагина', 'mt_trans_domain' ) . "</h2>"; // options form ?> <form name="form1" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>"> <input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y"> <p><?php _e("Мудрая мысль:", 'mt_trans_domain' ); ?> <input type="text" name="<?php echo $data_field_name; ?>" value="<?php echo $opt_val; ?>" size="50"> </p><hr /> <p class="submit"> <input type="submit" name="Submit" value="<?php _e('Добавить', 'mt_trans_domain' ) ?>" /> </p> </form> </div> <?php }

Здесь мы создали форму для ввода мудрой мысли, записали в переменную эту самую мудрую мысль и сохранили ее в базу данных.

После чего страничка настройки нашего плагина будет выглядеть следующим образом:

Далее нам нужно еще отредактировать функцию с выводом мудрых мыслей на сайте:

function hello_dolly_get_lyric() { /** These are the lyrics to Hello Dolly */ $opt_name = 'mt_favorite_misli'; $opt_val = get_option( $opt_name ); $lyrics = "Не нужно много слов, чтобы сказать правду. $opt_val"; ... }

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

 

В итоге полный код плагина должен быть следующий:

<?php /* Plugin Name: mnogoblogplugin Plugin URI: http://mnogoblog.ru/sozdaem-prostoj-plagin-wordpress Description: Преобразует в каждом слове заголовка первую букву из прописной в заглавную. Version: 1.0 Author: Mnogoblog Author URI: http://mnogoblog.ru */ function hello_dolly_get_lyric() { /** These are the lyrics to Hello Dolly */ $opt_name = 'mt_favorite_misli'; $opt_val = get_option( $opt_name ); $lyrics = "Не нужно много слов, чтобы сказать правду. $opt_val"; // 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( 'wp_head', '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 { padding-$x: 15px; padding-top: 5px; margin: 0; font-size: 11px; } </style> "; } add_action( 'wp_head', 'dolly_css' ); add_shortcode('privet', 'hello_dolly'); add_action( 'admin_menu', 'my_plugin_menu' ); /** Step 1. */ function my_plugin_menu() { add_options_page( 'Опции плагина мудрые мысли', 'Настройка плагина ММысли', 'manage_options', 'my-unique-identifier', 'my_plugin_options' ); } /** Step 3. */ function my_plugin_options() { if ( !current_user_can( 'manage_options' ) ) { wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); } echo '<div class="wrap">'; echo '<p>Здравствуйте, вы находитесь в настройках плагина "Мудрые мысли".</p>'; echo '</div>'; // variables for the field and option names $opt_name = 'mt_favorite_misli'; $hidden_field_name = 'mt_submit_hidden'; $data_field_name = 'mt_favorite_misli'; // Read in existing option value from database $opt_val = get_option( $opt_name ); // See if the user has posted us some information // If they did, this hidden field will be set to 'Y' if( $_POST[ $hidden_field_name ] == 'Y' ) { // Read their posted value $opt_val = $_POST[ $data_field_name ]; // Save the posted value in the database update_option( $opt_name, $opt_val ); // Read their posted value $opt_val2 = $_POST[ $data_field_name ]; // Save the posted value in the database update_option( $opt_name2, $opt_val2 ); // Put an options updated message on the screen ?> <div class="updated"><p><strong><?php _e('Мысль сохранена.', 'mt_trans_domain' ); ?></strong></p></div> <?php } // Now display the options editing screen echo '<div class="wrap">'; // header echo "<h2>" . __( 'Настройки плагина', 'mt_trans_domain' ) . "</h2>"; // options form ?> <form name="form1" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>"> <input type="hidden" name="<?php echo $hidden_field_name; ?>" value="Y"> <p><?php _e("Мудрая мысль:", 'mt_trans_domain' ); ?> <input type="text" name="<?php echo $data_field_name; ?>" value="<?php echo $opt_val; ?>" size="50"> </p><hr /> <p class="submit"> <input type="submit" name="Submit" value="<?php _e('Добавить', 'mt_trans_domain' ) ?>" /> </p> </form> </div> <?php } ?>

Скачать плагин можно по следующей ссылке — Mnogoblogplugin с настройкой из панели управления wordpress.

 

PS: Полезные сайты по данной теме:

1. Все существующие на данный момент зацепки плагинов (хуки плагинов wordpress) с их описанием можно найти здесь:

«adambrown.info/p/wp_hooks/hook»

 

rss