Chcę zautomatyzować aktualizację opcji wtyczek. Są rzeczy, które często powtarzam.
Dzięki wp-cli wiem, że mogę aktualizować proste opcje takie jak to:
php wp-cli.phar option update blog_public 1
Jednak niektóre opcje wtyczek zapisują swoje opcje w serializowanym ciągu.
Przykład zserializowanej wartości_opcji w wp_options:
a:9:{s:4:"from";s:21:"[email protected]";s:8:"fromname";s:51:"xxx";s:4:"host";s:13:"smtp.xx.com";s:10:"smtpsecure";s:3:"ssl";s:4:"port";s:3:"465";s:8:"smtpauth";s:3:"yes";s:8:"username";s:21:"[email protected]";s:8:"password";s:13:"xxx";s:10:"deactivate";s:0:"";}
Jak zaktualizować te opcje?
option update
wierszu jako pojedyncze cudzysłowy. Zobacz moją implementację w linii 61 tutaj: gist.github.com/squarecandy/cfdead55ca1d84496044WP-CLI jest zdecydowanie odpowiedzią na to pytanie po aktualizacji do wersji 1.4.0, która wprowadziła komendy „ pluck” i „ patch” do uzyskiwania dostępu do szeregowanych danych w WordPress.
Polecenie typu pluck przyjmuje ten format w celu przechwytywania wartości zserializowanych
Na przykład w opcji active_plugins możesz pobrać pierwszy przedmiot
Polecenie patch przyjmuje ten format do wstawiania, aktualizowania lub usuwania wartości zserializowanych (działanie)
Usunięcie pierwszej active_plugin wyglądałoby tak
Ta sama poprawka i łatka zostały również dodane dla innych poleceń, takich jak postmeta, możesz teraz użyć WP-CLI, aby zrobić fajne pętle do programowej aktualizacji danych serializowanych WordPress
źródło
Oto jak to zrobić w skrypcie bash:
źródło
WP-CLI polecenie
option
używa WordPress' Opcje API aby wykonywać swoje zadania. Biorąc pod uwagę, np. Z podkomendąupdate
, prawidłowe wejście,array
powinieneś być w stanie to zrobić za pomocą WP-CLI. Powinieneś skorzystać z--format
parametru tutaj, aby upewnić się, że otrzymasz to samo,json
działa ogólnie dobrze dlaupdate
podkomendy. Uwaga: podkomendaget
powinna zwrócić opcję niezserializowaną, ponieważ używany jest interfejs API opcji, który można następnie zapisać, zmodyfikować i / lub przenieść / skonfigurować w innych / nowych instalacjach.źródło
wp option get wp_smtp_options > savedconfiguration.txt
wp option update wp_smtp_options < savedconfiguration.txt
Pierwsze polecenie zapisuje jako tablicę, ale drugie nie przyjmuje tablicy. Myślę, że powinienem najpierw serializować, czy wiesz jak to zrobić?format
parametr? @lalo edit: właśnie widziałem, że to rozgryzłeś ...format
parametru. Zastanawiam się, czy byłoby to możliwe bez konieczności używania pliku pośredniego, jak napisałem w odpowiedzi.format
parametru, który czasami różni się od polecenia (pod-) do (pod-) polecenia. Z pewnością jest to możliwe, na przykład poprzez napisanie skryptu bash i przechowywanie danych w zmiennej. @lalo--format
dostępne opcje: github.com/wp-cli/wp-cli/blob/master/php/commands/…