-
-
Save pradeepdotco/646410736ee5f1d7c7f7 to your computer and use it in GitHub Desktop.
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;" ) ); |
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.
@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.
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;" ) );
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 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.
This should include
& is_admin()
Otherwise it will break the searches in the admin area too