Je veux automatiser la mise à jour des options du plugin. Il y a certaines 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 plugin enregistrent leurs options dans une chaîne sérialisée.
Exemple de valeur_option 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?
option update
ligne entre guillemets simples. Voir mon implémentation sur la ligne 61 ici: gist.github.com/squarecandy/cfdead55ca1d84496044WP-CLI est définitivement la réponse à cela après la mise à jour vers 1.4.0 qui a introduit les commandes pluck et patch pour accéder aux données sérialisées dans WordPress.
La commande pluck prend ce format pour récupérer les valeurs sérialisées
Par exemple, dans l'option active_plugins, vous pouvez récupérer le premier élément
La commande patch prend ce format pour insérer, mettre à jour ou supprimer des valeurs sérialisées (l'action)
La suppression du premier active_plugin ressemblerait à ceci
Le même pluck et le même patch ont également été ajoutés pour d'autres commandes comme postmeta, vous pouvez maintenant utiliser WP-CLI pour effectuer des boucles intéressantes pour mettre à jour par programmation les données sérialisées WordPress
la source
Voici comment je le fais dans un script bash:
la source
La commande WP-CLI
option
utilise l' API Options de WordPress pour faire son travail. Étant donné, par exemple, avec la sous-commandeupdate
, une entrée correcte, unarray
, vous devriez pouvoir le faire avec WP-CLI. Vous devez utiliser le--format
paramètre ici, pour vous assurer que vous obtenez le même,json
fonctionne généralement bien pour laupdate
sous - commande. Remarque, la sous-commandeget
doit vous renvoyer l'option non sérialisée, car l'API Options est utilisée, que vous pouvez ensuite enregistrer, modifier et / ou transférer / configurer sur d'autres / nouvelles installations.la source
wp option get wp_smtp_options > savedconfiguration.txt
wp option update wp_smtp_options < savedconfiguration.txt
première commande enregistre en tant que tableau, mais la seconde n'accepte pas de tableau. Je suppose que je devrais le sérialiser d'abord, savez-vous comment le faire?format
paramètre? @lalo edit: viens de voir que vous avez compris ..format
paramètre. Je me demande si cela pourrait être possible sans avoir à utiliser un fichier intermédiaire comme je l'ai écrit dans ma réponse.format
paramètre, qui diffère parfois de la (sous-) commande à la (sous-) commande. C'est sûrement possible, par exemple en écrivant un script bash et en stockant les données dans une variable. @lalo--format
les options disponibles: github.com/wp-cli/wp-cli/blob/master/php/commands/…