我想自动更新插件选项。有些事情我会重复很多。

使用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文件带有填充和空格,

不必为此使用中间文件。有人知道怎么做吗?

评论


谢谢-辛苦了如果有人试图编写脚本而不需要外部文件,则可以将json放在选项更新行中并用单引号引起来。在此处查看我在第61行的实现:gist.github.com/squarecandy/cfdead55ca1d84496044

– squarecandy
16年4月15日在1:30

看到我的答案是“一个班轮”

–洛朗
16 Dec 21'在5:05

#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