Il me semble me rappeler avoir vu un conseil quelque part disant qu'il était recommandé de conserver le numéro de version d'un plugin en option. Je travaille à la publication d'un plugin, et je réfléchis à l'opportunité de le faire, mais comme tout le plugin ne crée qu'un widget (pour le moment, il n'a littéralement aucune autre option), j'ai du mal à comprendre ce que je voudrais jamais faire avec cette option. Je fixe déjà une constante avec le numéro de version à utiliser dans quelques emplacements (principalement wp_enqueue_*
).
Quelqu'un peut-il m'indiquer une bonne ressource ou expliquer les cas d'utilisation de la sauvegarde du numéro de version en option?
Vous devez enregistrer la version dans la base de données - aka. enregistrez-le "en tant qu'option" afin que votre script ait un cas de comparaison. C'est-à-dire que votre script devrait ...
Si tout ce que vous avez est une constante dans votre fichier .php. Cela correspond toujours, ce qui signifie que c'est pratiquement inutile pour toute mise à jour automatisée. Bien sûr, vous pouvez garder une trace des versions de plug-in avec seulement la constante, mais le point de l'enregistrer dans la base de données est de pouvoir mettre à jour automatiquement les éléments lorsque cela est nécessaire.
Comme vous le dites, si le plugin est assez simple, cela n’est peut-être pas nécessaire.
Fondamentalement, oui , vous le stockez dans les deux formats, en option et en tant que constante à des fins de comparaison. Il fournit une couche de freins et contrepoids qui n’est pas plus difficile à mettre en œuvre que de ne pas le faire au départ. Vérité ...
Référez-vous au fil de discussion suivant pour quelques exemples intéressants:
Remarque: aucun des codes présentés ici n’est le mien, donc crédit complet là où le crédit est dû!
m0r7if3r fournit les éléments suivants https: //wordpress.stackexchange .com/a/49736/13418
if( $db_version < {your desired version} ) { // previous updates and such $db_version = $new_version; //put that in the database } if( $db_version < $current_version ) { create $options array foreach( $option as $o ) { if( get_option( $o['old_name'] ) ) { update_option( $o['new_name'], get_option( $o['old_name'] ) ); delete_option( $o['old_name'] ); //clean up behind yourself } } and then update your database version again }
qui est la réponse acceptée à cette question.
Cependant,
Un tour de poney se poursuit pour élaborer sur cet exemple avec un joli morceau de code en réponse ...
class MyPlugin{ const OPTION_NAME = 'my_plugin_options', VERSION = '1.0'; protected $options = null, // default options and values go here $defaults = array( 'version' => self::VERSION, // this one should not change 'test_option' => 'abc', 'another_one' => 420, ); public function getOptions(){ // already did the checks if(isset($this->options)) return $this->options; // first call, get the options $options = get_option(self::OPTION_NAME); // options exist if($options !== false){ $new_version = version_compare($options['version'], self::VERSION, '!='); $desync = array_diff_key($this->defaults, $options) !== array_diff_key($options, $this->defaults); // update options if version changed, or we have missing/extra (out of sync) option entries if($new_version || $desync){ $new_options = array(); // check for new options and set defaults if necessary foreach($this->defaults as $option => $value) $new_options[$option] = isset($options[$option]) ? $options[$option] : $value; // update version info $new_options['version'] = self::VERSION; update_option(self::OPTION_NAME, $new_options); $this->options = $new_options; // no update was required }else{ $this->options = $options; } // new install (plugin was just activated) }else{ update_option(self::OPTION_NAME, $this->defaults); $this->options = $this->defaults; } return $this->options; } }
S'il vous plaît, n'acceptez pas cette réponse comme étant la bonne réponse, je fournis simplement des éléments de support supplémentaires que j'ai comme référence et qui, à mon avis, étayent bien ce sujet.
Cependant, montrez votre soutien et votez en hausse leurs réponses si vous les utilisez avec un quelconque succès.
Je pense que vous faites référence au livre Wrox WordPress Plugin ou peut-être quelque chose sur Ozh et als Blog. Je viens également de le lire dans le guide des plugins Apress WordPress.
L'argument est que, en enregistrant le numéro de version dans la base de données, lorsque vous publiez une mise à jour du plug-in, vous avez plus de contrôle sur ce qu'il faut 'mettre à jour' ... le code ressemble à ceci:
DEFINE VERSION (1.0);
function add_settings();
if (get_option(youroptions[VERSION]) === false {
\\ ie first time user
add_option(youroptions[version]) = VERSION;
add_option(youroptions[anotheroption]) ;
}
elseif (get_option(youroptions[VERSION]) !='1.0'{
\\user has old plugin ... do something for them
add_option(youroptions[optionname])
}
Est ce que ça aide? J'utilise l'exemple de code ci-dessus du livre Apress WP (mais je l'ai saisi de mémoire).