web-dev-qa-db-fra.com

comment mettre à jour les options sérialisées par programme?

Je souhaite automatiser la mise à jour des options du plugin. Il y a des choses que je répète souvent.

Avec wp-cli je sais que je peux mettre à jour des options simples comme celle-ci:

php wp-cli.phar option update blog_public 1

Cependant, certaines options de plug-in enregistrent leurs options dans une chaîne sérialisée.

Exemple de option_value sérialisée dans 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:"";}

Comment mettre à jour ces options?

14
lalo

Résolu moi-même, voici comment le faire:

Si vous souhaitez mettre à jour par programme les options sérialisées:

téléchargez wp-cli depuis wp-cli.org

Découvrez quelle est la "clé" pour les options que vous utilisez. Dans cet exemple, la clé est "wp_smtp_options"

Si vous ne connaissez pas la clé, recherchez dans la table wp_options et essayez de la comprendre.

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

Maintenant que vous connaissez votre clé, utilisez cette commande pour enregistrer votre configuration dans un fichier json:

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

Chaque fois que vous souhaitez que cette configuration soit restaurée, utilisez cette commande

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

Remarques:

  • fonctionne dans WAMPSERVER64
  • fonctionne avec des caractères unicode comme ñ á é
  • vous pouvez avoir votre fichier json avec des rembourrages et des espaces, pour plus de lisibilité

Ce serait bien de ne pas avoir à utiliser de fichier intermédiaire à cette fin. Est-ce que quelqu'un sait comment le faire?

11
lalo

WP-CLI est certainement la réponse à cette question après la mise à jour à la version 1.4.0 qui introduisait les commandes pluck et patch pour accéder aux données sérialisées dans WordPress.

La commande pluck prend ce format pour saisir des valeurs sérialisées

wp option pluck <key> <key-name>

Par exemple, dans l'option active_plugins, vous pouvez récupérer le premier élément.

wp option pluck active_plugins 0

La commande patch prend ce format pour insérer, mettre à jour ou supprimer des valeurs sérialisées (l'action)

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

Supprimer le premier actif_plugin ressemblerait à ceci

wp option patch delete active_plugins 0

Les mêmes pluck et patch ont également été ajoutés pour d'autres commandes telles que postmeta. Vous pouvez maintenant utiliser WP-CLI pour créer des boucles sympas pour la mise à jour Données WordPress sérialisées par programme

9
Mike Andreasen

Voici comment je le fais dans un script 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

Le WP-CLI command option utilise WordPress ' Options API pour faire son travail. Étant donné, par exemple avec la sous-commande update , une entrée correcte, une array, vous devriez pouvoir le faire avec WP-CLI. Vous devez utiliser le paramètre --format ici pour vous assurer d'obtenir la même chose, json fonctionne généralement bien pour la sous-commande update. Notez que la sous-commande get devrait vous renvoyer l’option non numérotée, car l’API Options est utilisée, que vous pouvez ensuite enregistrer, modifier et/ou transférer/configurer sur d’autres/nouvelles installations.

0
Nicolai