Преобразование сайта во многоузловой подсайт действительно может проверить уровень вашего терпения, особенно если вы не знакомы с мультисайтовой структурой. Ранее мы показали, как извлечь подсайт из многоузловой сети. Это руководство проведет вас шаг за шагом через преобразование одного сайта на WordPress в мультисайтовый подсайт с помощью инструментов WP-CLI и Bash.
Преобразование из одного сайта на WordPress в подсайт с помощью WP-CLI и Bash
В этом гипотетическом примере единственный сайт guides.andreyex.ru хранится по пути
/var/www/guides.andreyex.ru
Мы хотим преобразовать один сайт в подсайт с путем andreyex.ru
/var/www/andreyex.ru
Создайте временную папку для хранения одного сайта
mkdir -p /tmp/andreyex.ru/
Подготовка мультисайта для нового подсайта
Введите корень мультисайта, как правило, по тому же пути, не забудьте изменить свой многоузловой путь (andreyex.ru)
cd /var/www/andreyex.ru
Перед тем как получить список всех подсайтов, здесь основная структура папок
Информация | 1 субсайт | Больше одного субсайта |
---|---|---|
blog_id | 1 | 2 |
Префикс базы данных | wpb_ |
wpb_2_ |
Папка плагинов | wp-content/plugins | wp-content/plugins |
Папка темы | wp-content/themes | wp-content/themes |
Папка Uploads | wp-content/uploads | wp-content/uploads/sites/2/ |
Создание нового дочернего узла с помощью WP-CLI: https://developer.wordpress.org/cli/commands/site/create/
wp site create --slug=guides
Вы получите этот форматированный вывод ниже, который обеспечивает критическую информацию для преобразования одного сайта на WordPress в Подсайт.
Site 2 created: http://guides.andreyex.ru
Получить отображения информации о вашей мультисайтовой установке
wp site list
blog_id = 2, префикс базы данных состоит из значения url и поддомена guides.andreyex.ru
+---------+------------------------------------------+---------------------+---------------------+ | blog_id | url | last_updated | registered | +---------+------------------------------------------+---------------------+---------------------+ | 1 | http://andreyex.ru/ | 2016-11-23 08:12:34 | 2016-11-29 15:12:43 | | 2 | http://guides.andreyex.ru/ | 2016-11-28 12:21:33 | 2016-11-29 15:13:55 | +---------+------------------------------------------+---------------------+---------------------+
Собираем вместе полный префикс базы данных для нового подсайта, wpb_2_
Извлечение базы данных из исходного сайта и преобразование в подсайт
WP-CLI позволяет экспортировать таблицы базы данных специфичные для каждого субсайта, имитируя запрос из URL.
Введите установку сайта, в примере здесь /var/www/guides.andreyex.ru
cd /var/www/guides.andreyex.ru wp db export --skip-plugins --skip-themes /tmp/singlesite.sql --allow-root
Получить префикс базы данных WordPress с сайта wp-config.php с помощью grep
grep "table_prefix" wp-config.php
Вот wpb_ – это префикс базы данных
$table_prefix = 'wpb_';
В случае, если ваш мультисайт использует другой префикс базы данных убедитесь, чтобы получить его
grep "table_prefix" /var/www/andreyex.ru/wp-config.php
Приставка базы данных подсайта состоит из мультисайтового префикса wpb_ и blog_id (идентификатора дочернего сайта) 2 для andreyex.ru дочернего мультисайта в guides.andreyex.ru.
Команда sed заменит имена таблиц базы данных одного префикса сайта с префиксом мультисайта, а затем blog_id создать новый файл .sql
sed "s#wpb_#wbp_2_#g" /tmp/singlesite.sql > /tmp/guides-subsite.sql
При копировании базы данных – независимо от вашего blog_id- в удаленном месте вы можете использовать gzip, для уменьшения объема данных.
gzip /tmp/andreyex.ru/guides-subsite.sql -c > /tmp/andreyex.ru/guides-subsite.sql.gz
Упаковка папки wp-content в WordPress
Нам нужно сжать эти папки и извлечь их в новую мультисайтовой установку
- Плагины WordPress
- Темы WordPress
- Загрузка wp-content в WordPress, которая содержит изображения, видео и т.д. для нового подсайта
Сжатие плагинов осуществляется из корневой папки мультисайта andreyex.ru
tar -czf /tmp/andreyex.ru/guides-plugins.tar.gz -C /var/www/guides.andreyex.ru/wp-content/plugins/
Кроме того, сжатие папки themes делается из корневой папки andreyex.ru
tar -czf /tmp/andreyex.ru/guides-themes.tar.gz -C /var/www/guides.andreyex.ru/wp-content/themes/
Папка загрузки wp-content может быть упакована с помощью этой команды tar
tar -czf /tmp/andreyex.ru/guides-uploads.tar.gz -C /var/www/guides.andreyex.ru/wp-content/uploads/
Теперь у вас есть 3 архивных файла, содержащих необходимые компоненты для вашего мультисайтового подузела на WordPress.
- /tmp/andreyex.ru/guides-plugins.tar.gz
- /tmp/andreyex.ru/guides-themes.tar.gz
- /tmp/andreyex.ru/guides-uploads.tar.gz
База данные имеет 2 SQL файла, сжатый и несжатый.
- /tmp/andreyex.ru/guides-subsite.sql
- /tmp/andreyex.ru/guides-subsite.sql.gz
Эти архивы будут извлечены в одном месте в следующем разделе.
Восстановление преобразованного одного сайта на подсайт
Нам необходимо выполнить следующие задачи, чтобы сделать преобразование сайта в мультисайтовый подсайт
- Импорт базы данных WordPress с одного сайта на подсайт
- Извлечение архива wp-content с одного сайта в подсайт
- Фиксирование разрешений при необходимости
Импорт базы данных WordPress из единого сайта в подсайт
Введите мультисайтовую установку с WordPress файлами, здесь andreyex.ru.
cd /var/www/andreyex.ru
Импорт база данных для подсайта и импортирование ее в WordPress
wp db import /tmp/andreyex.ru/guides-subsite.sql --url=guides.andreyex.ru
Извлечение wp-content в подсайт
Распакуйте themes.tar.gz в свой новый сайт
tar -xf /tmp/andreyex.ru/guides-themes.tar.gz -C /var/www/andreyex.ru/wp-content/themes/
Затем извлечь plugins.tar.gz на свой сайт
tar -xf /tmp/andreyex.ru/guides-plugins.tar.gz -C /var/www/andreyex.ru/wp-content/plugins/
И, наконец, извлечь uploads.tar.gz на свой сайт
Папка загрузки wp-content является специфичной для подсайта с использованием 2 в качестве blog_id (идентификатор дочернего сайта) для 2 подпапок в папке uploads/sites
tar -xf /tmp/andreyex.ru/guides-uploads.tar.gz -C /var/www/andreyex.ru/wp-content/uploads/sites/2/
Фиксирование разрешений, если user и group не владелец www-data, изменить их на правильные значения.
sudo chown -R www-data:www-data /var/www/andreyex.ru sudo find /var/www/andreyex.ru -type f -exec chmod 644 {} + sudo find /var/www/andreyex.ru -type d -exec chmod 755 {} +