web-dev-qa-db-fra.com

Que fait apply_filters (...) dans WordPress?

J'essaie de comprendre certaines fonctions de WordPress, mais je ne comprends pas ce que apply_filters (...) comprend réellement.

Est-ce que quelqu'un peut éclaircir ceci pour moi avec quelques exemples?

109
Tim

apply_filters($tag, $value) passe l'argument 'value' à chacune des fonctions 'accrochées' (à l'aide de add_filter ) dans le filtre "balise" spécifié. Chaque fonction effectue un traitement sur la valeur et renvoie une valeur modifiée à transmettre à la fonction suivante de la séquence.

Par exemple, par défaut (dans WordPress 2.9) le the_content le filtre passe la valeur à travers la séquence de fonctions suivante:

  • wptexturize
  • convert_smile
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
104
Richard M

réponse tardive

Courte explication

apply_filters() interagit avec le tableau global $wp_filters. Fondamentalement, il vérifie simplement le tableau si le filtre actuel (ou le raccordement) a une action (fonction/callback) attachée, puis l'appelle.

Longue explication

Lorsque vous associez un rappel/une action à un filtre ou à un raccord, vous ajoutez simplement le nom du rappel au tableau de filtres globaux. Lorsque, ensuite, dans le code (par exemple un fichier de modèle, de noyau ou de plug-in), un appel à do_action() ou apply_filters() se produit, puis WordPress a parcouru le tableau et appelle le rappel. La seule chose plus spéciale avec les filtres qu'avec les points d’accroché est qu’elle renvoie la valeur (pour un traitement ultérieur) au lieu de déclencher simplement le rappel. Les points suivants sont donc récapitulés: Les points d’accroché sont . ) insérez des données, tandis que les filtres doivent modifier des données.

27
kaiser

Voici ce que je glane en considérant la réponse la plus populaire et les ressources supplémentaires:

  • $ tag semble être un synonyme du nom du hook. (Ce n'est pas particulièrement intuitif pour moi.)
  • the_content est un exemple de hook, de type "filter".
  • le hook the_content est constitué de plusieurs filtres.
  • Les filtres modifient les données. Ils filtrent essentiellement la base de données, modifiant les données avant que les utilisateurs ne les consultent.
  • Une application courante de apply_filters (), par exemple, consiste à appliquer les filtres the_content à $ content. Dans ce cas, les doubles retours seront convertis en <p> balises, les smileys seront convertis en icônes, etc.
  • "the_content" est un crochet, alors que "the_content ()" est une fonction.
18
Marjorie Roswell

Dans les termes les plus élémentaires, apply_filters est utilisé pour initialiser un hook de filtre ... add_filter attribue une nouvelle fonction aux hooks déjà créés.

1
Steve