It’s a filter hook, that applies to the WP_Query args before rendering. You can use this filter for advanced post filtration, taxonomy or terms related queries.
Example
add_filter( 'rpc_query_args', 'rpc_change_query' ); function rpc_change_query($args){ $args['tax_query'] => array( array( 'taxonomy' => 'people', 'field' => 'slug', 'terms' => 'bob', ), ); return $args; }
A Complex Structure
Let’s use it further for complex queries, suppose you want to display 4 latest posts on a slider from 3 different categories.
Example Scenario:
- 2 latest posts from Category having ID 87
- 1 latest post from category having ID 96
- 1 latest post from category having ID 100
So, you have to paste the following code in the functions.php file of your theme/child theme and it will do the job.
add_filter( 'rpc_query_args', 'rpc_custom_carousel_query', 10, 1 ); function rpc_custom_carousel_query($args){ $post_ids = array(); // Get 2 posts from category 87 $p_ids = rpc_latest_posts_from_cat('87', '2'); $post_ids = array_merge($post_ids, $p_ids); // Get 1 post from category 96 $p_ids = rpc_latest_posts_from_cat('96', '1'); $post_ids = array_merge($post_ids, $p_ids); // Get 1 post from category 100 $p_ids = rpc_latest_posts_from_cat('100', '1'); $post_ids = array_merge($post_ids, $p_ids); // New args with custom posts by IDs $args = array( 'post__in' => $post_ids, 'ignore_sticky_posts' => true, 'posts_per_page' => -1, ); return $args; } function rpc_latest_posts_from_cat($cat, $total){ $post_ids = array(); $args = array( 'order' => 'DESC', 'orderby' => 'date', 'cat' => $cat, 'posts_per_page' => $total, 'ignore_sticky_posts' => true, ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); $post_ids[] = get_the_id(); } /* Restore original Post Data */ wp_reset_postdata(); } return $post_ids; }
You can also modify it as you like.