web-dev-qa-db-fra.com

Insérer des termes pour la taxonomie personnalisée lors de l'activation d'un plugin ou de chaque chargement de page (init hook)

Prenons un plugin qui ajoute une taxonomie personnalisée, puis la répertorie avec une hiérarchie de termes large (des dizaines de termes hiérarchiques peuvent devenir des centaines dans des installations spécifiques). Je comprends que register_taxonomy() ne stocke pas de données dans la base de données. Par conséquent , elles doivent être utilisées via le crochet init afin que la taxonomie soit enregistrée à chaque chargement de page. Cependant, wp_insert_term()stocke des données dans la base de données .

Dans cet esprit, serait-il préférable d'exécuter wp_insert_term() à partir de register_activation_hook() après s'être assuré que register_taxonomy() était exécuté? Et ensuite, ne lancez que register_taxonomy() sur le hook 'init' pour chaque chargement de page?

Pour référence, mon cas d'utilisation spécifique est le plugin GeoAreas WP, qui compte actuellement une cinquantaine de termes. Je suis en train de développer la prochaine version du plug-in qui prendra en charge des zones géographiques plus diverses et devrait prendre en charge quelques centaines de termes pour de grandes zones géographiques telles que l'Europe ou les États-Unis.

1
dotancohen

50 est relativement peu, et vous devriez les créer sur le hook d'activation du plugin.

Pour plus de 100 (viens de tirer le numéro de mon cul;) faites vos propres tests sur un hébergement partagé lent), je créerais une page de paramètres et initialiserais la base de données à partir de là. La raison en est que les utilisateurs ne s’attendent pas à ce que l’activation du plug-in prenne longtemps et puissent penser que quelque chose ne va pas, mais il n’ya aucun moyen d’avoir une sorte de message "cela pourrait prendre une minute" au moment de l’activation.

Quoi que vous décidiez de faire, ne le faites pas sur le hook init car il est utilisé par le serveur frontal, ne le faites que sur les hooks liés à admin.

1
Mark Kaplun