SlideShare a Scribd company logo
1 of 30
Download to read offline
Как не сойти с ума при разработке
крупных проектов на WordPress
Евгений Котельницкий
WordCamp Russia 2014
Евгений Котельницкий
+YevhenKotelnytskyi
@yeeevhen
http://4coder.info/me
План
1. Наши цели
2. Что может нас ожидать?
3. Полезные практики
4. Интеграция с плагинами
5. Безопасность
6. Модульная архитектура
7. Пример модульной темы
Наши цели
Чего мы хотим от проекта?
● Простота поддержки
○ Низкий порог вхождения
○ Низкая себестоимость изменений
○ Минимум ошибок
● Отсутствие проблем с быстродействием
Что может нас ожидать?
Сложность поддержки
● Как найти / исправить ошибку?
● Где реализован этот блок?
● Кто так пишет? (стиль написания кода)
● Кто так пишет? (архитектура)
● Я не трогал этот модуль, откуда ошибка?
● Как я перенесу “часть изменений”?
Что может нас ожидать?
Быстродействие  Back-end
● Запросы в PHP циклах
● Повторяющиеся операции
● Структура БД
● Неоптимизированные запросы
Что может нас ожидать?
Быстродействие  Front-end
● Большое количество медиа-файлов
● Растущий с прогрессией CSS
● Проблемы с JavaScript возникают редко
Пишем на одном языке
… с другими WordPress-разработчиками
Стандарты кодирования
● PHP Coding Standards
● HTML Coding Standards
● CSS Coding Standards
● JavaScript Coding Standards
Пишем на одном языке
… с другими WordPress-разработчиками
Используем возможности WordPress
● “wp_remote_…” вместо cURL
● “wp_mail” вместо PHPMailer
● “$wpdb” вместо “mysqli_query()”
Обработка исключений
Оповещение об ошибках
Организация хуков
Проблемы
● Поиск реализации
● Очерёдность выполнения
● Конфликты хуков
Решение
“Декларативность” -
Добавим немного правил
HTML-верстка
● Отделяем HTML-шаблоны от PHP
● Не пишем в них JavaScript
● У каждого модуля свои шаблоны
● Используем методологии вёрстки
Статические компоненты
У каждого модуля свои
Интеграция с плагинами
Пример 1: GravityForms
Интеграция с плагинами
Пример 2: WooCommerce
Безопасность
Построение архитектуры
О качестве архитектуры
Архитектура ПО - многоуровневая система абстракций.
Качество абстракции
● Зацепление
● Связность
● Полнота
● Достаточность
● Примитивность
Качество классов и объектов, Гради Буч
Построение архитектуры
Что дают нам Модули?
● “Упрощение”
● Повторное использование
● Бесконфликтная работа команды
● Помодульные релизы
Пример модульной темы
Theme
Theme / core
Theme / core / libs
Theme / core / modules
Theme / core / modules / portfolio
Theme / core / modules / portfolio / static
Theme / core / modules / portfolio / widgets
Вопросы?
Спасибо!

More Related Content

What's hot

Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentialsPavlo Iuriichuk
 
Краткая презентация курса HTML5 и CSS3: От новичка до профи
Краткая презентация курса HTML5 и CSS3: От новичка до профиКраткая презентация курса HTML5 и CSS3: От новичка до профи
Краткая презентация курса HTML5 и CSS3: От новичка до профиProfPoint
 
Jody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on RailsJody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on Railszykin-ilya
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыUA Mobile
 
МАПО 2013 Лекция 04 Фабрика Blockly
МАПО 2013 Лекция 04 Фабрика BlocklyМАПО 2013 Лекция 04 Фабрика Blockly
МАПО 2013 Лекция 04 Фабрика BlocklyОлег Гудаев
 
МАПО 2013 Лекция 03 Программирование Blockly
МАПО 2013 Лекция 03 Программирование BlocklyМАПО 2013 Лекция 03 Программирование Blockly
МАПО 2013 Лекция 03 Программирование BlocklyОлег Гудаев
 
Уберинструментарий для тех, кому надоел MSBuild
Уберинструментарий для тех, кому надоел MSBuildУберинструментарий для тех, кому надоел MSBuild
Уберинструментарий для тех, кому надоел MSBuildSerhiy Kalinets
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Ontico
 
Трудности повторного использования
Трудности повторного использованияТрудности повторного использования
Трудности повторного использованияDev2Dev
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptStas Vyschepan
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4rit2011
 
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав МоргунVladislav Morgun
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsKirill Danilov
 
Будущее шаблонизаторов
Будущее шаблонизаторовБудущее шаблонизаторов
Будущее шаблонизаторовAlexey Ivanov
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Mail.ru Group
 
Эволюция управления зависимостями в коде
Эволюция управления зависимостями в кодеЭволюция управления зависимостями в коде
Эволюция управления зависимостями в кодеAlexander Byndyu
 

What's hot (20)

Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentials
 
Краткая презентация курса HTML5 и CSS3: От новичка до профи
Краткая презентация курса HTML5 и CSS3: От новичка до профиКраткая презентация курса HTML5 и CSS3: От новичка до профи
Краткая презентация курса HTML5 и CSS3: От новичка до профи
 
Jody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on RailsJody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on Rails
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузеры
 
МАПО 2013 Лекция 04 Фабрика Blockly
МАПО 2013 Лекция 04 Фабрика BlocklyМАПО 2013 Лекция 04 Фабрика Blockly
МАПО 2013 Лекция 04 Фабрика Blockly
 
МАПО 2013 Лекция 03 Программирование Blockly
МАПО 2013 Лекция 03 Программирование BlocklyМАПО 2013 Лекция 03 Программирование Blockly
МАПО 2013 Лекция 03 Программирование Blockly
 
Уберинструментарий для тех, кому надоел MSBuild
Уберинструментарий для тех, кому надоел MSBuildУберинструментарий для тех, кому надоел MSBuild
Уберинструментарий для тех, кому надоел MSBuild
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Fullstack javascript. Isomorphic apps
Fullstack javascript. Isomorphic appsFullstack javascript. Isomorphic apps
Fullstack javascript. Isomorphic apps
 
MVC in JavaScript
MVC in JavaScriptMVC in JavaScript
MVC in JavaScript
 
Трудности повторного использования
Трудности повторного использованияТрудности повторного использования
Трудности повторного использования
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4
 
Frontend
FrontendFrontend
Frontend
 
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
19.10 - WebPromo SEO Day - "SEO-автоматизатор: кто он?" - Владислав Моргун
 
Kranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burmaKranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burma
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.js
 
Будущее шаблонизаторов
Будущее шаблонизаторовБудущее шаблонизаторов
Будущее шаблонизаторов
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
 
Эволюция управления зависимостями в коде
Эволюция управления зависимостями в кодеЭволюция управления зависимостями в коде
Эволюция управления зависимостями в коде
 

Viewers also liked

Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1dima_kuzovlev
 
WordCamp Moscow 2016: Как получить качество
WordCamp Moscow 2016: Как получить качествоWordCamp Moscow 2016: Как получить качество
WordCamp Moscow 2016: Как получить качествоYevhen Kotelnytskyi
 
Как устроен WordPress - WP Kharkiv Meetup #1
Как устроен WordPress - WP Kharkiv Meetup #1Как устроен WordPress - WP Kharkiv Meetup #1
Как устроен WordPress - WP Kharkiv Meetup #1Yevhen Kotelnytskyi
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Yevhen Kotelnytskyi
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Yevhen Kotelnytskyi
 
Защищаем WordPress-сайт от хакерских атак
Защищаем WordPress-сайт от хакерских атакЗащищаем WordPress-сайт от хакерских атак
Защищаем WordPress-сайт от хакерских атакRuslan Sukhar
 
SEO - поведенческие факторы.
SEO - поведенческие факторы.SEO - поведенческие факторы.
SEO - поведенческие факторы.Pavel Karpov
 
Premium-темы WordPress
Premium-темы WordPressPremium-темы WordPress
Premium-темы WordPressversusbassz
 
Вёрстка по методологии БЭМ
Вёрстка по методологии БЭМВёрстка по методологии БЭМ
Вёрстка по методологии БЭМversusbassz
 

Viewers also liked (9)

Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1Вёрстка WordPress тем - WP Kharkiv Meetup #1
Вёрстка WordPress тем - WP Kharkiv Meetup #1
 
WordCamp Moscow 2016: Как получить качество
WordCamp Moscow 2016: Как получить качествоWordCamp Moscow 2016: Как получить качество
WordCamp Moscow 2016: Как получить качество
 
Как устроен WordPress - WP Kharkiv Meetup #1
Как устроен WordPress - WP Kharkiv Meetup #1Как устроен WordPress - WP Kharkiv Meetup #1
Как устроен WordPress - WP Kharkiv Meetup #1
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0
 
Защищаем WordPress-сайт от хакерских атак
Защищаем WordPress-сайт от хакерских атакЗащищаем WordPress-сайт от хакерских атак
Защищаем WordPress-сайт от хакерских атак
 
SEO - поведенческие факторы.
SEO - поведенческие факторы.SEO - поведенческие факторы.
SEO - поведенческие факторы.
 
Premium-темы WordPress
Premium-темы WordPressPremium-темы WordPress
Premium-темы WordPress
 
Вёрстка по методологии БЭМ
Вёрстка по методологии БЭМВёрстка по методологии БЭМ
Вёрстка по методологии БЭМ
 

Similar to Как не сойти с ума при разработке крупных проектов на WordPress

OOP и WordPress. Подумаем о будущем проекта.
OOP и WordPress. Подумаем о будущем проекта.OOP и WordPress. Подумаем о будущем проекта.
OOP и WordPress. Подумаем о будущем проекта.Oleksandr Strikha
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаAleksandr Makhomet
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Проблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовПроблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовАгентство AlterEGO
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды WebDrupalSib
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0AlexeyParhomenko
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12HappyDev
 
Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7Technopark
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2SBTech
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
 
Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies Anton Anokhin
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаSkillsWiki
 

Similar to Как не сойти с ума при разработке крупных проектов на WordPress (20)

OOP и WordPress. Подумаем о будущем проекта.
OOP и WordPress. Подумаем о будущем проекта.OOP и WordPress. Подумаем о будущем проекта.
OOP и WordPress. Подумаем о будущем проекта.
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 
Проблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовПроблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектов
 
презентация.1
презентация.1презентация.1
презентация.1
 
Msf Dz
Msf DzMsf Dz
Msf Dz
 
Александр Воинов - Тренды Web
Александр Воинов - Тренды WebАлександр Воинов - Тренды Web
Александр Воинов - Тренды Web
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12
 
Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7Разработка веб-сервисов осень 2013 лекция 7
Разработка веб-сервисов осень 2013 лекция 7
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies Никита Ефимов Lead UX Architect, New Cloud Technologies
Никита Ефимов Lead UX Architect, New Cloud Technologies
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 

Как не сойти с ума при разработке крупных проектов на WordPress