web-dev-qa-db-fra.com

Comment ajouter correctement une fonction appelée par une fonction accrochée à action à functions.php?

Je modifie mes requêtes principales avec une fonction, modify_main_query($query), qui détermine la page à laquelle l'utilisateur accède via l'instruction if/else, puis modifie la requête en conséquence. J'ajoute cette fonction en utilisant ce crochet:

Crochet de la fonction principale

add_action('pre_get_posts', 'modify_main_query')

L'une de mes clauses if (pour une certaine page) à l'intérieur de modify_main_query($query) appelle une petite fonction, appelée get_exclusion_IDs_for_cats_by_name($cat_names).

c'est une version simplifiée:

La fonction crochet principal ajouté

 function modify_main_query ($ query) {
 
 if (is_front_page ()) {
 
 [... faire des choses] 
 
} 
 
 elseif (is_archive ()) {
 
 $ cat_names = array ('Apple', 'orange'); 
 get_exclusion_IDs_for_cats_by_name ($ noms_cat); // petite fonction, je souhaite ajouter 
} 
 
 else {NULL;} 
 
 endif; 
 

Ma question

Quelle est la bonne façon d'ajouter cette petite fonction, get_exclusion_IDs_for_cats_by_name($cat_names), appelée par ma fonction accrochée à l'action, modify_main_query($query), à functions.php? Dois-je simplement lancer la petite fonction dans functions.php, ou ai-je besoin d'un crochet distinct pour la mini-fonction? Cela fonctionne si je viens d'ajouter la fonction appelée séparément sans crochet, mais je voulais vérifier, pour m'assurer que je le fais de la manière préférée.

Merci!

1
CoderScissorhands

Cela semble bon. Si nous supposons que get_exclusion_IDs_for_cats_by_name($cat_names); fonctionne correctement, vous le faites correctement.

Votre question peut être reformulée comme ceci:

Puis-je appeler d'autres fonctions dans les actions personnalisées?

Et la réponse est oui . La seule chose à laquelle vous devez faire attention est que votre autre fonction est disponible à partir de l'endroit où vous l'appelez.

3
prosti

Si vous n'utilisez pas votre propre thème, il est généralement recommandé de créer un thème enfant, puis de placer vos fonctions uniques dans le fichier functions.php de ce thème enfant.

Ainsi, vos fonctions ne seront pas écrasées par une mise à jour du thème que vous utilisez. Il est toujours judicieux de ne jamais modifier les fichiers principaux ni les thèmes que vous utilisez.

Si vous construisez votre propre thème, ajoutez des fonctions si nécessaire.

0
Rick Hellewell