Создание веб-приложений с помощью WordPress: особенности и плюсы

WordPress обзор: достоинства и сфера применения

 

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

Многие считают, что WordPress недостаточно мощен или не предназначен для создания веб-приложений; далее мы еще вернемся к этому вопросу. Мы много лет создавали веб-приложения на WordPress и знаем, что с его помощью вы можете создавать масштабируемые приложения.


Оглавление статьи[Показать]


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

Что такое веб-сайт?

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

Что такое приложение?

Нам нравится определение в Википедии: "Прикладное программное обеспечение (сокращенно приложение) — это программное обеспечение, предназначенное для выполнения группы скоординированных функций, задач или действий на благо пользователя".

Что такое веб-приложение?

Веб-приложение — это всего лишь приложение, запускаемое через веб-браузер.

Обратите внимание, что в некоторых веб-приложениях технология браузера скрыта, например, когда вы интегрируете веб-приложение в собственное приложение для Android или iOS, запускаете веб-сайт как приложение в Google Chrome или активизируете приложение с помощью Adobe AIR. Однако внутри этих приложений по-прежнему существует система парсинга HTML, CSS и JavaScript.

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

Мы можем лишь объяснить некоторые функции веб-приложения, дать вам несколько примеров, а затем попытаться придумать сокращенное определение, чтобы вы в целом понимали, о чем мы говорим, когда употребляем этот термин в блоге.

 При чтении этого блога вам встретятся ссылки на SchoolPress. SchoolPress — это веб-приложение, которое мы создаем, чтобы помочь школам и преподавателям управлять своими учениками и учебными программами. Все примеры кода направлены на функциональность, которая может существовать в SchoolPress. Более подробно об общей концепции SchoolPress мы поговорим далее в этой статье.

Функции веб-приложения

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

  • ♦ Интерактивные элементы

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

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

Веб-приложения будут иметь еще больше элементов интерактивного пользовательского интерфейса (UI — user interface). Примеры включают в себя панели инструментов, элементы перетаскивания, редакторы форматированного текста и ползунки.

  • ♦ Задачи, а не содержание

Помните, что веб-приложения ''разработаны, чтобы помочь пользователю выполнять определенные задачи”. Пользователи Google Maps получают маршруты проезда. Пользователи Gmail пишут электронные письма. Пользователи Trello управляют списками. Пользователи SchoolPress добавляют комментарии по теме урока.

Некоторые приложения по-прежнему ориентированы на контент. Типичный сеанс Facebook или Twitter почти на 90% состоит из чтения. Тем не менее сами приложения представляют способ просмотра контента, отличный от обычного просмотра веб-страниц.

  • ♦ Логины

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

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

  • ♦ Возможности устройства

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

  • ♦ Работа в автономном режиме

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

С Gmail вы можете создавать черновики писем в автономном режиме. Evemote позволяет создавать заметки офлайн, а затем синхронизировать их с Интернетом после восстановления подключения.

  • ♦ Мэшапы

Веб-приложения могут связывать одно или несколько веб-приложений вместе. Веб-приложение может использовать различные веб-сервисы и API для передачи и извлечения данных. У вас может быть веб-приложение, которое получает информацию о местоположении, такую как долгота и широта, из Twitter и отправлять и отмечать его на карте Google Мар.

Мобильные приложения

Веб-приложения, в частности мобильные приложения, получили широкое распространение. На большинстве веб-сайтов мобильные устройства уже преобладают над ПК и являются крупнейшим источником трафика (Источник: Perficient, Inc. (oreil.ly/N92kX)).

В 2012 году типичное веб-приложение выглядело как Basecamp— менеджер проектов, доступ к которому осуществлялся через веб-браузер на вашем компьютере. В 2019 году типичное веб-приложение выглядит как Twitter— приложение для коммуникации, доступ к которому можно получить с помощью телефона iOS или Android.

Поскольку в большинстве случаев многие из пользователей будут получать доступ к вашим веб-сайтам и приложениям на мобильном устройстве, при разработке веб-приложений мы придерживаемся взгляда ’’прежде всего для мобильных устройств”. О том, как заставить ваши приложения WordPress работать на мобильных устройствах.

Прогрессивные веб-приложения

Прогрессивные веб-приложения (PWA) — это веб-сайты, реализующие преимущества современных функций браузера, которые ведут себя как собственные приложения для Android, iOS или ПК. В частности, веб-сайты, которые используют сервис-воркеры (service workers) для работы в автономном режиме, содержат файл манифеста веб-приложения для определения приложения в операционной системе (ОС) и отвечают нескольким другим требованиям, поэтому могут быть запущены как приложения прямо из браузера.

Идея PWA была разработана командой Google Chrome, но теперь поддерживается на iOS и в большинстве современных веб-браузеров. Плагин для поддержки PWA разрабатывается для работы основных функций PWA в WordPress core. С помощью этого плагина вы можете превратить ваш сайт WordPress в PWA, и это хорошая идея. Но на самом деле создание PWA — это скорее образ мышления, а не простой переход. Аналогично ’’функциям веб-приложения”, которые мы только что описали, главный сайт PWA Google содержит контрольный список функций, необходимых в большинстве PWA Укажем следующие базовые функции:

  • ♦ Сайт обслуживается по HTTPS.

  • Страницы адаптированы для планшетов и мобильных устройств.

  • ♦ Все URL-адреса приложения загружаются в автономном режиме.

  • ♦ Метаданные предоставляются для добавления на главный экран.

  • ♦ Первая загрузка быстрая даже с 3G.

  • Сайт работает независимо от браузера.

  • ♦ Переход между страницами не ощущается как работа с сетью.

  • ♦ У каждой страницы есть URL.

В дополнение к базовым функциям есть контрольный список элементов для ’’примерных” PWA, который охватывает пользовательский опыт (UX) и производительность. Инструмент Google Lighthouse предоставляет автоматизированные тесты и отчеты для соответствия критериям PWA. Даже разработчики полностью нативных приложений или приложений для браузера, могут воспользоваться некоторыми советами из контрольных списков PWA и отчетов Lighthouse.

Зачем нужен WordPress?

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

Вы уже используете WordPress

Если вы уже используете WordPress для своего основного сайта, то можете просто добавить плагин, который вам необходим. В WordPress есть отличные плагины для электронной торговли (WooCommerce), форумов (bbPress), сайтов с подпиской (Paid Memberships Pro), функций социальных сетей (BuddyPress) и геймификации (BadgeOS).

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

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

С помощью WordPress легко управлять контентом

Разработанный сначала как платформа для ведения блогов, с введением пользовательских типов записей (англ. СРТ — Custom Post Туре) в версии 3.0 WordPress развился в полностью функциональную систему управления контентом (англ. CMS — Content Management System). Любая страница или сообщение может быть отредактировано администратором через панель инструментов, доступ к которой можно получить через ваш веб-браузер.

WordPress упрощает добавление и редактирование контента с помощью редактора WYSIWYG (What You See Is What You Get— ’Что видишь, то и получаешь”), поэтому вам не нужно привлекать веб-дизайнеров каждый раз, когда вы хотите внести простые изменения в свой сайт. Вы также можете создавать собственные меню и элементы навигации для своего сайта, не касаясь программного кода.

Если ваше веб-приложение сфокусировано на фрагментах контента (например, наше приложение SchoolPress ориентировано на назначение пользователям заданий и их обсуждение), API пользовательских типов постов для WordPress позволяет легко настроить этот пользовательский контент и управлять им.

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

WordPress позволяет просто

и безопасно управлять пользователями

В WordPress есть все необходимое для добавления на сайт как администраторов, так и конечных пользователей.

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

Вы можете использовать плагины, такие как Paid Memberships Pro, чтобы расширить встроенное управление пользователями и назначать членов разных уровней и контролировать доступ пользователей к контенту. Например, вы можете создать уровень, чтобы предоставить участникам с платным аккаунтом доступ к премиум-контенту на вашем сайте WordPress.

Плагины

В репозитории WordPress (wordpress.org/plugins/) имеется более 55 тыс. бесплатных плагинов. Существует множество дополнительных плагинов, как бесплатных, так и коммерческих, на различных сайтах в Интернете. Если у вас появляется идея для расширения вашего сайта, велика вероятность, что для этого уже есть плагин, который сэкономит ваше время и деньги.

Существует несколько необходимых плагинов, которые мы задействуем практически на каждом создаваемом нами сайте и веб-приложении.

Для большинства разрабатываемых веб-сайтов вы, наверное, хотите кэшировать вывод для ускорения просмотра, использовать такие инструменты, как Google Analytics для отслеживания посетителей, создавать карты сайта и настраивать набор страниц для поисковой оптимизации (англ. SEO — Search Engine Optimization), а также выполнять ряд других общих задач.

Есть много хорошо поддерживаемых плагинов для всех этих функций. Мы предлагаем наши любимые в этом блоге.

Гибкость важна

WordPress — полноценный фреймворк, способный на многое. Кроме того, WordPress построен на основе технологий PHP, JavaScript и MySQL, поэтому все, что вы можете встроить в PHP/MySQL (а это почти все), может быть достаточно легко встроено в ваше приложение WordPress.

WordPress и PHP/MySQL в целом не идеально подходят для любой задачи, но они пригодны для широкого круга задач. Наличие одной платформы, которая будет расти вместе с вашим бизнесом, позволит вам быстрее выполнять задачи и перестраиваться. Например, вот типичный пример сайта запуска стартапа Lean, работающего на WordPress:

  • ♦ Объявите о своем стартапе с помощью одностраничного сайта.

  • ♦ Добавьте форму для сбора адресов электронной почты.

  • ♦ Добавить блог.

  • ♦ Сосредоточьтесь на SEO и оптимизируйте весь контент.

  • ♦ Отправляйте посты блога в Twitter и Facebook.

  • ♦ Добавьте форумы.

  • ♦ Используйте плагин Paid Memberships Pro, чтобы позволить участникам платить за доступ.

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

  • ♦ Обновите пользовательский интерфейс, используя JavaScript и фреймворки.

  • ♦ Настройте сайт и сервер для масштабирования.

  • ♦ Локализуйте сайт/приложение для разных стран и языков.

  • ♦ Добавьте поддержку Progressive Web Арр.

  • ♦ Запустите обертки для iOS и Android для приложения.

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

Частые обновления безопасности

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

Базовая архитектура WordPress делает применение этих обновлений быстрым и безболезненным процессом, который могут выполнять даже начинающие веб-

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

Стоимость

WordPress — бесплатный продукт. РНР бесплатен. MySQL бесплатен. Большинство плагинов тоже бесплатны.

Серверы и хостинг стоят денег, но в зависимости от того, насколько велико ваше веб-приложение и сколько трафика вы получаете, это может быть относительно недорого. Если вам требуются пользовательские функции, которых нет ни в одном из существующих плагинов, вам, возможно, придется заплатить разработчику за создание нового. Или, если вы сами разработчик, это будет стоить вам времени.

Ответы на некоторые распространенные критические мнения о WordPress

Некоторые высококвалифицированные критики WordPress могут сказать, что это не очень хорошая основа для создания веб-приложений и это вообще не фреймворк. При всем уважении к тем, кто придерживается подобных мнений, нужно объяснить, почему мы не согласны. Далее приведены некоторые распространенные критические замечания.

WordPress подходит только для блогов

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

Подобные заявления были верны несколько лет назад, но с тех пор WordPress внедрил мощную функциональность CMS, что делает его полезным для других сайтов, ориентированных на контент. WordPress в настоящее время является самой популярной из используемых CMS с долей рынка более 60%1. На рис. 1.1 показан слайд из презентации Мэтта Мулленвега ’’Состояние WordPress” с конференции WordCamp San Francisco 2013. Перевернутая пирамида слева изображает WordPress 2006 года, где большая часть кода посвящена приложению блога, и есть немного кода CMS и платформы, на котором она держится. Правая пирамида представляет текущее состояние платформы WordPress, где большая часть кода находится в самой платформе, поверх которой расположен слой CMS, а поверх уровня CMS — приложение для блога. Сейчас WordPress является гораздо более устойчивой платформой, чем несколько лет назад.

Рис. 1.1. Диаграммы из презентации Мэтта Мулленвега "Состояние WordPress" 2013 год WordPress не всегда был таким устойчивым

 

С помощью API пользовательских типов записей можно настроить установку WordPress для поддержки других типов контента, кроме постов или страниц блога.

WordPress предназначен только сайтов, ориентированных на контент

Подобно людям с позицией ’’только для блогов”, некоторые скажут, что WordPress предназначен только для управления контентом сайтов.

Во-первых, даже если бы WordPress был применим только к контентным сайтам и приложениям, на него приходилось бы большое количество приложений. Главный экран вашего телефона, вероятно, содержит множество приложений, основанных на контенте, таких как Netflix, Twitter, Facebook, Reddit и Evemote. Это очень популярные приложения, поддерживаемые гигантскими компаниями. Сейчас мы не говорим, что эти приложения работают на WordPress, но мы предполагаем, что можно создать приложение, похожее на это, с использованием WordPress в качестве фреймворка.

Во-вторых, как мы подробно рассмотрим в этом блоге, WordPress — это отличная платформа для создания более интерактивных веб-приложений. Основной функцией, позволяющей выбрать WordPress в качестве основы, является API плагинов, который позволяет вам понять, как работает WordPress по умолчанию, и что-то изменить. Вам доступны не только тысячи плагинов в репозитории WordPress и других местах в Интернете, API плагинов позволяет вам написать собственные пользовательские плагины, чтобы WordPress делал что угодно с помощью PHP/MySQL.

WordPress не масштабируется

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

Или, может быть, когда мы предложили вам создать сайт, такой как Facebook, с использованием WordPress, вы справедливо насмехались над этой идеей.

Если вы намереваетесь создать приложение в масштабе Facebook, этот блог не для вас. Спросите своего технического директора, какая часть их бюджета в миллиард долларов выделена вашему приложению и каких инженеров вам нужно переманить из Google и Amazon, чтобы создать собственное решение.

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

По мере расширения вашего приложения вам необходимо будет обновлять и заменять отдельные компоненты, чтобы соответствовать новому масштабу. Проблемы с масштабированием WordPress такие же, как и при масштабировании любого приложения: кэширование страниц и данных, более быстрая обработка вызовов базы данных и повышение производительности сети. Крупные сайты, такие как Word-Press.com, TechCrunch и блог New York Times, стали использовать WordPress. Точно так же большинство уроков по масштабированию приложений PHP/MySQL в целом применимы и к WordPress.

WordPress небезопасен

Как и для любого продукта с открытым исходным кодом, при использовании WordPress есть компромисс в отношении безопасности.

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

С другой стороны, поскольку WordPress является продуктом с открытым исходным кодом, вы узнаете, если эксплойты станут общедоступными, и кто-то другой, вероятно, выпустит исправление для вас.

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

В главе 8 более детально рассматриваются вопросы безопасности, в том числе дан список рекомендаций по повышению безопасности установки WordPress и описаны способы безопасной разработки.

Плагины WordPress ужасны

API плагинов в WordPress и тысячи плагинов, которые были разработаны с его использованием, являются ''секретным соусом" и, по нашему мнению, основной причиной того, что WordPress стал настолько популярным и настолько успешным в качестве веб-платформы.

Некоторые люди скажут: ''Конечно, есть тысячи плагинов, но они все ужасны". Ну да, некоторые из плагинов действительно не очень полезны.

Но есть много плагинов, которые определенно не являются чепухой, например AppPresser, разработанный Брайаном Мессенленером. Если вам нравится WordPress для управления своим письменным контентом или интернет-магазином, то плагин и платформа AppPresser — вот самый быстрый способ получить данный контент или сохранить в мобильном приложении.

Плагин Paid Memberships Pro, разработанный Джейсоном Коулманом, тоже хорош. Использование Paid Memberships Pro для управления биллингом и участниками позволит вам сосредоточить усилия по разработке на основной функциональности вашего приложения, а не на том, как интегрировать ваш сайт с платежной системой.

Многие плагины делают что-то очень простое (например, скрывают панель администратора от обычных пользователей), работают именно так, как рекламируется, и на самом деле вовсе не ужасны.

Темы и плагины, найденные в репозитории WordPress.org, тщательно проверяются сообществом на предмет безопасности и качества кода. Общеизвестно, что обзор на темы WordPress.org (oreil.ly/WgTyD) более строгий и всеобъемлющий, чем в других платформах. Проект Tide (oreil.ly/iR94e) работает над добавлением автоматических тестов для плагинов и репозиториев тем, что приведет к увеличению качества плагинов и обновлений, а также позволит обнаружить проблемы совместимости и безопасности быстрее.

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

Никто не заставляет вас использовать плагины WordPress, не проверяя их самостоятельно. Если вы создаете серьезное веб-приложение, то должны самостоятельно проверить код плагина, исправить его в соответствии со своими стандартами и продолжить разработку.

Когда не следует использовать WordPress

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

Вы планируете лицензировать или продавать технологию своего сайта

WordPress использует Общедоступную лицензию GNU версии 2 (GPLv2), которая содержит ограничения на то, как вы распространяете программное обеспечение, созданное с его помощью. А именно, вы не можете ограничивать то, что люди делают с вашим программным обеспечением, когда вы продаете или распространяете его.

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

Например, если мы размещаем SchoolPress на наших собственных серверах и продаем учетные записи для доступа к приложению, это не считается распространением, a GPLv2 никак не влияет на наш бизнес.

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

Имеется другая платформа, которая приведет вас к цели быстрее

Если у вас есть команда опытных разработчиков Ruby, то целесообразно создавать веб-приложение именно на Ruby. Если есть платформа, фреймворк или пакет, включающий 80% функций Ruby, необходимых для вашего веб-приложения, и WordPress не имеет ничего подобного, то вам, вероятно, следует предпочесть эту другую платформу.

Гибкость не важна для вас

Одна из главных особенностей сайта WordPress— возможность быстрой замены частей сайта в соответствии с вашими потребностями. Например, если "лайки” Facebook перестали приносить трафик, вы можете удалить плагин Facebook Connect и установить плагин для Pinterest.

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

Если ваше приложение служит для выполнения одной простой задачи, то вы, скорее всего, захотите построить его на более низком уровне. Например, сервер лицензий Paid Memberships Pro представляет собой один файл JSON с дополнительной информацией и небольшим скриптом для проверки лицензионных ключей и доставки сжатых файлов. Джейсон создал этот сервер лицензий на РНР с большим объемом кэширования. Сервер лицензий функционирует на DigitalOcean Sroplet за 10 долларов в месяц и обслуживает более 80 тыс. сайтов, работающих под управлением Paid Memberships Pro.

Точно так же, если у вас есть ресурсы масштаба Facebook, то вы можете позволить себе создавать все вручную и использовать собственные компиляторы PHP-to-C и нативные компоненты iOS, чтобы сократить время загрузки вашего веб-сайта и приложения на несколько миллисекунд.

Ваше приложение должно работать

в режиме реального времени

Одним из потенциальных недостатков WordPress, о котором мы поговорим позже, является его зависимость от типичной архитектуры веб-сервера. В стандартной настройке WordPress пользователь посещает URL-адрес, который связывается с вебсервером (например, Apache) по HTTP, запускает скрипт РНР для генерации страницы, а затем возвращает пользователю полную страницу.

Существуют способы улучшить производительность этой архитектуры с использованием методов кэширования и/или оптимизированных настроек сервера. Вы можете сделать WordPress асинхронным с помощью вызовов Ajax или доступа к базе данных с помощью альтернативных клиентов. Однако если ваше приложение должно работать в режиме реального времени и быть полностью асинхронным (например, приложение, похожее на чат, или многопользовательская игра), мы советуем хорошенько подумать, подойдет ли вам WordPress.

Многие разработчики WordPress, включая Мэтта Мулленвега, основателя и духовного лидера WordPress, понимают это ограничение. Все больше функциональности WordPress переносится в JavaScript, где вычисления могут быть перенесены в браузер, а фреймворки, такие как REACT, позволяют создавать высокоинтерактивные события. Новый редактор Gutenberg, добавленный в WordPress 5.0, является лучшим примером этого шага и свидетельствует о грядущих событиях. Но в данный момент вы столкнетесь с трудностями, пытаясь заставить WordPress работать асинхронно с той же производительностью, что и нативное приложение или что-то полностью построенное на Node.js либо других технологиях, специально предназначенных для приложений реального времени.

WordPress как фреймворк

Системы управления контентом, такие как WordPress, Drupal и Joomla, часто остаются вне обсуждения фреймворков, но на самом деле WordPress (в частности) действительно отлично подходит для того, для чего предназначены фреймворки: для быстрого создания приложений.

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

Различные API, общие объекты и вспомогательные функции, описанные в этом блоге, позволяют быстрее программировать сложные приложения, не беспокоясь об интеграции систем более низкого уровня.

На рис. 1.2 показан правый треугольник из презентации Мэтта Мулленвега "Состояние WordPress" 2013 года, изображающий устойчивую платформу WordPress со слоем CMS, находящимся сверху, и приложение для ведения блогов, построенное поверх слоя CMS.

Рис. 1.2. Платформа WordPress

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

WordPress и фреймворки Framework-View-Controller

Модель-представление-контроллер (MVC — Model-View-Controller) — это общий шаблон проектирования, присутствующий во многих средах разработки программного обеспечения. Основные преимущества архитектуры MVC — повторное использование кода и разделение задач (SoC — Separation of Concerns). WordPress не задействует архитектуру MVC, но по-своему реализует повторное использование кода и SoC.

Здесь мы кратко расскажем об архитектуре MVC и о том, как она влияет на процесс разработки в WordPress. Если вы знакомы с основами MVC, этот раздел должен помочь вам понять, как подходить к разработке на WordPress аналогичным образом. На рис. 1.3 приведено типичное приложение на основе MVC. Конечный пользователь использует контроллер, манипулирующий состоянием приложения и данными через модель, которая затем обновляет представление, отображаемое пользователю. Например, в приложении блога пользователь может просматривать страницу последних сообщений (представление). Пользователь щелкает заголовок сообщения, осуществляя переход к новому URL (контроллеру), который загрузит данные поста (в модель) и отобразит один пост (другое представление).

Рис. 1.3. Как работает MVC

Архитектура MVC поддерживает повторное использование кода, позволяя моделям, представлениям и контроллерам взаимодействовать. Например, и представление последних сообщений, и представление отдельных сообщений могут задействовать одну и ту же модель публикации при отображении данных публикации. Одни и те же модели могут служить в веб-интерфейсе для отображения сообщений и в бэкенде — для их редактирования. Архитектура MVC поддерживает SoC, позволяя дизайнерам сосредоточить свое внимание на представлениях, а программистам — на моделях.

Вы можете попробовать применить архитектуру MVC в WordPress. Есть целый ряд проектов, которые помогут вам сделать это. Однако мы считаем, что попытка привязать MVC к WordPress может привести к проблемам, если ядро WordPress не будет официально поддерживать MVC. Вместо этого мы предлагаем следовать "WordPress Way", как описано в этом блоге.

Тем не менее, если вам интересно, WP MVC плагин (bit.ly/wp-mvc) находится в активной разработке и помогает вам на основе MVC Framework создавать плагины WordPress. Если вы не хотите или вам не нужен полный MVC, есть несколько способов привязать процесс MVC к WordPress.

Модели = плагины

В среде MVC код, который хранит базовые структуры данных и логику работы, находится в моделях. Именно здесь программисты будут проводить большую часть своего времени.

В WordPress плагины являются подходящим местом для хранения новых структур данных, сложной бизнес-логики и пользовательских определений типов записей.

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

Один из способов сделать SoC более понятным при добавлении в ваши плагины WordPress компонентов, отвечающих за дизайн,— создать папку templates или pages и поместить в нее свой код внешнего интерфейса. Обычная практика — позволить шаблонам (templates) переопределять шаблон, используемый плагином. Например, при работе WordPress с плагином Paid Memberships Pro вы можете скопировать папку с именем paid-memberships-pro/pages в папку с вашей активной темой, чтобы переопределить шаблоны страниц по умолчанию. 

Представления = темы

В MVC-фреймворке код для отображения данных пользователю записывается в представлениях. Именно здесь дизайнеры и разработчики внешнего интерфейса будут проводить большую часть своего времени.

В WordPress темы — это подходящее место для хранения шаблонного кода и логики. Опять же, сравнение здесь не сопоставляется один к одному, но ''views = themes” — хорошая отправная точка.

Контроллер = загрузчик шаблонов

В инфраструктуре MVC код для обработки пользовательского ввода (в виде URL-адресов или данных $get или $post) и определения того, какие модели и представления следует использовать для обработки запроса, хранится в контроллерах. Код контроллера обычно обрабатывается программистом и часто устанавливается один раз, а затем забывается. Программирование в приложении MVC происходит, по сути, в моделях и представлениях. Несмотря на это, контроллеры являются важной частью работы приложения.

В WordPress все запросы к страницам (если пользователи не обращаются к кэшированному файлу *.htrn!) обрабатываются с помощью файла index.php в соответствии с иерархией шаблонов. Загрузчик шаблонов определяет, какой файл в шаблоне следует использовать для отображения страницы конечному пользователю. Например, search.php — для отображения результатов поиска, single.php — для отображения одного сообщения и т. д.

Поведение по умолчанию можно дополнительно настроить с помощью API-интерфейса WP_Rewrite и других хуков и фильтров. Информацию об иерархии шаблонов (bit.ly/temp-hier) вы можете найти в справочнике по WordPress.

Для лучшего понимания того, как работают фреймворки MVC, фреймворк PHP Yii (bit.ly/yii-guide) содержит большой ресурс, объясняющий подробно, как лучше всего использовать его архитектуру MVC2.

Подробнее о том, как разрабатывать веб-приложения на основе WordPress, читайте далее в этом блоге.

Анатомия приложения WordPress

В данном разделе опишем приложение, которое мы создали как дополнение к этому блогу: SchoolPress. Мы расскажем о предполагаемой функциональности SchoolPress, о том, как оно работает, и кто будет им пользоваться, и, что наиболее важно для этого блога, о том, как каждая часть приложения построена в WordPress.

Не беспокойтесь, если вы не понимаете некоторые из следующих терминов. В последующих статьях мы рассмотрим всю введенную здесь терминологию более подробно.

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

Что такое SchoolPress?

SchoolPress — это веб-приложение, которое позволяет учителям легко общаться со своими учениками за пределами классной комнаты. Учителя могут создавать классы и приглашать в них своих учеников. В каждом классе есть форум для специальных обсуждений, а также более структурированная система для учителей, чтобы публиковать задания и заставлять учащихся выполнять свою работу.

Рабочее приложение можно найти на веб-сайте SchoolPress (schoolpress.me). Исходный код приложения размещен в репозитории SchoolPress GitHub.

SchoolPress работает

в многосайтовой сети WordPress

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

Школы могут создать уникальный поддомен, в котором будут размещаться занятия для учителей. Эта установка предлагает более точный контроль и отчетность для всех классов школы.

Бизнес-модель SchoolPress

SchoolPress использует плагины Paid Memberships Pro, PMPro Register Helper и PMPro Network для настройки процесса регистрации и приема платежей по кредитной карте при регистрации школ.

Школы могут приобрести собственный уникальный поддомен за ежегодную плату. Другие пользователи SchoolPress не платят за доступ. Когда школьные администраторы регистрируются, они могут указать название школы и сокращение для своего поддомена <ourschool>.schoolpress.me. Для них создается новый сетевой сайт, и им предоставляется доступ к оптимизированной версии панели управления WordPress их сайта.

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

Учителя могут также бесплатно зарегистрироваться, чтобы создавать свои классы по адресу schoolpress.rne. Страницы, размещенные на поддомене, могут показывать рекламу или использовать другие схемы монетизации.

Уровни участия и роли пользователей

Учителя получают уровень членства учителя (через Paid Memberships Pro) и специальную роль под названием ''Учитель, которая дает им доступ к созданию и редактированию своих классов, модерированию дискуссий на их форумах классов, а также созданию и управлению назначениями для своих классов.

Учителя не имеют доступа к панели управления WordPress. Они формируют классы и управляют ими и заданиями через формы внешнего интерфейса, созданные для этих целей.

Студентам предоставляется уровень участия ''Студент” и роль ''Подписчик” по умолчанию в WordPress. Учащиеся имеют доступ к просмотру и участвуют только в тех классах, в которые их приглашают учителя.

Классы — это группы BuddyPress

Когда учителя создают "классы", они в действительности создают группы BuddyPress и приглашают своих учеников в группу. Благодаря BuddyPress мы получаем форумы классов, личные сообщения и хороший способ организации наших пользователей.

Дискуссионные форумы класса работают на плагине bbPress. Новый форум создается для каждого класса, и BuddyPress управляет доступом к форумам.

Назначения — это СРТ

Назначения — это СРТ (пользовательский тип записи), который использует форму представления внешнего интерфейса для учителей, чтобы публиковать новые назначения. Задания похожи на стандартные записи в блоге WordPress, с заголовком, содержимым тела и вложенными файлами. Учитель, отправляющий задание, является автором сообщения.

 WordPress имеет встроенные типы сообщений, такие как сообщения и страницы, и встроенные таксономии, такие как категории и теги. Для SchoolPress мы создадим собственные СРТ и таксономии.

Представления (подтип) СРТ для назначений

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

Представления, как и задания, также являются СРТ. Представления связываются с назначениями, устанавливая в поле post_parent представления идентификатор задания, в которое оно было отправлено. Студенты могут публиковать текстовые материалы, а также добавлять одно или несколько приложений к заявке.

Семестры являются таксономией для класса СРТ

Пользовательская таксономия с именем Semester настроена для группы/класса СРТ. Администраторы школ могут добавлять новые семестры на свои сайты. Например, можно создать семестр "осень-2019", и учителя могут назначить этот семестр при создании своих классов. Затем студенты смогут легко просмотреть список всех классов осени 2019 года.

Департаменты являются таксономией для класса СРТ

Пользовательская таксономия с именем Департамент тоже настроена для группы/класса СРТ. Они также доступны в виде раскрывающегося списка для учителей при создании классов и позволяют ученикам просматривать список классов по департаментам.

SchoolPress имеет один основной пользовательский плагин

За кулисами пользовательские фрагменты приложения SchoolPress управляются из одного пользовательского плагина под названием SchoolPress. Это основной плагин, он включает в себя определения для различных СРТ, таксономий и ролей пользователей. Он также содержит код для настройки сторонних плагинов, используемых SchoolPress, таких как Paid Memberships Pro и BuddyPress.

Основной плагин также содержит классы для школьных администраторов, учителей и учащихся, которые расширяют класс w₽_user, и классы для классов, заданий и представлений, которые расширяют класс wp_ Post. Эти (РНР) классы позволяют организовать наш код в объектно-ориентированном стиле, который облегчает контроль над тем, как работают наши различные настройки, и позволяет расширять код в будущем. С этими классами интересно работать, пример приведен в листинге 1.1.

Листинг 1.1. Возможные события входа пользователя

if ($class->isTeacher($ccrrent_user))

{

  // это учитель, показать ему учительский материал

  //...

}

   elseif($class->isStudent($current_user))

{

  // это ученик в классе, показать ему студенческие материалы

   //...

}

   elseif(is_user_logged_in())

{

   // не вошли в систему, перенаправить их в форму входа 
   wp_redirect(wp_login_url(get_permalink($class->ID))); exit;

}

else

{

   // не являются членами этого класса, перенаправить на страницу приглашения 
   wp_redirect($class->invite_url);

   exit;

}

 

В SchoolPress есть несколько других пользовательских плагинов

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

Примером может быть Force First и Last Name как плагин Display Name (oreil.ly/QVANc), который необходим для этого проекта. Он не требует запуска основного кода плагина и полезен для других сайтов WordPress вне контекста приложения SchoolPress. Мы создали отдельный плагин для этой функциональности и поддерживаем его в репозитории WordPress.org, чтобы другие могли применить его и получить от него выгоду.

SchoolPress использует тему Memberlite

Основной сайт schoolpress.те работает на настроенной дочерней теме Memberlite. Если администратор школы подписывается на премиальный поддомен, он может выбрать одну из множества дочерних тем Memberlite; он также может изменить любой из цветов, шрифтов и логотипов темы, чтобы лучше соответствовать бренду школы/класса. Кроме того, все темы имеют адаптивный дизайн, который гарантирует, что сайт будет хорошо смотреться на экранах мобильных устройств и планшетов, а также на экранах персональных компьютеров.

Код темы Memberlite (memberlitetheme.com) очень строго ограничен, он включает только то, что связано с отображением. Код темы, очевидно, включает HTML и CSS для макета сайта, но также содержит некоторую простую логику, которая интегрируется с основным плагином SchoolPress (как и предыдущий код ветвления). Однако любой фрагмент кода, который манипулирует пользовательскими типами записей или пользовательскими ролями или требует большого количества вычислений, передается плагину SchoolPress.

Теперь, когда мы определили, что такое приложение, обсудили, почему вы можете создать его с помощью WordPress, представили способ разделения задач в стиле WordPress и описали на высоком уровне наше приложение-пример SchoolPress, давайте углубимся в суть WordPress, выясним, что в него включено и как он работает.

Основы WordPress

WordPress был впервые разработан в 2003 году и создавался преимущественно как программное обеспечение для блогов. К выпуску версии 3.5 образ WordPress изменился с блога на универсальную CMS, и слово ''блог” было фактически удалено из описания программного обеспечения и большинства мест в исходном коде. Сегодня WordPress превратился в крупнейшую веб-платформу и используется примерно на 30% всех веб-сайтов в Интернете. Этот факт впечатляет еще больше, если привести абсолютные цифры, — более полутора миллиардов интернет-сайтов работают на WordPress.

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

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

 Возможно, вы знаете, как использовать WordPress, и уже установили последнюю версию. Но если вы работаете с WordPress впервые, зайдите на домашнюю страницу Word Press (wordpress.org), чтобы познакомиться с ним.
Теперь давайте рассмотрим структуру каталогов Wordpress и их назначение.
 

Вас заинтересует / Intresting for you:

Структура каталогов WordPress ...
Структура каталогов WordPress ... 3135 просмотров Игорь Воронов Fri, 07 Jan 2022, 17:59:03
Настройка NGINX для CMS WordPr...
Настройка NGINX для CMS WordPr... 1803 просмотров Гвен Mon, 21 Mar 2022, 14:19:47
Обзор и сравнение фреймворков ...
Обзор и сравнение фреймворков ... 2534 просмотров Валерий Павлюков Wed, 13 Mar 2019, 17:28:13
Фильтр Google Page Layout Algo...
Фильтр Google Page Layout Algo... 1257 просмотров Игорь Воронов Tue, 17 Mar 2020, 16:26:29
Войдите чтобы комментировать

 аватар
ответил в теме #10383 2 года 3 мес. назад
Благодарю за статью
1dz аватар
1dz ответил в теме #10373 2 года 3 мес. назад
Очень грамотная статья. Детально описан движок Wordpress. Понятно для чего он нужен, его сильные стороны и где применять CMS. Конечно, Вордпресс сейчас №1 в мире в качестве статейника, новостного сайта и т..