serileştirilmiş seçenekleri programlı olarak nasıl güncelleyebilirim?


15

Güncelleme eklentisi seçeneklerini otomatikleştirmek istiyorum. Çok fazla yinelediğim bazı şeyler var.

İle wp-cli Ben bu gibi basit seçenekler güncelleyebilirsiniz biliyorum:

php wp-cli.phar option update blog_public 1

Ancak, bazı eklenti seçenekleri seçeneklerini serileştirilmiş bir dizeye kaydeder.

Wp_options içindeki serileştirilmiş option_value örneği:

a:9:{s:4:"from";s:21:"xx@xxx.com";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:"xx@xxx.com";s:8:"password";s:13:"xxx";s:10:"deactivate";s:0:"";}

Bu seçenekler nasıl güncellenir?

Yanıtlar:


14

Kendim çözdüm, bu nasıl yapılır:

Serileştirilmiş seçenekleri programlı olarak güncellemek istiyorsanız:

wp-cli indir wp-cli.org gelen

Kullandığınız seçenekler için "anahtar" ın ne olduğunu öğrenin. Bu örnekte anahtar "wp_smtp_options" şeklindedir.

Anahtarı bilmiyorsanız, wp_options tablosunda arama yapın ve anlamaya çalışın.

Misal: select * from wp_options where option_name like '%smtp%'

Artık anahtarınızı bildiğinize göre, yapılandırmanızı json dosyasına kaydetmek için bu komutu kullanın:

php wp-cli.phar option get wp_smtp_options --format=json > my_saved_config.txt

Bu yapılandırmanın geri yüklenmesini istediğinizde bu komutu kullanın

php wp-cli.phar option update wp_smtp_options --format=json < my_saved_config.txt

Notlar:

  • WAMPSERVER64'te çalışıyor
  • ñ á é gibi unicode karakterlerle çalışır
  • okunabilirlik için json dosyanıza dolgu ve boşluklarla sahip olabilirsiniz

Bu amaçla bir ara dosya kullanmak zorunda kalmamak harika olurdu. Bunu nasıl yapacağını bilen var mı?


1
Teşekkürler - harika iş. Herhangi bir kişi harici dosyalar gerektirmeden bir komut dosyası yazmaya çalışıyorsa, json'u option updatetek tırnak işaretleri arasına koyabilirsiniz . 61. satırdaki uygulamamı burada görebilirsiniz: gist.github.com/squarecandy/cfdead55ca1d84496044
squarecandy

"bir astar" için cevabımı gör
Laurent

13

WP-CLI, WordPress'te serileştirilmiş verilere erişmek için pluck ve patch komutlarını tanıtan 1.4.0 güncellemesinden sonra kesinlikle bunun cevabıdır .

Pluck komutu serileştirilmiş değerleri yakalamak için bu biçimi alır

wp option pluck <key> <key-name>

Örneğin active_plugins seçeneğinde ilk öğeyi alabilirsiniz

wp option pluck active_plugins 0

Patch komutu, serileştirilmiş değerleri (eylem) eklemek, güncellemek veya kaldırmak için bu biçimi alır

wp option patch <action> <key> <key-name> <value>

İlk active_plugin'i silmek şu şekilde görünecektir:

wp option patch delete active_plugins 0

Aynı pluck ve yama postmeta gibi diğer komutlar için de eklendi, şimdi WordPress serileştirilmiş verileri programlı olarak güncellemek için bazı harika döngüler yapmak için WP-CLI'yi kullanabilirsiniz


2
Bu kabul edilen cevap olmalı.
Evan Mattson

6

Nasıl bir bash betiği yapmak:

wp option get wp_smtp_options --format=json | php -r '
$var = json_decode( fgets(STDIN) );
$var->from = "email@email.com";
$var->fromname = "me";
print json_encode($var);
' | wp option set wp_smtp_options --format=json

0

WP-CLI komutu optionkullanımı WordPress' yapar Seçenekler API işini yapmak. Örneğin, alt komutla update, doğru bir giriş, bir verildiğinde, arraybunu WP-CLI ile yapabilmeniz gerekir. Bu --formatparametreyi kullanmalısınız , aynı aldığınızdan emin olmak için alt komut jsoniçin genellikle iyi çalışır update. Not, getdaha sonra diğer / yeni kurulumlarda kaydedebileceğiniz, değiştirebileceğiniz ve / veya aktarabileceğiniz / ayarlayabileceğiniz Seçenekler API'sı kullanıldığında alt komutun size serileştirilmemiş seçeneği döndürmesi gerekir.


Bu işe yaramaz: wp option get wp_smtp_options > savedconfiguration.txt wp option update wp_smtp_options < savedconfiguration.txt İlk komut dizi olarak kaydedilir, ancak ikincisi dizi kabul etmez. Sanırım önce serileştirmeliyim, nasıl yapılacağını biliyor musun?
lalo

formatParametreyi kullanmaya çalıştınız mı? @lalo düzenlemek: sadece gördüm onu ​​anladım ..
Nicolai

wp-cli.org'da formatparametre için hangi seçeneklerin mevcut olduğunu söylemez . Cevabımda yazdığım gibi bir ara dosya kullanmak zorunda kalmanın mümkün olup olmadığını merak ediyorum.
lalo

formatBazen (sub-) komutundan (sub-) komutuna farklılık gösteren parametre hakkında tam bir genel bakış elde etmek için kaynağa bakmanız gerekir . Elbette, örneğin bir bash betiği yazıp verileri bir değişkene depolamak mümkündür. @lalo
Nicolai

kaynak kod burada, ancak --formatmevcut seçeneklerin nerede olduğunu anlamadım : github.com/wp-cli/wp-cli/blob/master/php/commands/…
lalo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.