SlideShare a Scribd company logo
Как быть с большими сайтами
на
WordPress
Petrozavodsky
Интернет журнал BroDude
Владимир
Twitter @petrozavodsky
https://alkoweb.ru
Руководитель отдела
разработки BroDude
WordPress не религия !
Это всего лишь CMS
Откуда все эти сайты ?
Данные сервиса Google Тренды
https://goo.gl/IUpzby
И это только Россия
В мире популярность WordPress
традиционно выше
Достаточно графика
P.S. Drupal красный, остальные популярные CMS
тоже есть на этом графике.
https://goo.gl/CH8sZY
Большой ли у меня
Сайт ?
Высокая посещаемость
с чего начать ?
Этот путь пройден до нас
1. Nginx + php5-fpm.
2. Object cache, memcached.
3. wordpress pages cache
4. Многосерверные и распределённые архитектуры
Оптимизировать код
1. autoload в add_option()
2. orderby => rand в SQL
3. режимы wp-cron
4. wp_remote_get , curl запросы
В чем интрига доклада
???
Большой
или
посещаемый ?
Поддержка больших
сайтов
Проблемы:
-Баги;
-Отсутствие обновлений;
-Legacy code;
-Уязвимости.
Безопасный деплоймент
Откажитесь от FTP
Почему ?
- Открытый трафик, снифферы, перехват
пароля по сети
- Кража паролей из FTP клиента
- Забытые пароли
- Медленная скорость
- Проблемы с параллельной правкой
- Ошибки в продакшене
На этом о деплое
всё!
WP-CLI
- php в bash
- обработка больших данных
- автоматизация
- лёгкая разработка с WP-CLI
http://wp-cli.org/
Аналог drush в Drupal
Переписываем частями
● Шаблон, (в 90% случаев это необходимо).
● Самописные и «хакнутые» плагины.
● Делаем так, чтобы обновления до последней версии не ломали сайт.
● Тестируем на копии сайта с реальными данными.
● Обновляем, «вендорные» плагины, шаблоны до последней версии.
● Сравниваем код ядра с соответствующей версией из архива релизов
https://ru.wordpress.org/releases/ если различий нет, то обновляемся
до последней версии; если есть, убираем «хаки» из кода ядра и
обновляемся до актуальной версии.
Объектно-ориентированное
программирование
- инкапсуляция;
- переиспользование;
- скорость разработки выше;
- безопасность.
Плагины
Очень просто начать писать плагины
Можно уложиться менее чем в 20 строк
Структура проекта
также простая, может состоять из одного файла
Почему нужно писать именно так?
Проблема именования функций Область видимости класса позволяет
решить проблему, инкапсулируя код.
Инициализация кода в момент хука
plugins_loaded
Почти весь любой функционал можно
реализовать в момент этого хука либо
позже.
ООП наследование, переиспользование
и т.д.
Писать в объектно-ориентированном
стиле приятно и легко.
Одинаковая структура проектов делает
возможной оптимизацию
Стандартная структура плагинов
облегчает обслуживание, деплой, сборку
ресурсов и т.д.
Повышается скорость разработки Факт :)
mu-plugins
- Находятся в ~/wp-content/mu-plugins / ;
- Хорошее место для сниппетов, которые в google предлагают вставить в
functions.php акивного шаблона ;
- Плагины, помещенные в этом каталоге, невозможно выключить из админ.
панели, также как и включить;
- Позволяют легко и надёжно отредактировать функционал ядра.
P.S. плагины вызываются в алфавитном порядке, в зависимости от имени
файла, это может вызвать проблемы, но только в том случае, если не
используете для инициализации события хуков и фильтры.
Зачем нужно писать
плагины ?
1. Модульность.
2. Переиспользование в других проектах.
3. Разработка мелкими релизами.
4. Легко организоваь работу команды.
Дебагеры
1. XDebug
2. DBG
3. ZendDebug
4. XHprof
5. А так же многие другие..
Всем известно о пользе дебагеров, их нужно использовать,
так как они наши друзья :)
Встроенные дебагеры
и
плагины
1. Включите режим дебага в wp-cinfig.php
define('WP_DEBUG', true);.
2. Просто используйте встроенный дебагер.
Самые необходимые плагины.
1.Debug Bar
2.Kint Debugger
3.Debug Bar Actions and Filters Addon
4.Debug Bar Console
Debug Bar
Выводит:
1.Notices/Warnings.
2.Информацию о выполненных запросах в базу данных.
3.Все аргументы WP Query.
4.Все deprecated функции/методы во всем коде, включая ядро.
5.Регулярное выражение WP_Rewrite,
6.текущего URL
7.Object Cache, состояние кеша объектов
8.например Memcached
https://wordpress.org/plugins/debug-bar/
Debug Bar
Kint Debugger
1. Вывод d($variable), это лучше чем var_dum();
2. Трасирует Kint::trace()
3. Умеет выводить в интерфейс debug bar;
4. Понравится любителям Drupal и Devel.
https://wordpress.org/plugins/kint-debugger/
Kint Debugger
Debug Bar Actions and Filters
Addon
https://ru.wordpress.org/plugins/debug-bar-actions-and-filters-addon
Выводит все хуки и фильтры,
использованные внутри запроса, списком,
а также в виде дерева внутри интерфейса
Debugbar
Debug Bar Actions and Filters
Addon
Debug Bar Actions and Filters
Addon
Debug Bar Console
https://wordpress.org/plugins/debug-bar-console/
Простая консоль, позволяющая написать и запустить
кусочек php или SQL запрос прямо в окружение
текущей конфигурации WordPress, и сразу увидеть
результат выполнения в нижней части экрана.
Доступны все функции ядра плагинов и шаблона.
Debug Bar Console
Минутка уличного дебага
Gist Github - https://goo.gl/m4Pzaa
Как быть с большими сайтами  на Word press
Обезопаситься от
внешнего мира
1. Применяем код ревью внутри команды.
2. Обязательное автообновление и использование
актуальных версий.
3. Обязательное ревью «вендорных» плагинов и тем.
Популярные уязвимости
своими руками
● Неавторизованный доступ
● XSS
● Sql injection
● Race conditions
IDE
В phpstorm и NetBeans
уже есть
поддержка WordPress
Изучите PHP
Найдите время максимально подробно изучить язык, на котором
программируете.
Конец
Спасибо за внимание

More Related Content

PPTX
Вредные советы для разработчиков
ITCrowd Almaty
 
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
PDF
Разработка API для большого, нагруженного сервиса
endeveit
 
PDF
Фронтенд разработка без боли
Anton Piskunov
 
PPT
Maven как средство сборки проекта
Yova Stoika
 
PDF
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
PDF
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Mail.ru Group
 
PDF
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
Вредные советы для разработчиков
ITCrowd Almaty
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
Разработка API для большого, нагруженного сервиса
endeveit
 
Фронтенд разработка без боли
Anton Piskunov
 
Maven как средство сборки проекта
Yova Stoika
 
BeeGo для веб приложений, API и демонов
Anton Piskunov
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Mail.ru Group
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 

What's hot (20)

PPT
Drupal и возможности его применения
Media Gorod
 
PPTX
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Mail.ru Group
 
PDF
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
 
PDF
Современный фронтенд за 30 минут.
Vladimir Malyk
 
PDF
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
PPTX
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
PDF
WordPress Kitchen MeetUp Summer 2015 - Никита Галкин "Каноны современной разр...
WordCamp Kyiv
 
PPTX
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Mail.ru Group
 
PDF
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Badoo Development
 
PDF
как стать хорошим веб технологом. нарек мкртчян. зал 4
rit2011
 
PDF
Стабы для фронтенда - Никита Мостовой (HeadHunter)
AvitoTech
 
PPTX
Сборка Front-end’a
DelphiCon
 
PDF
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Fwdays
 
PDF
Python и Django – платформа для фрилансера
Alexander Koshelev
 
PPTX
ошибки Word press
Dyadya Lesha
 
PDF
Иван Крутов - Автоматизация сборки Java-проекта
Yandex
 
PDF
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
PPTX
системы сборок проектов
Romero78
 
PDF
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
MoscowJS
 
PPTX
Bootstrap 3. Адаптивная верстка для WordPress
Igor Sazonov
 
Drupal и возможности его применения
Media Gorod
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Mail.ru Group
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
 
Современный фронтенд за 30 минут.
Vladimir Malyk
 
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Кафедра высокопроизводительных компьютерных технологий ИМКН УрФУ
 
WordPress Kitchen MeetUp Summer 2015 - Никита Галкин "Каноны современной разр...
WordCamp Kyiv
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Mail.ru Group
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Badoo Development
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
rit2011
 
Стабы для фронтенда - Никита Мостовой (HeadHunter)
AvitoTech
 
Сборка Front-end’a
DelphiCon
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Fwdays
 
Python и Django – платформа для фрилансера
Alexander Koshelev
 
ошибки Word press
Dyadya Lesha
 
Иван Крутов - Автоматизация сборки Java-проекта
Yandex
 
Современный фронтенд -- как не утонуть в море хайпа?
Vladimir Malyk
 
системы сборок проектов
Romero78
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
MoscowJS
 
Bootstrap 3. Адаптивная верстка для WordPress
Igor Sazonov
 
Ad

Viewers also liked (19)

PPTX
Demo Slideshow
Wendy3
 
PPTX
Horror sub genres
Tamunotonye Fenny
 
PDF
Fedegari After Sales Services
Fedegari Group
 
PPTX
La santé
johalexnfa
 
PDF
KentorTalks 11 november Digital transformation - Från vision till verklighet
DigJourney
 
PDF
Guia trucoteca-call-of-duty-black-ops-2-playstation-3
santiagoiesbelen
 
PPTX
Seminario 3
tatiannaoliva
 
PPTX
OCF Celebrates its 40th this September with Music and Arts Festival
Jacqueline Dupont
 
PDF
The Enterprise Wor/d/thy/Press
Jeroen van Dijk
 
PDF
 Tausend tolle Sachen - Wer, wie, was? Offene Bildungsressourcen (OER) in Ho...
Sandra Schön (aka Schoen)
 
PDF
Vogue russia august_2016
PrivetOUTLET
 
PDF
O1.03
Kasia Stachura
 
PPTX
0727 cvpr16 asp_vision_upload
Hajime Mihara
 
PDF
eCommerce SEO
Rebecca Gill
 
PPTX
SEO Week: Basics of SEO Day Three
Rebecca Gill
 
PDF
Z1.03
Kasia Stachura
 
DOCX
sushil resume
Sushil Pawar
 
Demo Slideshow
Wendy3
 
Horror sub genres
Tamunotonye Fenny
 
Fedegari After Sales Services
Fedegari Group
 
La santé
johalexnfa
 
KentorTalks 11 november Digital transformation - Från vision till verklighet
DigJourney
 
Guia trucoteca-call-of-duty-black-ops-2-playstation-3
santiagoiesbelen
 
Seminario 3
tatiannaoliva
 
OCF Celebrates its 40th this September with Music and Arts Festival
Jacqueline Dupont
 
The Enterprise Wor/d/thy/Press
Jeroen van Dijk
 
 Tausend tolle Sachen - Wer, wie, was? Offene Bildungsressourcen (OER) in Ho...
Sandra Schön (aka Schoen)
 
Vogue russia august_2016
PrivetOUTLET
 
0727 cvpr16 asp_vision_upload
Hajime Mihara
 
eCommerce SEO
Rebecca Gill
 
SEO Week: Basics of SEO Day Three
Rebecca Gill
 
sushil resume
Sushil Pawar
 
Ad

Similar to Как быть с большими сайтами на Word press (20)

PDF
WordPress auto-install: просто о сложном
Vladimir Samoletov
 
PDF
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...
WordCamp Kyiv
 
PPTX
Презентация к вебинару по CMS WordPress
Евгений Холин
 
PDF
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектов
Yana Brodetski
 
PDF
Техническая разработка сайтов
Ольга Куликова
 
PDF
техническая разработка сайтов(2)
Ольга Куликова
 
PPTX
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Igor Sazonov
 
PDF
Страх и ненависть в исходном коде
Kolya Korobochkin
 
PDF
WordPress как фреймворк для создания сложных систем
Anatoly Yumashev
 
PPTX
Little Service in 2h
Alexei Yuzhakov
 
PPTX
То, что Вам нужно знать о WordPress
IT Club Mykolayiv
 
PPTX
Blackbox-тестирование веб-приложений
beched
 
PPT
Highload2009 Rybak Badoo Os
HighLoad2009
 
PDF
[JAM 1.0] CMS. Обзор. (Alexei Yanochkin)
Evgeny Kaziak
 
PPT
Eleanor
SC3402
 
PPT
Eleanor
SC3402
 
PPTX
Язык программирования PHP. EasyCode. Стартовая презентация.
Nikolaj Sarry
 
PDF
Александр Воинов - Тренды Web
DrupalSib
 
PPTX
Lesson1
jinol
 
WordPress auto-install: просто о сложном
Vladimir Samoletov
 
WP Kitchen Meetup Spring 2015 - Владимир Самолетов: WordPress auto-install: п...
WordCamp Kyiv
 
Презентация к вебинару по CMS WordPress
Евгений Холин
 
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектов
Yana Brodetski
 
Техническая разработка сайтов
Ольга Куликова
 
техническая разработка сайтов(2)
Ольга Куликова
 
Оптимальная архитектура масштабируемого плагина WordPress на Custom Post Type...
Igor Sazonov
 
Страх и ненависть в исходном коде
Kolya Korobochkin
 
WordPress как фреймворк для создания сложных систем
Anatoly Yumashev
 
Little Service in 2h
Alexei Yuzhakov
 
То, что Вам нужно знать о WordPress
IT Club Mykolayiv
 
Blackbox-тестирование веб-приложений
beched
 
Highload2009 Rybak Badoo Os
HighLoad2009
 
[JAM 1.0] CMS. Обзор. (Alexei Yanochkin)
Evgeny Kaziak
 
Eleanor
SC3402
 
Eleanor
SC3402
 
Язык программирования PHP. EasyCode. Стартовая презентация.
Nikolaj Sarry
 
Александр Воинов - Тренды Web
DrupalSib
 
Lesson1
jinol
 

Как быть с большими сайтами на Word press