В этом видео я болтаю об особой ситуации из «реального мира», в которой я оказался, о том, как я обрабатываю страницу CodePen Meetups.
В самом начале встречи CodePen Meetups мы планировали только одну. Это должна была быть первая встреча CodePen в Остине, штат Техас. Поэтому я создал для него страницу как часть основного веб-сайта CodePen (проект Rails) по адресу URL / meetups /. Там я создал его так, как я хотел. Я выяснял, какая информация должна быть на этой странице и как ее представить. (В видео мы откопали копию сайта в то время через Cached Pages (скриншот)).
Время шло. Я добавил к нему несколько встреч, и форма отображения нескольких встреч на странице обрела форму. Я выяснил, какие фрагменты информации были общими для всех встреч и как это показать. В то же время обновления становились утомительными. Добавление новых - это работа. Легко забыть удалить старые. И это отстойно, просто удалять HTML таким образом, зная, что вы уничтожаете потенциально полезную информацию. Я просто редактировал здесь HTML-шаблон.
Пришло время, что это действительно нужно было систематизировать и перенести в систему управления контентом. К счастью, переезд был довольно простым, так как я точно знал, что мне нужно, и знал, что у меня есть инструменты, чтобы осуществить это. Мы действительно делали подобное раньше несколько раз. Например здесь и здесь.
Это происходит примерно так:
- Создайте новый пользовательский тип сообщения («Встречи») с помощью этого плагина.
- Прикрепите к этому CPT именно те настраиваемые поля (дата, время, место проведения и т. Д.).
- Публикуйте!
Мы установили has_archive
для true
нашего CPT, так что мы получили URL / Meetups / бесплатно, который автоматически использует шаблон `архив-meetups.php`. Однако нам нужно было серьезно поработать над этим шаблоном, так как мы должны были:
- Отображайте всю необходимую информацию именно так, как мы этого хотим.
- Отображение предстоящих встреч в порядке дат.
- Автоматически перемещать старые встречи в раздел «Прошедшие встречи».
Все вполне выполнимо. Сначала давайте запросим встречи, которые мы хотим (после сегодняшней даты). Мы делаем это, выполняя специальный запрос, включающий соответствующее настраиваемое поле.
'meetups', 'posts_per_page' => -1, 'meta_key' => 'date', 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'date', 'compare' => '>=', 'value' => $today )) )); foreach ($myposts as $post) : setup_postdata($post); // The loop! Output stuff! endforeach; wp_reset_postdata(); ?>
С расширенными настраиваемыми полями вывод настраиваемых полей очень прост. Это дает вам функцию, которую вы можете использовать вот так, просто назовите поле:
Мы просто помещаем такой вывод в существующий HTML, который уже использовали в этом новом шаблоне. Затем мы запускаем еще один цикл, только с обратным сравнением дат, для прошлых встреч.
Ничего особо разоблачительного здесь нет, я просто в восторге от таких вещей, потому что:
- Это кажется очень продуктивным при таком небольшом объеме работы (я сделал это однажды ночью, лежа на диване).
- Я могу сделать это, не беспокоя команду, чтобы разработать что-то интересное, я могу использовать свои навыки фронтенд-разработчика для этого. (Я считаю, что работа с темами и базовыми функциями WordPress - это интерфейсный навык).
И, конечно же, для этого не требуется WordPress. Я уверен, что это возможно в любой CMS. Вот что такое CMS. Я просто люблю и лучше всех знаю WordPress.