問題描述

我想自動更新外掛選項。有一些我重複的事情。

使用 wp-cli 我知道我可以更新這樣的簡單選項:

php wp-cli.phar option update blog_public 1

但是,一些外掛選項將其選項儲存在序列化字串中。

wp_options 中的序列化 option_value 的示例:

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:"";}

如何更新這些選項?

最佳解決方案

自己解決了,這是怎麼做到的:

如果要程式設計更新序列化選項:

從 wp-cli.org 下載 wp-cli

瞭解您正在使用的選項是什麼”key” 。在這個例子中,關鍵是”wp_smtp_options”

如果您不知道金鑰,請在 wp_options 表中搜尋並嘗試找出它。

例項:select * from wp_options where option_name like '%smtp%'

現在你知道你的金鑰,使用這個命令來儲存你的配置到 json 檔案:

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

無論何時要恢復該配置,請使用此命令

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

筆記:

  • 在 WAMPSERVER64 中工作

  • 與 unicode 字元一起工作,如ñáé

  • 您可以使用填充和空格的 json 檔案,以便易讀

這樣做並不需要使用中間檔案。有誰知道該怎麼辦?

次佳解決方案

這是我如何在 bash 指令碼中做的:

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

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。