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?
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:
Ce serait bien de ne pas avoir à utiliser de fichier intermédiaire à cette fin. Est-ce que quelqu'un sait comment le faire?
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
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
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.