web-dev-qa-db-fra.com

Crochet/action après que WP_Query ait reçu des publications pour interroger des tables personnalisées à la recherche de méta liées

Je vois qu'il y a des points d'ancrage pour manipuler WP_Query avant qu'il ne reçoive ses publications (parse_query, pre_get_posts), mais je n'arrive pas à trouver de points d'ancrage pour après l'objet WP_Query est rempli. J'ai une table personnalisée pour mes métadonnées post-associées spécifiques au plug-in que je voudrais extraire après qu'un objet WP_Query est rempli.

4
Kevin

Comme vous n'avez pas indiqué ce que vous essayez d'atteindre et que vous venez de mentionner, vous devez récupérer les données associées. Vous avez deux options pour interroger votre table personnalisée:

  1. Vous devez effectuer une requête personnalisée séparément à l'aide de l'ID de publication de l'objet publication tout en effectuant une itération sur les publications.
  2. Modifiez les jointures de la requête WordPress principale afin que WordPress récupère les données de votre table personnalisée déjà associée à leurs publications respectives.

L'exemple ci-dessous illustre la première méthode.

 <?php 
      function populate_posts_data( $posts, $query ) {
           global $wpdb;

           if ( !count( $posts ) ) 
               return $posts;  // posts array is empty send it back with thanks.

           while ( $posts as $post ) {
               // query to get custom post data from custom table
               $query = "SELECT * FROM {$wpdb->prefix}my_plugin_table WHERE post_id={$post->ID}";
               $results = $wpdb->get_results( $query );
           }
           return $posts;
       }
       add_filter( 'the_posts', 'populate_posts_data' );
 ?>

Pour la seconde méthode, vous devrez regarder posts_where, posts_join, posts_groupby et posts_orderby filters. À titre d'exemple, vous pouvez jeter un coup d'œil aux exemples de colonnes personnalisées triables de @ scribu} _.

8
Hameedullah Khan