Статьи

WordPress для разработки веб-приложений: концептуальная модель

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

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

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

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

Правда в том, что многие люди знакомы с этой парадигмой, они просто не знакомы с соглашениями об именах. К концу этой статьи у нас должно быть четкое понимание того, что такое программирование, управляемое событиями, как оно работает, как оно реализовано в WordPress и как мы должны думать об этом, исходя из других шаблонов, таких как Model-View -Controller.


В последнем посте мы суммировали программирование на основе событий со следующей идеей:

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

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

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


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

В контексте загрузки одной страницы происходит ряд вещей:

  • JavaScript и таблицы стилей получены
  • Запросы выполняются к базе данных для получения данных
  • Информация из базы данных отображается в контексте разметки
  • Страница представлена ​​пользователю
  • …и так далее

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

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

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

Отсюда и название крючков.

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

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

Как я резюмировал в своей серии «Действия и фильтры» :

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

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

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

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

Аналогично, я суммировал фильтры в своей серии «Действия» и «Фильтры» следующим образом:

Фильтры — это функции, через которые WordPress передает данные в определенные моменты жизненного цикла страницы. Они в первую очередь отвечают за перехват, управление и возврат данных перед их отображением в браузере или сохранением данных из браузера в базу данных.

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

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


Теперь, одна из наиболее распространенных вещей, которые я видел от людей, происходящих из разных областей, таких как Rails, CakePHP, ASP.NET или других сред MVC, — как сопоставить их концептуальную модель MVC с событиями. управляемая модель WordPress.

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

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

В связи с этим я настоятельно рекомендую стараться не думать о WordPress в контексте другого паттерна. У него свой шаблон. Думайте об этом в этих терминах.

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

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

Программное обеспечение не работает так.

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


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

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