Транслируем материалы на разные WordPress-сайты из одной сборки
Хотели бы вы иметь возможность создавать неограниченное число разных WordPress-сайтов в пределах одной сборки? В таком случае вам понадобится настроенный плагин editflow и набор плагинов (перечисленных ниже), установленных в отдельной сборке WordPress для управления контентом.
Спешим представить вам WordPress Content Hub – решение для трансляции контента в любой сборке WordPress, будь то мультисайты или блоги WordPress.com. Давайте приступим к его изучению!
Модель «Hub-and-spokes» (ось и спицы)
Все системы управления контентом, начиная с простейших блоговых платформ и заканчивая комплексными корпоративными приложениями, выполняют две главных задачи: управление контентом, которое осуществляется путем предложения инструментов для создания, просмотра и, в конечном счете, публикации контента; а также доставку контента, т.е. фактическую передачу контента в руки пользователей.
Решение Content Hub разделяет эти две функции, используя модель «hub-and-spokes» (веерную структуру). В этой веерной структуре «ось» (hub) – это отдельный WordPress сайт, выделенный под управление контентом, который передает контент одной или нескольким «спицам» (spokes), обрабатывающим доставку контента пользователям.
Есть очень много причин, по которым вы можете выбрать Content Hub:
1. У вас есть отдельные сайты для посетителей с мобильных/планшетных устройств.
2. Вы управляете сетью сайтов в пределах одной ниши и часто ведете кросспостинг контента.
3. У вас есть команда авторов, которые пишут контент для любой части вашей сети.
4. У вас есть испробованный и протестированный набор администраторских плагинов, управляющих вашим процессом публикации, который необходимо установить и поддерживать на каждом новом, запущенном вами сайте.
5. Вам требуется сайт для проверки – существующий за пределами вашего основного сайта, на котором можно создавать, тестировать и просматривать контент.
Преимущества веерной модели
Единое место управления контентом
С помощью Content Hub весь ваш контент будет обслуживаться в одном месте. Это значительно облегчает управление пользовательских аккаунтов; к тому же вы получаете возможность легко публиковать контент на разных сайтах, включая социальные сети.
Простая установка плагинов и тем
Вам больше не понадобится устанавливать смесь администраторских и фронтэнд-плагинов, которые могут приводить к различным конфликтам. «Ось» требует плагины, предназначенные для создания и управления контентом; «спицы» требуют плагинов и тем, необходимых для доставки контента. Конечный результат является более удобным и простым для поддержки WordPress-сайтов.
Безопасность
Ось может быть жестко заблокирована, поскольку она не требует публичного доступа. Вы можете ограничить вход на сайт только для зарегистрированных пользователей, только для определенных IP-адресов, защитить свой сайт с помощью SSL. Вы можете даже хостить ось локально, открывая для нее путь выхода в интернет.
Передача данных на многочисленные сайты с помощью одного действия (как и удаление данных)
Передача записи на разные сайты осуществляется с помощью простого выбора нескольких чекбоксов. Больше не нужно вырезать с одного сайта и вставлять на другой. Перемещение записи в корзину оси ведет к тому, что эта запись будет перенесена в корзину на всех спицах.
Публикация в социальных сетях
Достаточно установить на ось любой из многочисленных плагинов для социального постинга, чтобы публикация в социальные сети осуществлялась также централизованно.
Использование CDN для изображений и прикреплений
В веерной модели все изображения, а также другие прикрепления не передаются в среду каждой спицы – это бесполезное дублирование. По умолчанию все изображения, видео, аудио и документы сети загружаются на ось и выдаются с нее, что, в зависимости от количества и размера файлов, может нагрузить вашу хостинговую платформу Content Hub. Это также означает, что вы не сможете локально размещать ваш Content Hub.
Чтобы поддержать максимальную гибкость и надежность, улучшить операции бэкапа и восстановления, сделать ваше решение простым для обслуживания, вы должны использовать сеть доставки (распределения) контента CDN для размещения ваших изображений и других компонентов.
Настройка CDN выходит за рамки этой статьи, однако в нашем блоге достаточно качественных материалов по данной теме.
Коротко про API
Есть два набора API, которые могут усилить веерный подход: XML-RPC API и основанный на JSON REST API. Первый набор, XML-RPC, поддерживается исключительно автономными сайтами и сайтами на WordPress.com. Набор REST API встроен в WordPress.com, однако на автономных сайтах потребуется установить либо JetPack, либо экспериментальный плагин.
Набор XML-RPC API является самым простым для использования; таким образом, именно его мы и будем использовать в нашей статье. Если вы предпочитаете использовать REST API, здесь размещена хорошая документация, как настроить соответствующий плагин. Помните, что для применения REST API вы должны создать приложение в WordPress.com, и оно должно видеть ось, что помешает вам расположить ось локально.
Настройка оси
1. Выберите сайт, который будет являться осью.
Несмотря на то что для оси вы можете использовать уже существующий сайт, лучше всего отвести под нее отдельную чистую сборку WordPress. Если вы хотите получить ось с уже существующим контентом, то в таком случае вы всегда можете импортировать контент с других сайтов, используя средства импорта WordPress.
2. Установите и настройте плагин Push Syndication
Push syndication – это ключевой плагин, который обеспечивает передачу контента к спицам. Как только плагин будет установлен, настройте плагин в разделе Параметры – Push Syndicate Settings.
Выберите типы записей, которые вы хотите транслировать (кроме прикреплений) и включите настройку Delete Pushed Posts.
API Token Configuration требуется только при использовании REST API, поэтому вы можете пропустить данный пункт.
После установки плагина вам понадобится добавить ключ трансляции в wp-config файл вашей оси. Откройте файл в предпочитаемом текстовом редакторе и добавьте в него следующую строку где-нибудь над строкой /* That’s all, stop editing! Happy blogging. */
define('PUSH_SYNDICATION_KEY', 'put-your-unqiue-syndication-key-here');
3. Создайте группы сайтов.
Плагин Push Syndication передает контент выбранным группам сайтов. Если у вас нет двух очень похожих сайтов, то вероятнее всего каждая группа будет содержать только один сайт.
Группы создаются через опцию Sites в меню администратора.
4. Настройте структуру постоянных ссылок.
Чтобы убедиться в том, что внутренние ссылки работают, нужно выполнить два требования, которые относятся к структуре постоянных ссылок:
Не используйте ID! Они будут различаться на вашей оси и ваших спицах. Любые ссылки, содержащие ID, скорее всего приведут к неожиданным результатам.
Будьте последовательными! Ось и ваши спицы должны иметь одинаковую структуру постоянных ссылок. Если какая-либо из ваших спиц использует структуру WordPress.com, тогда вы должны ориентироваться на стандарт WordPress.com «Day and name» («день и название»).
5. Создайте структуру рубрик.
Как именно вы структурируете рубрики на вашей оси, во многом зависит от того, сколько спиц вы имеете, сколько рубрик представлено на ваших сайтах, и каковы ваши личные предпочтения.
Ключевые пункты, которые нужно учесть:
1. Процесс трансляции использует названия рубрик, поэтому они должны быть на спицах теми же самыми, как и на оси.
2. Иерархия не важна
3. Если спица не может отыскать соответствующую рубрику, тогда рубрика будет создана.
4. Дополнительные рубрики с одинаковыми названиями будут проигнорированы.
5. Все это касается только структуры – рубрики не управляют трансляцией.
У вас есть три основных варианта настройки для иерархии ваших рубрик. Чтобы проиллюстрировать их, давайте предположим, что у вас есть сеть из трех спиц: одна из них – это универсальный сайт про разные компоненты WordPress, вторая – сайт конкретно про BuddyPress, и третья – сайт конкретно про мультисайты.
Первый вариант иерархии
Первый вариант иерархии заключается в том, чтобы создать рубрики верхнего уровня для каждой спицы (в нашем случае, BuddyPress, Multisite и WordPress) и затем воссоздать индивидуальную структуру рубрик для каждой спицы внутри рубрики верхнего уровня. Такой подход значительно упрощает определение предполагаемого расположения контента, однако может привести к дублированию рубрик, как это заметно с рубриками News, Plugins и Themes. Однако присвоение записи многочисленным рубрикам с одинаковыми названиями не приводит к проблемам с процессом трансляции. Такой подход может стать слишком громоздким, если спицы имеют массивную структуру рубрик.
Второй вариант иерархии
Второй вариант иерархии заключается в том, чтобы сгруппировать все общие рубрики и создать рубрику верхнего уровня только для тех спиц, у которых есть уникальные рубрики. В нашем примере News, Plugins и Themes представлены в разных спицах, и потому эти рубрики сгруппированы в общей рубрике Common. Спица WordPress имеется уникальные рубрики Hosting, Opinion и Reviews, и они представляют собой уже отдельную структуру. Это заметно сжимает структуру и упрощает ее обслуживание.
Третий вариант иерархии
Третий вариант иерархии заключается в том, чтобы удалить ссылки на спицы в целом и работать только с объединенной структурой. Это позволит получить самую лаконичную структуру – всего шесть рубрик по сравнению с пятнадцатью в первом варианте. Такую структуру проще обслуживать. Данный подход идеален для сетей, в которых спицы имеют похожую структуру.
Дополнительные плагины
Этого вполне достаточно, чтобы создать свою собственную ось, однако есть также некоторые дополнительные плагины, которые помогут вам улучшить процесс управления контентом:
ABT Relative URLs
По умолчанию WYSIWYG-редактор в WordPress вставляет абсолютные URL-адреса в контент для ссылок на разные записи и страницы, а также на медиа-файлы. Это заставит все ссылки на спицах указывать обратно на ось вместо того чтобы вести к соответствующему контенту на спицах. Плагин ABT Relative URLs решает эту проблему путем преобразования всех локальных абсолютных ссылок в относительные ссылки. Используйте этот плагин только в том случае, если вы применяете CDN для ваших медиафайлов, иначе они тоже будут все преобразованы.
Restricted Site Access
Как было сказано ранее, одно из преимуществ отделения функций от контента состоит в том, что вы можете полностью заблокировать ось. Плагин Restricted Site Access помогает ограничить доступ к оси для зарегистрированных пользователей или для определенных IP-адресов.
Category Checklist Tree
При заполнении мета-поля рубрик на экране редактирования записей стандартное поведение WordPress заключается в том, чтобы поместить любые рубрики, связанные с записью, в самый верх списка. Плагин Category Checklist Tree переписывает это поведение, подсвечивая рубрики в самой структуре. Это очень удобно, когда вы принимаете решение использовать структуру рубрик со спицами на верхнем уровне.
Главный инструмент в проектировании вашего контента. В традиционной сборке он может выступить помехой для интерфейса, однако он прекрасно подходит для оси, сфокусированной на управлении контентом.
Добавление спиц к сети
Для автономных сайтов мы должны выполнить несколько незначительных предварительных действий.
1. Создайте нового пользователя с ролью Редактора. Этот пользователь будет использоваться осью при публикации контента, потому он должен иметь полные права на публикацию материалов. Помните, что этот пользователь будет представлен как автор, если ваша тема выводит информацию об авторе в метаданных записи, поэтому дайте ему соответствующее имя.
2. Убедитесь в том, что постоянные ссылки имеют ту же самую структуру, что и на оси (вероятнее всего «Day and name»).
Добавляем сайт к оси
1. Переходим в консоль оси и щелкаем по пункту Sites в меню администратора.
2. Щелкаем по ссылке Add a site. Вводим заголовок для сайта; выбираем XMLRPC в качестве типа транспорта; вводим корневой URL для вашего сайта; вводим имя пользователя и пароль для редактора (или надлежащего пользователя wordpress.com); ставим пункт enable; выбираем соответствующую группу сайтов, после чего щелкаем по кнопке Add Site. Вы можете щелкнуть по Add New Site Group, если вам нужно создать новую группу.
Плагин попытается установить контакт с сайтом, используя URL, имя пользователя и пароль. Если все прошло хорошо, то вы получите соответствующее сообщение.
Повторите это для всех своих сайтов.
Трансляция контента
Теперь, когда вы настроили свою ось и спицы, мы можем перейти к самой интересной части: фактической трансляции контента!
Для оси откройте экран «Добавить новую запись» и создайте обычный пост. Поскольку форматы записей, миниатюры, произвольные поля и авторы не поддерживаются процессом трансляции, вы можете очистить интерфейс и убрать ненужные пункты в меню Screen Options.
Помните следующее:
- Автором будет пользователь, которого вы задали при добавлении сайта к оси
- Все изображения и прикрепления должны быть внедренными – если вы используете CDN, то они будут поставляться из этой сети, а если нет, то они будут передавать из оси (это повлияет на то, будете ли вы размещать ось локально или нет).
- Все внутренние ссылки должны быть относительными, тогда они будут работать корректно на спицах, иначе они будут ссылаться на ось. Если вы используете CDN, то вы можете сделать это автоматически при помощи плагина ABT Relative URLs. Иначе вам придется обновлять URL вручную перед публикацией.
- Рубрики будут создаваться на спицах в том случае, если они на данный момент не существуют.
- Метки передаются спицам.
Как только вы закончите набирать вашу запись, вам понадобится выбрать группы сайта в мета-поле Syndicate – этим группам будет передаваться контент.
Щелкните Save Draft, после чего нажмите Publish. Иногда записи не передаются, если они не были сначала сохранены. Если вы используете модель публикации «автор-редактор», тогда сохранение в любом случае будет являться частью вашего процесса публикации; если нет, то нужно взять себе это в привычку.
Отлично, давайте теперь перейдем к спицам и проверим их! Ваш транслированный контент уже должен появиться на них!
Удаление контента
Бонус плагина Push Syndication – он позволяет обрабатывать удаление записей, если вы активировали эту возможность на странице настроек плагина. Просто отправьте запись в корзину, и она будет удалена со всех связанных спиц.
Фактически вы должны будете поместить запись в корзину, чтобы удалить ее со спиц, поскольку простое снятие флажка в мета-поле Syndicate не дает никакого эффекта. Чтобы удалить запись с отдельной спицы, вам нужно:
1. Снять флажок с соответствующей группы сайтов.
2. Обновить запись и затем отправить ее в корзину (это удалит ее со всех спиц).
3. Переходим в корзину и восстанавливаем запись.
4. Обновляем ее (это передаст ее обратно подключенным группам сайтов).
Расширение плагина Push Syndication
Плагин Push Syndication был создан для обеспечения одностороннего, одноразового взаимодействия с WordPress API, потому его возможности по большей части базовые.
Чтобы реализовать более сложную трансляцию, которая учитывала бы миниатюры, авторов и произвольные поля (обладала бы поддержкой произвольных типов записей), нужны значительные обновления, которые разрешили бы двухстороннее, многократное взаимодействие.
К примеру, чтобы установить автора, отличающегося от редактора, нужно, чтобы ось сначала получила от спицы список ее авторов, и затем уже можно будет использовать ID автора спицы при трансляции контента. Поддержка произвольных полей требует, чтобы ось получила список произвольных полей со спицы, после чего ось может использовать уникальный ID для каждого поля в процессе трансляции.
Спицы или ось, не использующие WordPress
Фактическая гибкость веерной структуры становится очевидной, когда вы начинаете рассматривать спицы или ось как сайты, не использующие WordPress.
Любое приложение, которое может исполнять WordPress API, способно являться спицей, и любое приложение, которое может взаимодействовать с API, способно являться осью. Это означает, что вы можете смешивать и подгонять ваши приложения, менять платформы оси и спиц, не влияя на оставшуюся часть вашей сети.
Если вы предпочитаете использовать Drupal или произвольное веб-приложение для управления контентом, это прекрасно, но лишь в том случае, если они способны взаимодействовать с WordPress API.
Вытягивание контента
Как и любой WP-сайт, ось поддерживает WordPress XML-RPC API и – с помощью плагина – поддерживает REST API, поэтому контент может не только передаваться осью, но и вытягиваться самими спицами.
Наиболее популярный сценарий вытягивания контента – это спица, которая является приложением, таким как HTML5 веб-приложение или приложение, запущенное на планшете или смартфоне. Приложение использует API оси для передачи нового контента к устройству. Можно даже сделать так, чтобы устройство использовало ось (или выделенную спицу) для управления подписками или членством.
Плагин Push Syndication может иметь свои ограничения, но при объединении с CDN он обеспечивает простую и удобную технику для управления контентом на многочисленных сайтах в пределах одной WordPress-сборки.
Если вы сайты используют стандартные типы записей, и вы не возражаете против использования одного автора, возможно, вы захотите рассмотреть настройку вашей собственной контентной оси?
Источник: wpmu.org