Formation WordPress

Désactiver la function de recherche de WordPress

Lorsque vous utilisez WordPress comme un site vitrine, la fonction de recherche peut devenir inutile. Et bien, si vous avez eu envie de vous débarrasser de la fonctionnalité de recherche, alors cette astuce est pour vous. Dans cet article, nous allons vous montrer comment faire pour désactiver la fonction de recherche dans WordPress.

Copier le code ci-dessous dans le fichier functions.php de votre thème :

function search_filter_query( $query, $error = true ) {
	if ( !is_search() ) return;

	$query->is_search = false;
	$query->query_vars['s'] = false;
	$query->query['s'] = false;

        // to error
	if ( $error )
		$query->is_404 = true;
}
if ( !is_admin() ) {
	add_action( 'parse_query', 'search_filter_query' );
	add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
}

Remarque : si vous définissez $error à true, alors l’utilisateur sera redirigé vers votre page d’erreur 404. Si vous le définissez à false, alors l’utilisateur reste sur la page où il a essayé de lancer la recherche.

Source : WPEngineer

Tags :
Auteur : Jonathan
Actuellement en Master 1 Information Communication à Ingémédia, je m’intéresse depuis quelques années à différents aspects du milieu informatique qui m’ont vraiment séduits tels que la gestion de projet et la création de sites Internet.
Avatar de jonathan
Les commentaires 10 commentaires sur cet article
  1. Screenfeed le

    Salut.
    Merci pour cette astuce, ça m’a servi dans un projet.
    Quelques erreurs à rectifier cependant :
    Ce n’est pas [s] mais ['s'] qu’il faut mettre.
    De plus il faut vérifier que l’on n’est pas dans l’administration sinon cela désactive aussi la recherche dedans.

    function no_search( $query, $error = true ) {
    	if ( !is_search() )
    		return;
    	$query->is_search = false;
    	$query->query_vars['s'] = false;
    	$query->query['s'] = false;
    	// to error
    	if ( $error == true )
    		$query->is_404 = true;
    }
    if ( !is_admin() ) {
    	add_action( 'parse_query', 'no_search' );
    	add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
    }
    

    A+

    PS : avec $error à false on ne reste pas sur la page où on était (bien que l’url ne change pas effectivement) mais on affiche les articles du site, on a donc le contenu de la « page blog ».

    Avatar de
  2. Screenfeed le

    Sorry, j’avais pas vu qu’on ne pouvait pas utiliser la balise pre chez toi :s
    Faire gaffe aux double-guillemets autour de return null; qui ont été changés à la fin pour le coup.

    Avatar de
  3. jonathan le

    Merci Greg. J’ai mis à jour l’article avec ta remarque ;)

    Avatar de
  4. Jean-Claude le

    Bonjour Jonathan
    J’ai mis le code à la fin du fichier functions.php et il ne se passe rien. Je crains de mettre la pagaille si je le mets ailleurs… mais ça n’est pas vital ;-)

    Avatar de
  5. jonathan le

    Le code fonctionne très bien, il faut C/C le code dans le fichier functions.php à la racine de votre FTP :)

    Avatar de
  6. Screenfeed le

    #Jo
    A la racine du ftp ? T’es sûr de ton coup là ? ;)

    Avatar de
  7. jonathan le

    Oula, non pas du tout à la racine du FTP, c’est l’habitude de taper ça pour autre chose =_=

    C’est bien le fichier functions.php à la racine du thème !

    Avatar de
  8. Jean-Claude le

    Question du débutant : c’est où exactement la racine du thème functions.php dans Twenty Eleven, parce qu’il y a des commentaires, du code…

    Avatar de
  9. jonathan le

    « la racine du thème » est l’emplacement du fichier. Ca ne correspond pas au contenu du fichier ;)

    Mettez le code en début de fichier, juste en dessous de la balise <?php

    Avatar de
  10. Jean-Claude le

    Je viens d’essayer après la balise php mais il ne se passe rien… forget it… merci tout de même !

    Avatar de
Laisser un commentaire
Balises autorisées dans les commentaires: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Suivre les commentaires de cet article par E-mail