Tout savoir sur WordPress
Tutoriel WordPress

Désactiver la fonction de recherche de WordPress

En fonction de la thématique de votre site Internet, il peut être utile de désactiver la possibilité de faire une recherche sur un site 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 :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


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;" ) );
}

[/pastacode]

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

Cet article a été mis à jour il y a 4479 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

12 Commentaires

  1. 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”.

  2. 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.

  3. 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 ;-)

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

  5. 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 !

  6. 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…

  7. “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

  8. Bonjour ,

    J’utilise wordpress-3.6-fr_FR sous windows XP

    je viens d’essayer avec le thème Twenty Thirteen .
    j’ai pris le fichier functions.php qui se trouve à l’emplacement : wordpresswp-contentthemestwentythirteen
    Juste après

     
         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;" ) );
    }
    

    MAIS malheureusement j’ai toujours ma barre de recherche qui s’affiche en tête de page .

    • @iaconseil: Attention, ce code désactive la fonction de recherche. C’est-à-dire, le traitement PHP qui se trouve derrière le processus.

      Ça ne supprime pas la barre de recherche en elle-même !

      Pour cela, vous devez supprimer le formulaire dans le code HTML.