ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Преобразование из одного сайта на WordPress в подсайт с помощью WP-CLI и Bash

Преобразование из одного сайта на WordPress во многоузловой сайт с помощью WP-CLI и Bash

Преобразование сайта во многоузловой подсайт действительно может проверить уровень вашего терпения, особенно если вы не знакомы с мультисайтовой структурой. Ранее мы показали, как извлечь подсайт из многоузловой сети. Это руководство проведет вас шаг за шагом через преобразование одного сайта на 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

Нам нужно сжать эти папки и извлечь их в новую мультисайтовой установку

Сжатие плагинов осуществляется из корневой папки мультисайта 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.

База данные имеет 2 SQL файла, сжатый и несжатый.

Эти архивы будут извлечены в одном месте в следующем разделе.

Восстановление преобразованного одного сайта на подсайт

Нам необходимо выполнить следующие задачи, чтобы сделать преобразование сайта в мультисайтовый подсайт

Импорт базы данных 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 {} +

 

Exit mobile version