Логотип WordPress
Разработка сайта на WordPress

Обзор WordPress

Пришло время сделать то, что совершили уже тысячи: сделать обзор WordPress. Мимо наиболее популярной системы управления содержимым в мире пройти очень трудно. А с учетом того, что везде про WordPress лишь хвалебные отзывы, то полностью нейтральный с трезвым взглядом на преимущества и недостатки будет очень даже к месту. Ладно, пора приступить к делу.

Обзор WordPress

Что можно сказать про WordPress

Обзор WordPress – дело непростое. Скажи что-нибудь плохое и куча недовольных налетит. Одни с криками «Как ты можешь не любить плагины! Они все сделаны профессионалами!». Да, такое я слышу частенько. Серьезно, критические уязвимости в плагинах, дико прожорливый функционал, крайне фиговая оптимизация. Не, не слышали. Если вы не автор плагина, то вы по умолчанию не сможете сделать хороший код и поддерживать его. Забавно. И да, я люблю плагины. Но там, где дело можно решить двумя строчками кода, плагин я ставить не буду.

Другие налетят с криками «Ты ни черта не понимаешь в этой CMS, у тебя руки кривые, это не баг, это фича!». Ну, возразить довольно легко, но вряд ли меня услышат. Так что, предупреждаю сразу, все нижесказанное — мое личное мнение, бомбящие пуканы не направляйте в мою сторону.

Теперь поговорим о хорошем. WP не зря завоевал популярность. У него малый порог входа, отличный функционал и огромный потенциал. Это прекрасная система управления содержимым, но, как всегда, найдутся ребята, которые выскажут, что «Drupal лучше!», «tru-быдлокодеры фигачат на фреймворках, чистом PHP, JAVA, Pyton…etc!» и самое главное, даже приведут адекватные аргументы. Так вот, предупреждаю, я не говорю, что WordPress идеален и лучше всех. Я утверждаю, что это отличный инструмент для работы со своими преимуществами и недостатками, не более.

Обзор WordPress: архитектура

Большое отступление получилось. Но ладно, пора перейти непосредственно к нашим баранам CMS. WP очень легко установить. Это стандартная система, для которой подойдет любой хостинг с поддержкой PHP, MySQL, Apache. Это минимальный набор. Но с другими веб-серверами проблем не встречал. На том же LSAPI все отлично пашет.

В принципе, с данной CMS очень легко работать, особенно если требуется разместить простой блог. Если же требуется дополнительный функционал, то его можно допилить плагинами. В общем, глубоко в код лезть не придется, что позволяет легко, быстро и недорого развернуть сайт. Скажу честно, даже HTML и CSS знать не обязательно, но со знаниями работать будет все-таки проще.

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

Но даже в случае поиска специалистов имеется большой плюс. Следствие популярности CMS – большое количество специалистов, соответственно, высокая конкуренция и адекватные цены на услуги по разработке и доработке сайтов. Но есть и недостаток. Слишком много «псевдоспециалистов». Людей, которые могут установить WP, поставить на него тему и воткнуть пару плагинов, зато считают себя настоящими веб-разработчиками. Ну, у любой медали две стороны.

Несмотря на то что для конечного пользователя это очень простая CMS, но в плане разработки она становится очень сложной. Скажу честно, Junior WordPress-разработчик гораздо слабже, чем тот же уровень фреймворк-девелопера, даже мидл окажется послабже, чем мидл на фреймворках. Но Senior-WP окажется на голову выше сеньора на фреймворках. Все обусловлено простым фактом:

  1. Если во фреймворках используется в основном ORM (объектно-реляционное отображение), то у Вордпресс EAV (модель сущности-атрибута-значения).

  2. Вместно архитектуры MVC (модель-представление-контроллер) применяется EDA (событийно-ориентированная архитектура).

В чем разница. Постараюсь объяснить кратко. Начнем с ORM. Этот тип предназначен для того, чтобы преобразовывать термины и классы данных (объекты) в пригодные формы для последующей передачи в СУБД, но так, чтобы не было необходимости создавать SQL-алгоритмы для взаимодействия в самой системе управления базами данных.

ORM

Это отличный вариант, но есть свои недостатки, так как подходят только БД для реляционного представления, появляются трудности с событийным представлением. В общем. Это довольно трудно объяснить, не накатав пару отдельных статей. Так что скажу так, вы можете ориентироваться на объекты, выполнять с ними любые действия, но чтобы интерпретировать событие, нужно чтобы оно меняло свойства объекта, в противном случае анализировать его не получится.

Теперь поговорим о EAV. Эта модель считается более эффективной как для реляционного отображения, так как интерпретировать нужно не объекты, а сущности. А сущность, с точки зрения концепции, не что иное, как событие. Фактически, любое событие может быть связано таблицу объектов, а нужный параметр вычисляется по атрибуту, уникальному ключу или идентификатору, что избавляет от надобности создавать четкие значения объектов по категориям.

EAV

Фактически, вычисляя нужный объект из таблицы по атрибуту, получаем значение. Но у сего подхода тоже есть большой недостаток. Они просты, но плохо масштабируются, приходится использовать отдельные таблицы для каждого типа данных, в противном случае получится слишком большой объект, крайне трудный для обработки.

Теперь о MVC. В данном случае получается работа всего с тремя значениями:

  1. Модель. Она не зависит от представления, не взаимодействует с пользователем напрямую, только через контроллер. Только подвергается анализу и меняет свое состояние, передавая данные в преставление.

  2. Представление, в свою очередь, отвечает за извлечение данных из модели и передачи их пользователю. Данные от пользователя представление не обрабатывает.

  3. Контроллер. Он обеспечивает обратную связь. Фактические передает данные от пользователя в модель, формируя ее новое состояние.

MVC

Очень простая схема, которая позволяет реализовать довольно сложные проекты. Именно поэтому данная архитектура сейчас очень популярна.

А теперь о EDA. Этот тип архитектуры реагирует на события. Любое взаимодействие внутри системы становится тригером для совершения новых событий внутри системы. Фактически, при неправильном подходе можно породить «снежный ком» из бесконечного количества событий, потому сложность возрастает на порядок. И дело даже не в самом коде, а логике, которая позволяет реализовать намного больше вариаций, но при этом требует гораздо больше аналитики перед внедрением.

EDA

Строится по системе:

  1. Генератор событий — специализированный тригер, который запускает или находит факт о происхождении события и передает дальше.

  2. Факт попадает в канал событий, фактически, канал распространения информации, позволяющий передать инфо всем механизмам системы.

  3. Механизм обработки событий. Он отвечает за идентификацию события, фактически создает реакцию и вносит изменения.

  4. Нисходящая управления. По факту, отвечает за интерпретацию последствий события и завершает цепочку.

  5. В случае если завершение события породило новое событие, то генератор снова запускается.

Метод дает гораздо больше вариаций, ведь можно обрабатывать сразу поток событий, строить между ними взаимосвязи и не создавать отдельную модель для каждого действия. Такая архитектура позволяет использовать слабую связь элементов, что позволяет максимально широко ее распределить. Соответственно, не понадобится строить цепочки объектов, которые будут слишком сильно зависеть друг от друга.

Как видите, Вордпресс достаточно сложен по архитектуре. На уровне разработки он требует огромных знаний, которыми обладает не каждый специалист. Это не хорошо и не плохо просто так есть.

Например, во фреймворке Symphony присутствуют все эти элементы и их можно сочетать, тут кроются многочисленные возможности, но требования к специалисту многократно возрастают.

Обзор работы в WordPress

Итак, мы отошли от глубоких весей сей CMS, пришло время взглянуть на более прикладные вещи. Начнем, конечно же, с банальных вещей: что можно сделать на WordPress.

Несмотря на то что движок называют «блоговым», системой управления для школьников и так далее. Со всех сторон раздаются крики «пилите на фреймворках!», но это ерунда. На WP реализовать можно практически все. Начиная от маленького блога или лендинга и заканчивая интернет-магазином. Даже крупным.

Конечно, узкоспециализированный инструмент для своей задачи окажется гораздо эффективнее, чем универсальный. Но где вы сейчас видели чистый интернет-магазин или чистый блог. Функционал расширяется. Сейчас многие проекты представляют собой помесь блогов, ИМ и интерактивных площадок. Все стремится к универсализации, потому популярность универсальных CMS становится все выше. Drupal, Joomla, почему они занимают лидирующие позиции? Потому что универсальны. Почему WP лидирует? Потому что универсальный и с низким порогом вхождения.

Начнем с установки. Без шуток, выполняется она 5 минут. Ставится WP очень просто, в следующей статье опишу, как это сделать.

После установки вы встретитесь с удобной админкой. Как человек, который использовал много CMS, могу честно сказать, что только у October мне понравилась больше.

Админка WordPress

Из панели администратора управлять можно практически всем:

  • создавать страницы;

  • редактировать код темы;

  • создавать меню;

  • добавлять виджеты;

  • устанавливать плагины, обновлять.

В общем, спектр возможностей довольно велик, самое главное, для управления не нужно знать практически никаких специфических вещей.

Создавать новые страницы и структуры здесь довольно просто. Есть таксономии, в которых

будут содержаться записи, есть страницы, которые ни к чему не привязаны, а также есть записи, которые будут выводиться в зависимости от таксономий.

Подробнее о таксономиях:

  1. Рубрики. Фактически, отдельная тема для ряда записей, которые отделены от других рубрик.

  2. Архивы дат. Сортировка записей по датам. Можно выводить архив за месяц, год, два дня, короче, за тот период времени, который пожелаете.

  3. Архивы меток. Хештеги видели? Метки примерно то же самое. По ним можно группировать записи из разных рубрик, но со смежными метками.

Далее можно строить из них вариации. Мало? Тогда с помощью плагинов можно добавить пользовательские таксономии и построить более сложную структуру.

Теперь про записи. На самом деле создавать записи здесь довольно легко. Захотели, используйте Гутенберг.

Редактор Гутенберг

Не нравится блочный редактор? Тогда есть классический, который сейчас подключается отдельным плагином.

Классический редактор

Хотите что-то изысканное и максимально простое? Тогда можно установить визуальный конструктор, например, Elementor. Но я предпочитаю использовать классический редактор. С ним больше возможностей, чем с Elementor, ограничения которого перебить крайне трудоемко.

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

Обзор WordPress: недостатки

Да, мы ограничены рамками CMS, потому некоторых вещей не хватает и пока не предвидится.

Во-первых, очень пригодился бы шаблонизатор. Реально, сейчас шаблон похож на помесь PHP и HTML.

Шаблон WP

Было бы классно, если все было реализовано так, как, к примеру, в Twig. Банально, реализация шаблона в CMS Grav.

Шаблон Grav

Чем она плоха? Мы создаем отдельные элементы и посредством шаблонизатора подключаем там, где нужно.

Поехали дальше. Во-вторых, не хватает панели управления. Безусловно, админка — это отлично, но полноценная панель управления, которая, как и CMS, работала бы в режиме «Lego», пошла бы на пользу. В ИМ, разнообразных форумах, в конце концов, даже в небольшом сайте компании такая панель очень бы пригодилась.

В третьих. Отсутствие поддержки других СУБД. Тот же PostreSQL на порядок шустрее, чем MySQL, но без серьезных костылей не прикрутишь. Для крупных проектов производительная СУБД — необходимость, а не прихоть.

Отсутствие масштабирования базы данных. Плагины, просто добавляющие несколько новых таблиц не считаем. Главная проблема в том, что несмотря на то что используется EAV, слой абстракции БД построить попросту не получается. Вот такие вот пироги.

В целом для меня это все.

Проблема модульности

Многие жалуются на то, что у WordPress нет возможности добавлять пользовательские поля, SEO и некоторые другие вещи из «коробки». Да, это так. И это к лучшему. Предпочел бы, чтобы уровень модульности зашел еще дальше и из коробки стало доступно еще меньше функций.

Например, не всегда нужен Cron, можно убрать встроенную поддержку комментариев, виджетов, части таксономий. Если я с ними не планирую работать, то они мне ни к чему. Например, сделать все это в виде отдельных плагинов, которые могу отключить. Это значительно бы ускорило систему. Но пока придется мириться с тем, что функционал из «коробки» все еще очень широк.

Выводы

Вот и подошел к концу обзор WordPress. На текущий момент это одна из лучших систем управления контентом. Надеюсь, что CMS продолжит развиваться, становиться лучше и исправлять старые недочеты. К сожалению, процесс этот довольно медленный и разработчики прекрасно понимают, какие кроются в их творении недостатки, но резко исправить все нереально, тогда потеряется обратная совместимость плагинов, тем и других инструментов, что плохо скажется на популярности.

Все потихоньку и не будет никаких проблем. Успехов в разработке!

Добавить комментарий

Ваш e-mail не будет опубликован.