如何以编程方式更新序列化选项?

时间:2015-08-14 作者:lalo

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

具有wp-cli 我知道我可以更新如下简单选项:

php wp-cli.phar option update blog_public 1
但是,一些插件选项将其选项保存在序列化字符串中。

wp\\U选项中序列化的option\\u值示例:

a:9:{s:4:"from";s:21:"[email protected]";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:"[email protected]";s:8:"password";s:13:"xxx";s:10:"deactivate";s:0:"";}
如何更新这些选项?

4 个回复
SO网友:Mike Andreasen

在更新到1.4.0之后,WP-CLI无疑是解决这个问题的答案,1.4.0引入了pluckpatch 用于访问WordPress中序列化数据的命令。

PULLC命令采用此格式获取序列化值

wp option pluck <key> <key-name>
例如,在active\\u plugins选项中,您可以获取第一项

wp option pluck active_plugins 0
patch命令采用此格式插入、更新或删除序列化值(操作)

wp option patch <action> <key> <key-name> <value>
删除第一个active\\u插件如下所示

wp option patch delete active_plugins 0
对于其他命令(如Posteta),也添加了相同的Pulk和patch,现在可以使用WP-CLI执行一些很酷的循环以进行更新WordPress serialized data programmatically

SO网友:lalo

Solved it myself, this is how to do it:

如果要以编程方式更新序列化选项:

从wp cli下载wp cli。组织机构

找出您正在使用的选项的“关键”是什么。在本例中,键为“wp\\U smtp\\U选项”

如果您不知道键,请在wp\\U选项表中搜索并尝试找出它。

示例: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文件,以确保易读性,不必使用中间文件就好了。有人知道怎么做吗?

SO网友:Laurent

下面是我在bash脚本中的实现方式:

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

SO网友:Nicolai Grossherr

这个WP-CLI 命令option 是否使用WordPress\'Options API 做它的工作。给定,例如使用子命令update, 正确的输入array, 您应该能够使用WP-CLI执行此操作。你应该利用--format 参数,以确保获得相同的,json 工程一般适用于update 子命令。注意,子命令get 应返回未序列化的选项,因为使用了选项API,然后您可以在其他/新安装上保存、修改和/或传输/设置该选项。

结束

相关推荐

WP-CLI上的PHP解析错误,而不是Web服务器上的

我有一个超过100个站点的网络,我尝试使用wp cli对其中许多站点进行批量更改。特别是通过wp--url=site访问他们的wp\\u x\\u选项表。url选项更新然而,wp命令在我的几个文件中失败,严重限制了该工具的实用性,尤其是在尝试使用url列表| xargs wp--url={}。。。因为在第一次失败后,将跳过其余部分。我得到的错误总是一样的:PHP Parse error: syntax error, unexpected end of file in ... /functions.php&