function check_custom_query_param( $query ) {
if ( isset($query->query_vars['custom_param']) && $query->query_vars['custom_param']) {
$query->custom_param = true;
}
}
add_action( 'pre_get_posts', 'check_custom_query_param' );
function change_where_query( $where, &$wp_query ) {
global $wpdb;
if ( property_exists ( $wp_query , 'custom_query' ) && $wp_query->custom_query ) {
// change the where query
}
return $where;
}
add_filter('posts_where', 'change_where_query', 10, 2);
The snippets story
Some weeks ago I wanted to pass a custom parameter to the WP_Query object to change the where-query if the param was true. The problem was, that to extend WP_Query with a parameter, you have to circumvent the filtering of the query options. I solved this by hooking into the pre_get_posts action. There the custom parameter is still available and we can easily add it to the filtered query object.
