Вопрос или проблема
Я ищу дополнительную информацию о му сайте (--url
), когда пытаюсь экспортировать с удаленного сервера в мою локальную тестовую среду.
Одним из требований для миграции является существующий blog_id
и префикс
базы данных. Используя их, я могу выполнить поиск/замену в файле exported.sql
для <wp-prefix>_<blog_id>_
, чтобы вставить его в правильную таблицу базы данных при импорте.
Поиск и замена
printf "%s" "$(sed "s/$blog_id_old/$blog_id_new/g" <<< "$(gunzip < $input)")" > $output;
Существует ли лучший способ получить blog_id
здесь? И могу ли я получить больше информации, например, префикс
таблицы, без выполнения eval
?
Blog ID
blog_id=$(wp eval --url=http://domain.com/site-name/ 'echo get_current_blog_id();');
DB Prefix
prefix=$(wp eval --url=http://domain.com/site-name/ 'global $wpdb; echo $wpdb->prefix;')
Спасибо.
Вы можете использовать команду wp db prefix с аргументом –url, чтобы определить префикс для этого конкретного сайта. Если вам все еще нужно определить URL, возможно, стоит рассмотреть возможность использования команды wp site list.
Ответ или решение
Вопрос касается использования WP-CLI для получения информации о сайте WordPress в многосайтовой установке (Multisite) с целью упрощения миграции базы данных из удаленной среды на локальную. Основными предметами интереса являются получение blog_id
и префикса базы данных, что позволит корректно встроить экспортированные данные при импорте. Рассмотрим несколько подходов к решению этой задачи.
Получение blog_id
Для получения идентификатора блога (blog_id
) в многосайтовой установке WordPress из CLI, вы можете использовать команду:
blog_id=$(wp eval --url=http://domain.com/site-name/ 'echo get_current_blog_id();')
Этот метод применяет команду eval
, которая выполняет PHP-код и может быть небезопасной. Однако в случае, если безопасность вашего окружения контролируется, это остается одним из простейших способов получения blog_id
.
Получение префикса таблицы базы данных
Для извлечения префикса базы данных также можно использовать команду eval
:
prefix=$(wp eval --url=http://domain.com/site-name/ 'global $wpdb; echo $wpdb->prefix;')
Тем не менее, более безопасным и стандартным способом будет использование команды WP-CLI wp db prefix
, которая специально предназначена для этой цели:
prefix=$(wp db prefix --url=http://domain.com/site-name/)
Эта команда безопасна и не требует выполнения произвольного PHP-кода, что делает ее предпочтительной.
Использование WP-CLI для получения дополнительной информации
Если вам необходимо определить URL-адреса сайтов в установке WordPress Multisite, рассмотрите возможность использования следующей команды, которая создаст список всех сайтов:
wp site list --fields=url
Этот подход позволяет не только избежать прямого доступа к базе данных, но и предоставляет возможность более гибкой работы с множеством сайтов в сети.
Заключение
При миграции базы данных из удаленной среды на локальную очень важны корректные значения blog_id
и префикса таблицы. Использование команд WP-CLI wp eval
подходит для быстрого получения информации, но в целях безопасности лучше использовать встроенные команды WP-CLI вроде wp db prefix
. Эти методы позволяют автоматизировать задачи и снизить риск ошибок при переносе данных.
При выборе стратегии учитывайте уровень безопасности на вашем сервере и старайтесь использовать надежные методы для извлечения системной информации. Если возможно, избегайте выполнения PHP-кода непосредственно через консоль в продуктивных средах.