使用wp-cli,我知道我可以更新像这样的简单选项: ,某些插件选项会将其选项保存在序列化的字符串中。
wp_options中序列化option_value的示例:
php wp-cli.phar option update blog_public 1
如何更新那些选项?
#1 楼
我自己解决了该问题,这是解决方法:如果要以编程方式更新序列化选项:
从wp-cli.org下载wp-cli
找出正在使用的选项的“键”是什么。在此示例中,键为“ 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文件带有填充和空格,
不必为此使用中间文件。有人知道怎么做吗?
#2 楼
WP-CLI绝对是在更新到1.4.0之后的解决方案,它引入了用于在WordPress中访问序列化数据的pluck和patch命令。pluck命令采用这种格式来获取序列化值
wp option pluck <key> <key-name>
例如,在active_plugins选项中,您可以抓取第一项
wp option pluck active_plugins 0
patch命令采用以下格式插入,更新或删除序列化的值(操作)
wp option patch <action> <key> <key-name> <value>
删除第一个active_plugin如下所示
wp option patch delete active_plugins 0
还为其他命令(如postmeta)添加了相同的代码和补丁,您现在可以使用WP-CLI进行一些很酷的循环,以编程方式更新WordPress序列化数据
评论
这应该是公认的答案。
–埃文·马特森(Evan Mattson)
18年7月5日在8:12
#3 楼
这是我在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
#4 楼
WP-CLI命令option
确实使用WordPress的Options API来完成其工作。给定,例如使用子命令update
(正确的输入array
),您应该能够使用WP-CLI执行此操作。您应该在此处使用--format
参数,以确保获得相同的参数,对于json
子命令,update
通常可以正常工作。注意,子命令get
应该返回未序列化的选项,因为使用了Options API,然后您可以在其他/新安装中保存,修改和/或转移/设置。评论
这不起作用:wp选项获取wp_smtp_options> savedconfiguration.txt wp选项更新wp_smtp_options
– lalo
15年8月19日在18:07
您是否尝试利用format参数? @lalo编辑:刚刚看到您知道了。
–尼古拉
15年8月19日在18:24
在wp-cli.org中没有说明format参数的可用选项。我想知道是否有可能不必使用我在答案中写的中间文件。
– lalo
15年8月21日在15:40
您必须查看源代码才能获得关于format参数的完整概述,该参数有时与(子)命令与(子)命令不同。当然可以,例如通过编写bash脚本并将数据存储到变量中。 @lalo
–尼古拉
2015年8月21日在17:51
这是源代码,但不了解--format可用选项在哪里:github.com/wp-cli/wp-cli/blob/master/php/commands/…
– lalo
15年8月22日在19:28
评论
谢谢-辛苦了如果有人试图编写脚本而不需要外部文件,则可以将json放在选项更新行中并用单引号引起来。在此处查看我在第61行的实现:gist.github.com/squarecandy/cfdead55ca1d84496044
– squarecandy
16年4月15日在1:30
看到我的答案是“一个班轮”
–洛朗
16 Dec 21'在5:05