web-dev-qa-db-fra.com

Pourquoi utilisez-vous add_action pour le shortcode?

Je voudrais créer shortcodes , mais certains tutoriels expliquent comment utiliser add_action :

add_action( 'init', 'register_shortcodes');

Mais j’ai lu un autre tutoriel où l’auteur ne l’avait pas utilisé, n’ajoute que ceci à functions.php:

add_shortcode( 'recent-posts', 'recent_posts_function' );

Quelle est la meilleure méthode et pourquoi utiliser add_action ?

3
Rolnin

Si vous consultez la page du Codex sur add_shortcode() , vous ne verrez rien sur la nécessité d'une add_action() avant de pouvoir utiliser add_shortcode().

Donc, vous pouvez simplement mettre votre add_shortcode() directement dans votre functions.php. C'est ce que je fais aussi.

Voir cet article - WordPress Shortcodes: Un guide complet sur l’utilisation des codes courts et des meilleures pratiques.

2
Mike Madern

Sans trop répéter ce qui a été couvert dans les réponses ci-dessus; il ne s'agit que d'une approche fondée sur les meilleures pratiques. J'utilise souvent cela dans le développement de plugins où j'ai besoin de classes séparées, comme dans le modèle wppb.me plugin.

Il est judicieux d’enregistrer tous vos points d’administration dans le chargeur. Dans le cas du shortcode, vous pouvez ajouter le hook add_action shortcode dans la méthode du chargeur de crochets:

 /**
   * Register all of the hooks related to the admin area functionality
   * of the plugin
   */ 

     private function define_admin_hooks() {

     $plugin_admin = new instance( $this->get_plugin_name(), $this->get_version() );

     $this->loader->add_action( 'init', $plugin_admin, 'register_shortcodes');
}

Le principal avantage de cette approche réside dans la facilité de maintenance du code, car le code est modulaire. Vous pouvez ajouter plusieurs autres points d'ancrage dans la même méthode, ce qui facilite le suivi et la modification de certaines choses, en particulier pour un plugin volumineux.

Cela signifie donc que, dans la classe où vous voulez utiliser add_shortcode, vous ne devez pas exécuter le hook d’action dans la méthode constructeur, vous pouvez maintenant l’utiliser dans une méthode personnalisée telle que:

public function register_shortcodes(){

        add_shortcode('recent-posts', array($this, 'recent_posts_function'));

    }
0
NJENGAH

Parfois, il est nécessaire d'utiliser l'action 'init'. Par exemple, à l'heure actuelle, j'édite un thème fortement basé sur des widgets et personnalise le panneau. J'ai essayé d'ajouter un shortcode personnalisé sans actions et des erreurs se sont produites lors de l'enregistrement du contenu dans le panneau Personnaliser. Action assure le bon ordre d'exécution des fonctions. Il dit "hey shortcodes! Je vais d'abord charger les fonctions les plus importantes, ensuite vous!"

0
cziko