Я использую сценарии wp-cli и bash для изменения записей базы данных WordPress home и siteurl на нескольких веб-сайтах и хочу универсально автоматизировать это с помощью этого сценария. Обычно я просто меняю его с помощью wp option set home <newurl>
или просто глобального wp search-replace <oldurl> <newurl> --parameter
, и мне нужно запустить дополнительную команду wp elementor
, чтобы изменить содержимое публикации БД с помощью Elementor. Я использую первоначальный тест $URL
, чтобы определить, является ли домашний URL временным доменом (например, http://box1234.temp.domains/%7Eusername). Чтобы избежать ошибок смешанного содержимого, а также поскольку большинство сайтов используют плагин Elementor, я хочу также настроить тест, который будет запускаться, и дополнительный поиск-замена с использованием родного Elementor wp-cli wp elementor replace-urls <oldurl> <newurl>
, но нужно запускать команду только в том случае, если Elementor установлен и активен. Моя дилемма заключается в том, что я собираю oldurl и newurl из переменной, установленной ранее в сценарии, которая может быть или не быть временным доменным именем, установленным хостом, или просто версией http:// домена, и мне нужно вложить дополнительный оператор if-then-else, чтобы заставить эту команду wp elementor работать правильно, но я не уверен, как заставить ее работать.
read -ep "Enter the domain: " DOMAINCOM ;
URL=$(echo $(wp option get home | grep '~'));
if [ $URL] ;
then
wp search-replace $url https://$DOMAINCOM;
wp elementor replace-urls $URL https://$DOMAINCOM;
else
wp search-replace http://$DOMAINCOM https://$DOMAINCOM ;
wp elementor replace-urls http://$DOMAINCOM https://$DOMAINCOM
fi
Мне нужно добавить приведенный ниже тест к приведенному выше сценарию, чтобы заменить * команды wp elementor в операторах then и else, чтобы учесть, является ли домашний URL временным доменом или нет.
ELEMENTORCHECK=$(wp plugin status elementor | grep -i status | cut -d: -f2);
if [ $ELEMENTORCHECK= Active ] ;
then
wp elementor replace-urls $url https://$DOMAINCOM;
else
echo "Elementor isn't installed" | grep Elementor ;
fi ;
Я не думаю, что выполнение if [ $URL ] && [ $ELEMENTORCHECK ]
или if [ $URL ] || [ $ELEMENTORCHECK ]
сработает, и я не уверен, как вложить тесты с помощью оператора elif, не испортив весь оператор, и мне нужны некоторые рекомендации. Надеюсь, этот вопрос имеет смысл.