Desactivar la función de búsqueda en WordPress sin utilizar plugins

Como bien sabes, WordPress cuenta con una función de búsqueda integrada en cada instalación. Es decir, WordPress te da la opción de buscar contenido dentro de tu proyecto en el paquete por defecto. Pero claro, puede ser que en cierto tipo de webs, esta funcionalidad no sea tan necesaria. Por ejemplo, si tu sitio cuenta con una o muy pocas páginas, la función de búsqueda realmente es redundante. Para dichos casos, podemos desactivar la función de búsqueda en WordPress haciendo que nuestra web sea más simple y limpia, y mejorar así la experiencia del usuario.

Puedes insertar el buscador de WordPress en tu web, o bien haciendo uso del widget para ello, o bien insertando código en la plantilla donde desees mostrarlo dentro del theme. Si has introducido el buscador utilizando la opción del widget, lo puedes eliminar de tu web simplemente eliminando el wiget de la zona de widgets correspondiente a donde se esté mostrando a través del backoffice de WordPress. Si por el contrario has insertado (o te han insertado) el buscador mediante programación, pues lógicamente tendrás que modificar los archivos PHP y CSS para impedir que el buscador se vea en la web. Pero claro, en estos casos hablamos de eliminarlo de la parte pública y no de deshabilitar la función en si para evitar el acceso a la función de búsqueda.

Desactivar la función de búsqueda en WordPress sin utilizar plugins

Para desactivar la función de búsqueda, debemos insertar unas cuantas líneas de código en el fichero functions.php de nuestro theme o en el plugin específico para ello, si es que lo tienes. A continuación, te mostramos cómo desactivar la función de búsqueda en WordPress sin necesidad de utilizar ningún plugin. Presta atención…

Crear hooks de WordPress para desactivar la función de búsqueda

El bloque de código que puedes ver a continuación contiene una función que desactiva el acceso a la función de búsqueda y muestra un error 404 de página no encontrada.

<?php

function search_filter_query( $query, $error = true ) {
	if ( is_search() ) {
		$query->is_search = false;
		$query->query_vars[s] = false;
		$query->query[s] = false;
		
		// si da error
		if ( $error == true )
			$query->is_404 = true;
	}
}

add_action( 'parse_query', 'search_filter_query' );

?>

Eliminar el widget de búsqueda

Una vez desactivada la función de búsqueda definiendo todas las propiedades de la query a false, añadimos un filter hook para eliminar el buscador de la interfaz del usuario.

Por ello, he implementado un código para eliminar el widget de búsqueda y así evitar a todos esos usuarios manazas que, por equivocación, puedan agregar el widget a cualquier sidebar. Para ello utilizaremos la función unregister_widget().

Ojo: create_function es una función integrada en PHP que se considera deprecated (obsoleta) desde PHP 7.2.0

// Ojo: create_function actualmente está obsoleta
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

// O bien...

function hide_search_widget() {
    unregister_widget('WP_Widget_Search');
 
add_action( 'widgets_init', 'hide_search_widget' );

Y hasta aquí nuestro artículo sobre cómo desactivar la función de búsqueda en WordPress sin utilizar plugins. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales. ¡Nos leemos!

Icono: Icon Depot