it-swarm.com.de

wie werden serialisierte Optionen programmgesteuert aktualisiert?

Ich möchte die Aktualisierung der Plugin-Optionen automatisieren. Es gibt einige Dinge, die ich oft wiederhole.

Mit wp-cli kann ich einfache Optionen wie diese aktualisieren:

php wp-cli.phar option update blog_public 1

Einige Plugin-Optionen speichern ihre Optionen jedoch in einer serialisierten Zeichenfolge.

Beispiel für serialisierten Optionswert in wp_options:

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

Wie aktualisiere ich diese Optionen?

14
lalo

Ich habe es selbst gelöst, so geht's:

Wenn Sie serialisierte Optionen programmgesteuert aktualisieren möchten:

laden Sie wp-cli von wp-cli.org herunter

Finden Sie heraus, was der "Schlüssel" für die von Ihnen verwendeten Optionen ist. In diesem Beispiel lautet der Schlüssel "wp_smtp_options".

Wenn Sie den Schlüssel nicht kennen, suchen Sie in der Tabelle wp_options und versuchen Sie, ihn herauszufinden.

Beispiel: select * from wp_options where option_name like '%smtp%'

Nachdem Sie Ihren Schlüssel kennen, verwenden Sie diesen Befehl, um Ihre Konfiguration in einer JSON-Datei zu speichern:

php wp-cli.phar option get wp_smtp_options --format=json > my_saved_config.txt

Wann immer Sie diese Konfiguration wiederherstellen möchten, verwenden Sie diesen Befehl

php wp-cli.phar option update wp_smtp_options --format=json < my_saved_config.txt

Anmerkungen:

  • arbeitet in WAMPSERVER64
  • funktioniert mit Unicode-Zeichen wie ñ á é
  • sie können Ihre JSON-Datei aus Gründen der Lesbarkeit mit Auffüllungen und Leerzeichen versehen

Es wäre großartig, keine Zwischendatei für diesen Zweck verwenden zu müssen. Weiß jemand, wie es geht?

11
lalo

WP-CLI ist definitiv die Antwort auf diese Frage nach dem Update auf 1.4.0, mit dem die Befehle pluck und patch für den Zugriff auf serialisierte Daten in WordPress eingeführt wurden.

Der Befehl pluck verwendet dieses Format zum Abrufen serialisierter Werte

wp option pluck <key> <key-name>

Zum Beispiel können Sie in der Option active_plugins das erste Element greifen

wp option pluck active_plugins 0

Der Befehl patch verwendet dieses Format zum Einfügen, Aktualisieren oder Entfernen von serialisierten Werten (die Aktion).

wp option patch <action> <key> <key-name> <value>

Das Löschen des ersten active_plugins würde so aussehen

wp option patch delete active_plugins 0

Das gleiche Zupfen und Patchen wurde auch für andere Befehle wie Postmeta hinzugefügt. Sie können jetzt WP-CLI verwenden, um einige coole Schleifen zum Aktualisieren durchzuführen. WordPress serialisierte Daten programmatisch

9
Mike Andreasen

So mache ich es in einem Bash-Skript:

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

Das WP-CLI Kommando option benutzt WordPress ' Options API um seine Arbeit zu erledigen. B. gegeben, z. Mit dem Unterbefehl update , einer korrekten Eingabe, einer array sollte dies mit WP-CLI möglich sein. Sie sollten hier den Parameter --format verwenden, um sicherzustellen, dass Sie den gleichen Wert erhalten. json funktioniert im Allgemeinen gut für den Unterbefehl update. Beachten Sie, dass der Unterbefehl get die Option unserialized zurückgeben sollte, da die Options-API verwendet wird, die Sie dann bei anderen/neuen Installationen speichern, ändern und/oder übertragen/einrichten können.

0
Nicolai