Автор оригинала: FreeCodeCamp Community Member.
Дрю Дальман
Управление контентом может быть болью. Тем не менее, упоминания WordPress часто приносят о стонах некоторых разработчиков. Конечно, в 2018 году есть лучший способ.
Что ж, давайте сделаем безголовую CMS и публиковать статические JSON, которые могут быть использованы безсетесовой приложением – или визуализация сервера с кэшированием для окончательной скорости! Бонус для принятия этого подхода: мы можем уменьшить проблемы безопасности, а также использовать данные из наших CMS в нескольких местах. И нам никогда не нужно иметь дело с серверными нагрузками, потому что все исходит от AWS S3.
Да, WordPress имеет API, которую вы можете использовать. Но целью состоит в том, чтобы избежать постоянно взаимодействия непосредственно с WordPress в ваших приложениях, сохраняйте все статическое.
Для этого поста я создал репо, который поставляется в упаковке со всем, что мы перейдем сюда, но этот пост объяснит, что происходит и как вы можете катить собственную версию загрузки и анализатора.
Проект репо: https://github.com/drewdahlman/hebless-wordpress Плагин: https://github.com/drewdahlman/wp-eakless
вступление
Хорошо – теперь давайте немного поговорим о целях этого проекта.
Безопасность : Поскольку мы не будем использовать WordPress в традиционном смысле, мы можем скрыть все это в некоторой аутентификации или даже просто держать проект вместе с дампами базы данных на GitHub, и когда изменений необходимы, вы можете раскрутить проект локально и публиковать.
Скорость : Поскольку мы публикуем статические файлы на S3, единственное время, у нас нагрузка в нашу базу данных, является при публикации контента и внесения изменений, выполняя это наше приложение, просто сделает один запрос, или мы могли разделить его и загружать, как нам нужно который всегда будет делать приложение быстрее.
Еще один способ, которым мы могли бы ускорить вещи, состоит в том, чтобы сделать боковую рендеринг сервера и кэш или файл данных, который снова увеличивает нашу скорость доставки.
Охладить, давайте сделаем безголовую WordPress.
Обратите внимание, что пример проекта поставляется с файлом базы данных, который автоматически настроит все для вас всех следующих вещей, но не стесняйтесь игрушкой с ним. Однако вам нужно предоставить свои собственные учетные данные AWS для загрузки на работу.
Настраивать
Первое, что мы хотим сделать, это раскрутить наш экземпляр WordPress. Для этого я использую пример репо, но вы можете сделать это самостоятельно. Как только мы будем работать, мы захочем установить наши плагины. Для этого примера я использую:
Передовые пользовательские поля Pro Пользовательские типы постов Amazon Web Services Amazon S3 и Cloudfront WP без головы
С помощью этих плагинов мы готовы катиться.
Первое, что мы хотим сделать, это установить AWS и наше ведро S3. Перейдите на страницу настроек AWS и поместите свои учетные данные.
После того, как это готов катиться, давайте настроим ваше ведро.
Как только это установить, давайте настроим некоторые типы постов и некоторые пользовательские поля. Для этого примера давайте сделаем пользовательский тип TV-шоу поста.
Cool Теперь давайте сделаем какое-то нестандартное поле: имя, обложка, о, о ретрансляции персонажей с именем и фото.
Хорошо – теперь, когда у нас есть наши поля и типы постов, следующая вещь, которую нужно сделать, это ввести какой-то контент.
Итак, с созданным постом, теперь давайте на самом деле публикуем и посмотрим, как это работает. На плагине «Опубликовать сайт» есть страница содержимого, в которой мы можем настроить файлы, которые мы будем публиковать и как они структурированы.
Настройка содержимого в том, где файлы должны быть загружены в ведро, мы настроили ранее, а затем даваем имя на наш файл данных, а также выбирая сообщения, страницы, носители, которые мы хотим.
После этого это так же легко, как и экономит и нажимающий «опубликовать постановку» или «публиковать продукцию».
Борьси! Успех! Вы должны увидеть что-то вроде этого Отказ
Итак, давайте проверим данные.
Это простой пример, но вы можете, чтобы ваши проекты были еще больше данных. Обратите внимание на несколько аккуратных вещей, происходящих здесь. Мы получаем данные RAW WordPress о слизке и таковом, но мы также получаем все наши поля ACF, а также объекты изображения, и если мы хотели, чтобы связанные сообщения или галереи – все, что вы хотите создать!
Как это работает?
Код
Круто, так что теперь у нас есть это все работает. Но как это работает? И как вы можете создать что-то похожее со своими собственными модификациями для публикации? Иногда вы можете не захотеть ни одного из данных Worl WordPress, может быть, просто слизняк и идентификатор.
Давайте проверим плагин WP-безголовый. Я сделал это плагином, потому что легче управлять жизненным циклом крючков, но также поддерживать идею, что мы можем держать все, что живет на своем собственном. Может быть, вы хотите по-прежнему использовать традиционную тему, но и имейте это как опцию.
Drewdahlman/wp-useless WP-udverless – простой плагин для публикации статических файлов JSON из WordPress для безголовых CMS. github.com.
Проверка кода, это все довольно быстро. Плагин приятный, потому что он проверяет зависимости и устанавливает начальную страницу публикации с помощью Essentials, чтобы облегчить. Вы можете полностью бросить свою собственную версию этого, если вы хотите другие варианты или более изысканные варианты.
Аккуратная вещь здесь тоже устанавливает среды, поэтому мы можем иметь постановку – filename.json и production-filename.json.
Там, где все интересны, составляет около линии 134, где у нас есть рекурсивная функция, которая анализирует пост.
Это называется нашей функцией публикации, которая циклал по полю содержания на нашем публикации настроек сайта.
Заворачиваясь над каждым из наших потенциальных ведер содержимого – а также посты внутри тех – мы называем пост разбора, который циклирует каждое поле из WordPress, а затем проверяет наличие полей ACF.
Это имеет возможность пройти один уровень глубокой с точки зрения полей отношений. (Это в основном связано с тем, что связанный пост может ссылаться на этот пост, который будет продолжаться навсегда вложенным и связанным.)
Некоторые другие вещи здесь: Мы создаем случайное имя для нашего файла и сохраняя его локально перед загрузкой. Если это удается, мы удалите случайное каталог и файл, и сайт публикуется.
Загрузчик также также прямой вперед, он использует плагины AWS, которые мы настроили ранее для определения ковша назначения. Обратите внимание, что вы можете абсолютно добавить много языки для этих публикуемых, а также добавив в параметра, чтобы проверить WPML, если вы используете это и добавляете что-то постановку ES-FileName.json или что-то.
Загрузчик получает имя файла, файл TEMP и конечный пункт назначения. Это проверяет наши плагины и загружается на S3.
Теперь, когда это все настройки и работа, вы можете потреблять файл S3 в любом месте! Способы, которыми я использовал эту настройку, устанавливает установку WordPress на сервере под поддоменом с помощью аутентификации перед входом в систему, как https://admin.example.com Отказ Это снова сохраняет WordPress скрытую из мира в целом и добавляет слой безопасности к вашему приложению.
Вы можете даже иметь другое приложение, живущее на вашем сервере, который потребляется от S3 и оказывает серверид. Преимущества всего этого является лучшая безопасность, больше вариантов потребления контента и более низких серверных нагрузок.
Другой вариант, который вы можете предпринять, – это сделать дамп базы данных после изготовления редактирования и сохранить, что в Github Repo и позвольте членам команды выдвигают раскрутку на сайт вносить изменения и публиковать. Опять же, сохраняя вещи безопасными без беспокойства о любых уязвимых.
Снова проверьте плагин на GitHub и пример проекта, чтобы увидеть, как это работает!
Drewdahlman/wp-useless WP-udverless – простой плагин для публикации статических файлов JSON из WordPress для безголовых CMS. github.com.