Skip to content

Instantly share code, notes, and snippets.

@Viper007Bond
Created October 19, 2011 07:27
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save Viper007Bond/1297669 to your computer and use it in GitHub Desktop.
Save Viper007Bond/1297669 to your computer and use it in GitHub Desktop.
Determining if modifying the main query or not in WordPress
<?php
# See bigdawggi's comment below for a good combined example
// Pre-3.3
function cf_google_search_kill_wp_search( $where, $query ) {
global $wp_the_query;
if( ! is_admin() && $query->is_search() && $query === $wp_the_query ) {
$where = ' AND 1=0';
}
return $where;
}
add_filter( 'posts_where', 'cf_google_search_kill_wp_search', 10, 2 );
// Post-3.3
function cf_google_search_kill_wp_search( $where, $query ) {
if ( ! is_admin() && $query->is_search() && $query->is_main_query() ) {
$where = ' AND 1=0';
}
return $where;
}
add_filter( 'posts_where', 'cf_google_search_kill_wp_search', 10, 2 );
?>
@bigdawggi
Copy link

Glad to see an is_main_query() method, how 'bout this?

function cf_google_search_kill_wp_search( $where, $query ) {
    // We only modify non-admin AND search queries
    if (!is_admin() && $query->is_search()) {

        // 3.3 know-how for main query check
        if (method_exists($query, 'is_main_query')) {
            if ($query->is_main_query()) {
                $where = ' AND 1=0';
            }
        }
        else { // fall back to global to see if it's the main query
            global $wp_the_query;
            if ($query === $wp_the_query) {
                $where = ' AND 1=0';
            }
        }
    }

    // Return our possibly modified $where
    return $where;
}
add_filter('posts_where', 'cf_google_search_kill_wp_search', 10, 2);

@Viper007Bond
Copy link
Author

Oops, I was missing the is_search() check in my example. I also meant to add onto $where rather than replacing it, but now that I think of it replacing is better.

But anyway, yeah, I like your example and that'll work well. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment