web-dev-qa-db-ja.com

シリアル化されたオプションをプログラムで更新する方法

プラグインオプションの更新を自動化したい私がよく繰り返すことがいくつかあります。

wp-cli を使うと、このような簡単なオプションを更新できることがわかります。

php wp-cli.phar option update blog_public 1

ただし、プラグインオプションによっては、オプションをシリアル化された文字列に保存するものがあります。

Wp_optionsの直列化されたoption_valueの例:

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

それらのオプションを更新するには?

14
lalo

自分で解決した、これはそれを行う方法です:

プログラムでシリアル化されたオプションを更新したい場合は、

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ファイルにパディングとスペースを含めることができます。

この目的のために中間ファイルを使用する必要がないのは素晴らしいことです。誰かがそれを行う方法を知っていますか?

11
lalo

WP-CLIは、WordPressでシリアライズされたデータにアクセスするための pluck および patch コマンドを導入した1.4.0への更新後の間違いなくこれに対する答えです。

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はデータをプログラム的にシリアル化します

9
Mike Andreasen

これは私が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
6
Laurent

WP-CLI command option はWordPressの Options API を使ってその仕事をします。例えば、サブコマンド update 、正しい入力、arrayを使用すると、WP-CLIでこれを実行できるはずです。ここで--formatパラメータを使用する必要があります。確実に同じになるように、jsonupdateサブコマンドに対して一般的に機能します。 Options APIが使用されているので、サブコマンド get を使用すると、オプションをシリアライズせずに返すことができます。これを使用すると、他のインストールや新規インストールで保存、変更、転送または設定できます。

0
Nicolai