Dois-je appeler do_action dans mon plugin?
-
-
Pourquoipensez-vous que vous devriez?Exemple de code?Why do you think you should? Example code?
- 1
- 2012-09-10
- fuxia
-
J'explorais les codes duplug-in `WooCommerce`,ils ont appelé` do_action`beaucoup detemps.Je suisnouveau sur Wordpresset jepense à créer unplug-in,alorsje vérifiais certains codesexistants.I was exploring the codes of `WooCommerce` plug-in, they've called `do_action` a lot of time. I'm new to Wordpress and thinking of building a plug-in, so I was checking out some existing codes.
- 0
- 2012-09-10
- Shafiul
-
1 réponses
- votes
-
- 2012-09-10
Habituellement,vous utilisez une actionexistante dans vosplugins. WordPress appellera
do_action()
sinécessaire.Si votrepluginest assez complexe,comme unplugin d'achat,vouspouvezproposer des actions supplémentairespour d'autres développeurs deplugin oupour la versionpro de votreplugin. Dans ces cas,vous ajoutez
do_action()
partout où vouspensez que celapourrait être utile.Unexemple:j'ai unebibliothèque de classes PHP quej'utilisepour certainsprojets. Lorsquej'écris unplugin qui repose surmabibliothèque,je dois attendre que labibliothèque soitprête. Alorsj'écris dansmabibliothèque:
require 'class.T5_Custom_Post_Type_Helper.php'; require 'class.T5_Custom_Taxonomy_Helper.php'; // and so on… do_action( 't5_library_loaded' );
Dansmon autreplugin,je m'accroche à cette actionpour commencertout letravail:
add_action( 't5_library_loaded', array ( 'My_Plugin_Class', 'init' ) );
Maintenant queje connaistoutes les classesnécessaires disponibles,je n'aipas àtester
class_exists()
à chaquefois.add_action()
etdo_action()
ne sontpasnécessairement liésensemble. La réponse à votre questionest donc:non. :)Usually, you use existing action in your plugins. WordPress will call
do_action()
when needed.If your plugin is rather complex, like a shopping plugin, you may want to offer additional actions for other plugin developers or for the pro-version of your plugin. In these cases you add
do_action()
wherever you think it could be useful.An example: I have a library of PHP classes that I use for some projects. When I write a plugin that relies on my library I have to wait until the library is ready. So I write in my library:
require 'class.T5_Custom_Post_Type_Helper.php'; require 'class.T5_Custom_Taxonomy_Helper.php'; // and so on… do_action( 't5_library_loaded' );
In my other plugin I hook into this action to start all the work:
add_action( 't5_library_loaded', array ( 'My_Plugin_Class', 'init' ) );
Now I know all needed classes available, I don’t have to test
class_exists()
each time.add_action()
anddo_action()
are not necessary tied together. So the answer to your question is: no. :)
Dois-je appeler lafonction
do_action
chaquefois quej'add_action
quelque chose?