web-dev-qa-db-fra.com

Sur quel point dois-je appeler register_nav_menu (s)?

J'ai vu diversement register_nav_menus() appelé:

  • sur after_setup_theme
  • sur init
  • collé "en vrac" dans functions.php

sans changement apparent de fonctionnalité.

Quel hook devrais-je utiliser pour appeler cette fonction?

5
Isaac Lubow

Tout d’abord, vous ne devez pas enregistrer les fonctions loose dans functions.php car vous ne pouvez pas les supprimer (avec remove_action). Cela peut également provoquer des erreurs de débogage, car WP pourrait ne pas encore être stable. En utilisant un hook, vous vous assurez que WP est suffisamment stable pour exécuter votre code et que ce que vous avez besoin d'utiliser a été chargé.

Découvrez la réponse sur les Wordpress Forums pour plus d'informations.


Pour décider quel hook utiliser, commencez par vérifier this answer .

La principale différence entre les deux:

  • L'utilisateur n'est pas authentifié à after_setup_theme
  • L'utilisateur s'authentifie à init.

Le hook after_setup_theme est donc évidemment exécuté avant init, comme vous pouvez le voir dans la référence Action

Selon la page Wordpress Codex sur after_setup_theme:

Ce hook est appelé lors de chaque chargement de page, après l’initialisation du thème. Il est généralement utilisé pour effectuer les actions de configuration de base, registration , et init pour un thème.


Puisque vous enregistrez des menus, je suggérerais d'utiliser after_setup_theme. Le Wordpress Codex pour register_nav_menu() utilise également le hook after_setup_theme dans l'un des exemples.

6
Kaspar Lee

Vous pouvez les utiliser dès qu’ils sont disponibles, c’est-à-dire dès que functions.php est chargé, ce qui explique pourquoi vous avez vu tant d’options différentes.

Je recommanderais de rester avec la méthode "defacto" - en utilisant le hook after_setup_theme

1
TheDeadMedic

Les docs pour register_nav_menu montrent un exemple utilisant le hook after_setup_theme, donc je l’utiliserais.

after_setup_theme

Ce hook est appelé lors de chaque chargement de page, après l’initialisation du thème. Il est généralement utilisé pour effectuer des actions de configuration, d’enregistrement et d’initialisation de base pour un thème.

... le hook after_setup_theme, qui s'exécute avant le hook init. Le hook d'initialisation est trop tardif pour certaines fonctionnalités, telles que l'indication de miniatures de publication de support.

1
Cai