Skip to content

Instantly share code, notes, and snippets.

@pradeepdotco
Created November 9, 2015 22:12
Show Gist options
  • Save pradeepdotco/646410736ee5f1d7c7f7 to your computer and use it in GitHub Desktop.
Save pradeepdotco/646410736ee5f1d7c7f7 to your computer and use it in GitHub Desktop.
Disable WordPress Search
function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// to error
if ( $error == true )
$query->is_404 = true;
}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
@JWPapi
Copy link

JWPapi commented Oct 15, 2021

This should include & is_admin() Otherwise it will break the searches in the admin area too

@KratosGemini
Copy link

I'm not sure what the purpose of if ( $error == true ) is. It seems to work just fine with $query->is_404 = true; being run unconditionally. Though @JWPapi is right. It needs && !is_admin() to avoid breaking page/post searches in admin.

On my site, I also added status_header( 404 ); to make it return a 404 status code on the page.

@adrearubin
Copy link

@JWPapi & @KratosGemini where did you place &is_admin? @InstanceFactory When i used your code above, and i type in my url www.blah.com/?s=test, i get a message on my page that says: "The page can’t be found. It looks like nothing was found at this location.". I need to use the ?s= parameter as a regular parameter, not a search. How can this be done? Thanks.

@JWPapi
Copy link

JWPapi commented Jun 16, 2022

function fb_filter_query( $query, $error = true ) {
	
	if ( is_search() & !is_admin()) {
		$query->is_search = false;
		$query->query_vars[s] = false;
		$query->query[s] = false;
		
		// to error
		if ( $error == true )
			$query->is_404 = true;
	}
}

add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

@moonbyt3
Copy link

moonbyt3 commented Jul 8, 2022

create_function is depricated. and also query[s] is depricated.

How I solved this:

/*------------------------------------------------------------------------------------------
# Disables WordPress Search feature
------------------------------------------------------------------------------------------*/

function fb_filter_query( $query, $error = true ) {
	
	if ( is_search() & !is_admin()) {
		$query->is_search = false;
		$query->query_vars['s'] = false;
		$query->query['s'] = false;
		
		// to error
		if ( $error == true )
			$query->is_404 = true;
	}
}

add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', function($a) {return null;});

@InstanceFactory
Copy link

InstanceFactory commented Jul 9, 2022

... @InstanceFactory When i used your code above, and i type in my url www.blah.com/?s=test, i get a message on my page that says: "The page can’t be found. It looks like nothing was found at this location.". I need to use the ?s= parameter as a regular parameter, not a search. How can this be done? Thanks.

@adrearubin Well, I'm not that deep within WP. But I think you need to use a 'free' parameter, means, one that is not used by WP.

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