问题描述

我想自动更新插件选项。有一些我重复的事情。

使用 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。