As you haven’t stated what you are trying to achieve and have just mentioned you need to fetch associated data. You have two options to query your custom table:
- You need to do a custom query separately using the post id from the post object while iterating over the posts.
- Modify the joins of main WordPress query, so WordPress fetches the data from your custom table already associated with their respective posts.
The example below demonstrates first method.
<?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' );
?>
For the second method you will need to look at posts_where, posts_join, posts_groupby and posts_orderby filters. As an example you can have a look at the @scribu’s sortable custom column’s example.