При создании сети сайтов в режиме Multisite иногда нужно использовать одну и ту же галерею плагина NextGen Gallery на нескольких сайтах. Зачастую бывает, что сайты-клоны отличаются от основного сайта (назову его сайтом-донором) только на несколько строчек в нескольких страницах (например, адрес регионального представительства). Один из самых популярных плагинов для создания галерей изображений — NextGen Gallery. Но разработчиками данного плагина не предусмотрено стандартных средств для использования одних галерей на разных сайтах в сети Multisite. Конечно, плагин работает в режиме Multisite. На каждом новом сайте предлагается создать новую галерею, заново загружать изображения, указывать настройки, создавать подписи и т.д. Галереи бывают разные, бывают очень большие и их бывает много, поэтому выполнять рутинную работу в ручном режиме — не выход из ситуации.
При создании дубликата сайта WP MU (например, при помощи плагина MultiSite Clone Duplicator) в БД WP создаются таблицы, куда копируется содержимое таблиц сайта-донора. Названия таблиц начинаются, например, с wp_23, где 23 — id сайта-дубликата. Для плагина NextGen Gallery создаются таблицы например, wp_23_ngg_pictures и wp_23_ngg_gallery — это таблицы в которых плагин хранит информацию о загруженных файлах и созданных на их основе галереях для конкретного сайта сети. Для каждого нового сайта-дубликата они создаются пустыми. Для того, чтобы в сайте-дубликате были доступны галереи сайта-донора достаточно скопировать содержимое таблиц. Это можно сделать следующим образом в phpmyadmin или напрямую из консоли mysql:
1 2 |
REPLACE INTO `wp_23_ngg_gallery` SELECT * FROM `wp_ngg_gallery`; REPLACE INTO `wp_23_ngg_pictures` SELECT * FROM `wp_ngg_pictures`; |
Надо помнить, что этот метод — это только копирование галерей. При внесении изменений в галерею или добавлении новых изображений на основном сайте изменения не затронут сайт-дубликат. Для того, чтобы изменения вступили в силу — эту операцию придётся повторить столько раз, сколько существует дочерних сайтов использующих эту/эти галереи. Для того, чтобы изменения в дочерних таблицах происходили автоматически (сразу после внесения изменений в основную таблицу) следует создать mysql триггер.
Свежие комментарии