web-dev-qa-db-fra.com

Explication des crochets de filtre "posts_join" et "posts_fields"?

Je suis nouveau dans les crochets de filtre "posts_" et je voulais savoir quelques choses de ceux qui sont au courant:

Dans cette question , quelqu'un a posté une réponse en utilisant posts_join qui a pris un deuxième paramètre de $query:

add_filter('posts_join',array(&$this,'posts_join'),10,2);

...

function posts_join($join,$query) {

}

Est-ce une instance de wp_query ou quelque chose de similaire?

Même exemple:

Comment pourrais-je déterminer le type de publication pour pouvoir créer des jointures personnalisées pour chaque type de publication personnalisé que j'ai du côté de l'administrateur

Que fait le crochet de filtre posts_fields? d'après l'exemple que j'ai vu, il semble que cela remplace les colonnes de la clause SELECT d'un appel SQL.

Suis-je correct dans cette hypothèse, et a-t-il également plus de paramètres pouvant être appelés?

Je trouve des exemples mais je ne peux obtenir aucune documentation solide nulle part.

3
Manny Fleurmond

Lorsque vous utilisez l'une des méthodes pour rechercher des publications (objet query_posts(), get_posts() ou WP_Query), celles-ci sont traitées et converties en requête SQL. Cela se produit dans la méthode WP_Query->&get_posts().

Comme les arguments ne sont pas omnipotents, de nombreux points d'accroche permettent de modifier ou de remplacer des parties de la requête SQL résultante.

  • posts_join fait partie de la requête qui gère les jointures SQL - en ajoutant des tables supplémentaires au mixage, par exemple des tables associées à des taxonomies lorsque cela est nécessaire.

  • posts_fields semble contrôler les champs de la base de données qui seront retournés dans la requête, il semble utiliser par défaut tous les champs de la table posts.

8
Rarst