Ou trouver le code des hook pour add_filter et add_action ? (Créer un compte)

  • Statut : non résolu
8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Messages
  • #522181
    olivierbeyo
    Membre
    Initié WordPress
    30 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress :
    – Version de PHP/MySQL :
    – Thème utilisé :
    – Extensions en place :
    – Nom de l’hebergeur :
    – Adresse du site :

    Problème(s) rencontré(s) :

    ma question est générique et pas spécifique à un problème de fonctionnement de wordpress, j’ai bien lu le codex expliquant le focntionnemene des filtres et action, ou trouver la liste des hooks possible, ok. Par contre, je n’arrive pas à comprendre / trouver le code correspondant à un hook donné. Par exemple, je voudrait accéder au code qui gère add_filter(‘rewrite_rules_array’, ‘mycallback’);
    le codex ne me dit pas où trouver le code de la fonction ‘rewrite_rules_array’.

    Quelqu’un peut-il m’expliquer ? merci.

    #884986
    Guy
    Participant
    Maître WordPress
    14817 contributions

    IL y a la liste faite par Adam Brown : http://adambrown.info/p/wp_hooks ou chercher dans les sources de WP 🙂

    #884987
    olivierbeyo
    Membre
    Initié WordPress
    30 contributions

    Non, je connais cette liste, ce que je cherche à savoir c’est quelle fonction est appellée pour un hook donné.

    Comme j’ai indiqué dans mon exemple (mais ce n’est qu’un exemple, ça pourrait être n’importe quel hook) :
    add_filter(‘rewrite_rules_array’, ‘mycallback’);

    Où se trouve la fonction du hook ‘rewrite_rules_array’ ? existe t’il une fonction function rewrite_rules_array() ?
    la réponse semble être non car dans le codex, il n’y a référence qu’au hook pour cette entrée.

    Pour le dire autrement, quand j’appelle add_filter(‘nomduhook’, ‘mycallback’), quel est le workflow ? Le nomduhook n’est pas magique ! il correspond à un appel de variable de fonction ??

    #884988
    Guy
    Participant
    Maître WordPress
    14817 contributions

    Je ne comprends pas trop ta question, add_filter est une fonction appelée pour ajouter un hook/filtre. Cette fonction peut être utilisée dans le coeur de WordPress, dans des thèmes, des extensions, dans des modifs perso etc… il ne peut donc y avoir de catalogue de l’utilsation des hooks.

    Par contre, il faut qu’il existe quelque part un apply_filters avec le nom du hook. Pour savoir ce que l’on peut faire de ce filtre ou de cette action, la liste de adm brown te permet d’aller inspecter l’implémentation dans le code.

    A ma connaissance, il n’y a pas de liste exhaustive des hooks avec leurs champ d’action et paramètres. Est ce que cela répond à ta question?

    #884989
    olivierbeyo
    Membre
    Initié WordPress
    30 contributions

    Bah, non, désolé.

    Peut-être ne suis-je pas assez clair dans ma question.

    si j’appelle

    add_filter(‘rewrite_rules_array’, ‘mycallback’);

    alors wp appelle add_filter() dans wp-includes/plugins.php et dans cette fonction le rewrite_rules_array est ajouté dans la variable globale $wp_filter, mais je ne vois pas comment après celà fonctionne.

    C’est peut-être une question basique mais par exemple, si elle existe en tant que telle, où se trouve la liste des noms des hooks dans le code de wp ? Ce que je ne comprend pas c’est comment relier un nom de hook, qui pour moi sort de je ne sais où, à une fonction/classe…

    #884990
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    C’est une question classique… les hooks sont très nombreux, et il n’y pas de liste exhaustive.
    Néanmoins le codex (lien en haut de la page) donne pas mal d’informations.

    Il vaut mieux partir à la pêche en cherchant ce qu’on veut faire plutôt que la liste des hooks « en soi »
    Bon sinon il y a quand même ça
    http://codex.wordpress.org/Function_Reference#Action.2C_Filter.2C_and_Plugin_Functions

    Par exemple en cherchant dans le codex rewrite_rules_array j’arrive sur
    http://codex.wordpress.org/Class_Reference/WP_Rewrite
    qui donne de nombreux hooks à utiliser

    add_filter(‘rewrite_rules_array’, ‘mycallback’);

    alors wp appelle add_filter() dans wp-includes/plugins.php et dans cette fonction le rewrite_rules_array est ajouté dans la variable globale $wp_filter, mais je ne vois pas comment après celà fonctionne. (…)
    Ce que je ne comprend pas c’est comment relier un nom de hook, qui pour moi sort de je ne sais où, à une fonction/classe…

    Le lien que je t’ai donné te montre un exemple…

    Dans ton code, tu définis une fonction function mycallback {} où tu mets tes modifications, développements

    #884991
    Guy
    Participant
    Maître WordPress
    14817 contributions

    ben non, ce n’est pas ça.

    Si tu appelles add_filter(rewrite_rules_array, « ….

    Tu ajouteras un hook sur « rewrite_rules_array », ce hook est défini dans wp-includes/rewrite.php (la list de de Adam brow te donnera probablement la ligne et le fichier).

    En regardant le code tu verras qu’il est défini dans la fonction rewrite_rules() de la classe WP_Rewrite.

    $this->rules = apply_filters(‘rewrite_rules_array’, $this->rules);

    Quand tu le traites, tu vois qu’il n’a qu’un seul paramètres qu’il récupère et retourne $this->rules. En déroulant la pelote $this->rules est défini ainsi:

    /**
    * Rewrite rules to match against the request to find the redirect or query.
    *
    * @since 1.5.0
    * @access private
    * @var array
    */
    var $rules;

    Pour connaitre la structure et le contenu de ce tableau… je ne sais pas si il existe des documents publics.

    Pour reprendre le fil de la discussion, lorsque tu appelles add_filter(« un hook », …), tu n’agis pas directement sur les autres add_filter du même hook mais sur le apply_filter qui a défini le hook.
    Tu peux définir un ordre de priorité si tu veux que ton hook soit traité en premier, dernier, etc.. mais encore une fois… je ne connais pas de document décrivant le workflow (au moins de WordPress) , et tout cela peut être sérieusement modifié si des extensions ou thèmes viennent s’intercaler dans les hooks.

    #884992
    olivierbeyo
    Membre
    Initié WordPress
    30 contributions

    ok, c’est encore loin d’être clair pour moi, mais comme tu dis, je vais « dérouler la pelote » pour essayer de comprendre.
    ma question est peut-être classique, mais je n’ai vu nulle part une explication claire du fonctionnement, de la vie d’un appel à un hook. J’aime bien comprendre comment fonctionne l’outil que j’utilise.

    En tout cas merci pour les explications et le temps passé à me répondre.

8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.