WordPress-сообщество: Как получить помощь для своего проекта и содействовать развитию WordPress.
Слайды к докладу на WordPress Meetup в Санкт-Петербурге, сентрябрь 2014
WordPress-сообщество: Как получить помощь для своего проекта и содействовать развитию WordPress.
Слайды к докладу на WordPress Meetup в Санкт-Петербурге, сентрябрь 2014
1. Оптимальная архитектура
плагина WordPress
Custom Post Types
• Идея плагина
• Архитектура кода
• Структура БД
Идея +
архитектура
• Дизайно-верстка
• Front-End
• Back-End
Разработка
• Тестирование
• Отладка Тестирование
06.09.2014 Saint-Petersburg WordPress Meetup #2
Igor Sazonov@tigusigalpa
2. План доклада
• Правила обычного плагина WordPress
• Архитектура WooCommerce
• Архитектура Easy Digital Downloads
• Архитектура Yoast
• Вывод и построение своей архитектуры кода
• Что такое Singleton?
• Суть предлагаемой архитектуры
• Ссылка на скачивание базового плагина…. Идеи..
3. Правила обычного плагина WordPress
/wp-content/plugins/my-plugin – папка плагина
/wp-content/plugins/my-plugin/somefile.php – файл с метаданными плагина – главный файл плагина –
входная точка
WordPress сканирует все папки внутри wp-content/plugins и ищет там файл с метаданными (wp-admin/
includes/plugin.php:get_plugins()#288 строка с помощью get_plugin_data())
/**
* Plugin Name: Some Plugin Name
* Plugin URI: http://www.somewpplugin.com
* Description: Great Plugin!
* Author: Ivan Ivanov
* Author URI: http://www.ivanivanov.com
* Version: 1.0
*/
Но это самый примитивный способ
7. Вывод и построение своей файловой
архитектуры
Выводы:
• все файлы front-end (js, css, images, fonts) в отдельную папку
assets
• Файлы (если их более 1) подключаемых скриптов – в подпапки
(images/colorbox)
• Логику в папку lib. Разделяем логику (php) на отдельные файлы
(например, lib/setup.php) или блоки (lib/widgets) с файлами
8. Вывод и построение своей архитектуры
Оптимальная структура файлов
(наверное):
- assets
- css
- fonts
- images
- some-lib-files-if-needed
- js
- languages
- lib
- some-folders
- setup.php – инициализация всех
action’ов
- plugin-name.php – главный входной
файл с метаданными
- uninstall.php
WordPress
plugin-name.php
/lib/setup.php
(class Plugin_Setup+includes+defines)
php-classes
/lib
9. Что такое Singleton
Singleton – порождающий шаблон проектирования, гарантирующий что в однопоточном приложении
будет единственный экземпляр класса с глобальной точкой доступа.
class MyClass {
private static $_instance;
public function __construct() {
/*do something*/
}
public static function getInstance() {
if ( ! isset( self::$_instance ) && ! ( self::$_instance instanceof MyClass ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
}
10. Суть (для понимания кода плагина)
1. Входной файл (plugin-name.php) передает управление в lib/setup.php в
конструктор класса MyPlugin_Setup. Этот класс будет содержать в себе
настройки плагина (версия итп) и будет родителем для всех классов из
папки lib.
2. В конструкторе класса MyPlugin_Setup происходит подключение файлов
из папки lib и дефайн (определение) необходимых значений (путь к
плагину итп). Каждый файл в папке lib это соответствующий класс,
который наследуется от класса MyPlugin_Setup, а также каждый класс
содержит в себе Singleton-метод getInstance() и метод init();
3. Конструктор класса MyPlugin_Setup в конструкторе перебирает все
классы из подключенных файлов и через Singleton каждого класса
вызывает метод init();
Таким образом мы разделяем логику плагина на соответствующие
тематические блоки/классы. Это удобно для совместной работы над
плагином и просто удобно.
11. Ссылка на скачивание базового плагина
https://www.dropbox.com/s/iosj1r4suyrt9kv/optimal-big-plugin.
zip?dl=0