В этой статье будет рассказано как Вы можете спланировать структуру плагина для wordpress. Рассматривать будем данную процедуру на примере плагина Mosaic Generator. Данный плагин собирает картинки с постов на Вашем сайте и склеивает их в одну мозаику.
Планируем структуру на примере плагина Mosaic Generator
Перед прочтение данной статьи настоятельно рекомендую ознакомится с постом: как написать плагин для wordpress за 10 минут и со статьей про функцию wordpress add-options-page.
Данная статья не претендует на идеальное описание по созданию плагина, поэтому предназначена больше для новичков, чем профессионалов. Написание любого плагина следует начинать с планирования тех функций и действий которые будет выполнять приложение. Практически все действия будет выполнять отдельный класс. Тем кто не представляет что такое классы в php следует ознакомится с ними. Коротко классы можно представить как некий объект, который может получать параметры, выполнять различные функции и процедуры. Представьте себе чайник. Чайник выполняет функцию нагрева воды, а при ее закипании выключается. Поэтому чайник отдаленно напоминает класс :)
Классы в php принято хранить в отдельном файле. Название файла не принципиально, но лучше называть его на подобии mosaic-generator.class.php, таким образом у нас появится файл класса. Дополнительно создадим основной файл плагина, который будет управляющим и назовем его по имени плагина: mosaic-generator.php
Оба файла поместим в отдельную папку на компьютере mosaic-generator, этого будет достаточно чтобы написать действующий плагин.
Готовим макет основного класса для плагина
Макет будет представлять собой каркас класса с функциями и методами. Однако самого кода функции пока еще нет. Так же я добавил в класс две переменные: $options для хранения настроек плагина. В эту переменную должны считываться все параметры при загрузке страницы и инициализации кода. В переменную класса $image_array будем считывать из базы сохраненный в настройках список URL адресов уменьшенных картинок, которые будут слепляться в мозаике.
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 39 40 41 42 43 |
<?php class mosaic_generator_class { var $options; // переменная для хранения настроек плагина var $image_array; //переменная массив для хранения списка адресов картинок //Функция возвращает код для вставки в страницу и одновременно генерирует новую картинку-мозайку function main_generate($options, $images_array) { } //функция для считывания настроек в переменную $option function get_all_options() { } //Функция возвращает код страницы настроек административной части function view_options_page() { } //функция для обновления настроек function update_options() { } //функция деактивации плагина function deactivate() { } //функция активации плагина function activate() { } } ?> |
Итак у нас есть каркас основного класса для плагина и теперь нам надо определить какие функции будут вызываться в какой момент. Я советую Вам начать с функции активации и деактивации, то есть с функции класса activate() и deactivate() так чтобы плагин корректно устанавливался и удалялся, причем очищал после деактивации настройки в базе.
Теперь попробуем использовать данные функции в основном файле плагина, то есть в файле mosaic-generator.php, но сначала необходимо прописать описание, о котором говорилось в первой статье.
Итак описание добавлено и можно подключать класс из основного управляющего файла, для этого мы должны включить код класса mosaic-generator.class.php с помощью функции require_once. Выглядеть это будет следующим образом:
1 |
if (!class_exists('mosaic_generator_class')) require_once( plugin_dir_path( __FILE__ ).'mosaic_generator.class.php'); |
Если быть дословным то тут написано, что если класс mosaic_generator_class не существует то подключить файл mosaic_generator.class.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 |
p /* Plugin Name: Mosaic Generator Plugin URI: http://omelchuck.ru/mosaic-generator/ Description: Creates mosaic from all images of the site and places it in any part of website. Version: 1.0.1 Author: ODiN Author URI: http://omelchuck.ru */ /* Copyright 2012 ODiN (email : odn {at} live.ru) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ global $mosaic_generator; if (!class_exists('mosaic_generator_class')) require_once( plugin_dir_path( __FILE__ ).'mosaic_generator.class.php'); ?> |
Как видите кроме описания пи подключения класса тут нет, разве что я добавил глобальную переменную mosaic_generator в которой будет храниться объект класса. Однако перед тем как использовать функции класса необходимо создать его экземпляр, поэтому мы прописываем следующий код:
1 2 3 |
<? $mosaic_generator = new mosaic_generator_class(); ?> |
Теперь у нас есть созданный класс и мы можем обращаться ко всем его публичным функциям(то есть тем которые можно вызывать из вне класса). Дальше вешаем на события активации и деактивации собственные функции и прописываем их код. Причем теперь мы можем вызвать из них функции activate и deactivate класса mosaic_generator_class. Посмотрите как это сделать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<? register_activation_hook(__FILE__, 'mosaic_generator_activate'); register_deactivation_hook(__FILE__, 'mosaic_generator_deactivate'); function mosaic_generator_activate() { global $mosaic_generator; $mosaic_generator->activate(); } function mosaic_generator_deactivate() { global $mosaic_generator; $mosaic_generator->deactivate(); } ?> |
На сегодня это все, исходники всего что сделано можно скачать по ссылке.
А где продолжение?