[Résolu] Limiter la recherche aux titres des articles

  • Statut : non résolu
13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Messages
  • #448838
    Anaon
    Participant
    Initié WordPress
    22 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 2
    – Thème utilisé : Narnia
    – Plugins en place : Recent comments, recent posts, category by title, smartarchives…
    – Nom de l’hebergeur : OVH

    Problème(s) rencontré(s) :

    J’ai encore parcouru le forum et Google pour trouver une réponde en vain, pourtant, j’imagine que cette question a déjà été posée…

    Voilà, je voudrais simplement limiter dans mon formulaire de recherche, les résultats aux titres des articles, un peu comme dans les forum où l’on peut choisir de faire sa recherche “uniquement dans le titre des sujets”. Je n’ai rien trouvé à ce sujet nulle part, serait-ce faisable?

    J’espère que c’est possible sinon, je suis un peu mal 🙂

    Merci…

    #581399
    matthieu
    Membre
    Chevalier WordPress
    296 contributions

    On peut limmiter l’affichage aux titres mais je ne sais pas si on peut limiter la recherche facilement sans aller taper dans le coeur du script PHP.

    Mais pourquoi que les titres ? (il y a peut être d’autres solutions pour ton pb)

    #581400
    Anaon
    Participant
    Initié WordPress
    22 contributions

    Et bien en fait, il s’agit d’un site de chroniques cd, or, je trouvais ça super pratique d’avoir un bon moteur de recherche qui affiche toutes les chroniques de l’artiste que tu as tapé dans ta recherche.

    Mais je me suis aperçu que comme ce n’était pas limité au titre, les recherches n’étaient pas pertinentes du tout pour trouver une chronique d’un groupe…

    #581401
    AmO
    Participant
    Maître WordPress
    4452 contributions

    Bon
    Solution en dur
    ca veut dire que la recherche fonctionnera uniquement pour les titre mais partout ^^
    Dans le fichier wp-includes/classes.php
    A la ligne 422
    Remplace

    // If a search pattern is specified, load the posts that match
    		if (!empty($q[‘s’])) {
    			$q[‘s’] = addslashes_gpc($q[‘s’]);
    			$search = ‘ AND (‘;
    			$q[‘s’] = preg_replace(‘/, +/’, ‘ ‘, $q[‘s’]);
    			$q[‘s’] = str_replace(‘,’, ‘ ‘, $q[‘s’]);
    			$q[‘s’] = str_replace(‘”‘, ‘ ‘, $q[‘s’]);
    			$q[‘s’] = trim($q[‘s’]);
    			if ($q[‘exact’]) {
    				$n = ”;
    			} else {
    				$n = ‘%’;
    			}
    			if (!$q[‘sentence’]) {
    				$s_array = explode(‘ ‘,$q[‘s’]);
    				$q[‘search_terms’] = $s_array;
    				$search .= ‘((post_title LIKE ”.$n.$s_array[0].$n.”) OR (post_content LIKE ”.$n.$s_array[0].$n.”))’;
    				for ( $i = 1; $i < count($s_array); $i = $i + 1) {
    					$search .= ' AND ((post_title LIKE ''.$n.$s_array[$i].$n.'') OR (post_content LIKE ''.$n.$s_array[$i].$n.''))';
    				}
    				$search .= ' OR (post_title LIKE ''.$n.$q['s'].$n.'') OR (post_content LIKE ''.$n.$q['s'].$n.'')';
    				$search .= ')';
    			} else {
    				$search = ' AND ((post_title LIKE ''.$n.$q['s'].$n.'') OR (post_content LIKE ''.$n.$q['s'].$n.''))';
    			}
    		}

    par

    // If a search pattern is specified, load the posts that match
    		if (!empty($q[‘s’])) {
    			$q[‘s’] = addslashes_gpc($q[‘s’]);
    			$search = ‘ AND (‘;
    			$q[‘s’] = preg_replace(‘/, +/’, ‘ ‘, $q[‘s’]);
    			$q[‘s’] = str_replace(‘,’, ‘ ‘, $q[‘s’]);
    			$q[‘s’] = str_replace(‘”‘, ‘ ‘, $q[‘s’]);
    			$q[‘s’] = trim($q[‘s’]);
    			if ($q[‘exact’]) {
    				$n = ”;
    			} else {
    				$n = ‘%’;
    			}
    			if (!$q[‘sentence’]) {
    				$s_array = explode(‘ ‘,$q[‘s’]);
    				$q[‘search_terms’] = $s_array;
    				$search .= ‘((post_title LIKE ”.$n.$s_array[0].$n.”))’;
    				for ( $i = 1; $i < count($s_array); $i = $i + 1) {
    					$search .= ' AND ((post_title LIKE ''.$n.$s_array[$i].$n.''))';
    				}
    				$search .= ' OR (post_title LIKE ''.$n.$q['s'].$n.'')';
    				$search .= ')';
    			} else {
    				$search = ' AND ((post_title LIKE ''.$n.$q['s'].$n.''))';
    			}
    		}

    #581402
    matthieu
    Membre
    Chevalier WordPress
    296 contributions

    En modifiant le coeur du script sache cependant que ces modifictaions disparaitront à la prochaine mise à jour de WP

    #581403
    Anaon
    Participant
    Initié WordPress
    22 contributions

    Ah oui je vois… Merci beaucoup. Mais vous pensez que c’est une mauvaise idée? Parce que si ça pose trop de problèmes, c’est dommage aussi…

    #581404
    AmO
    Participant
    Maître WordPress
    4452 contributions

    Ca dépend ^^
    Si tu comptes ne pas faire évoluer ton site… c’est pas bien génant…

    Par contre, comme l’a dit Lazaa, la modification sera à réappliquer à chaque mise à jour de WordPress

    Pour moi, ca n’est pas une mauvaise idée ^^

    #581405
    Anaon
    Participant
    Initié WordPress
    22 contributions

    Ah oui tiens… Je ne me rends pas bien compte, s’il suffit de changer le code dans le fichier correspondant indiqué, ça ne me paraît pas trop contraignant… Quoique vous parlez des mises à jour de wordpress, je pensais plus au template.

    Je vais y réfléchir alors…

    #581406
    AmO
    Participant
    Maître WordPress
    4452 contributions

    A mediter …

    #581407
    AmO
    Participant
    Maître WordPress
    4452 contributions

    Jpense pas qu’on puisse intervenir par un plugin vu qu’en fait on touche à la boucle des post…
    enfin moi ^^ le hack me suffit 😋

    #581408
    Thierry Pigot – WP Assistance
    Participant
    Chevalier WordPress
    122 contributions

    Si ce sujet intéresse encore quelqu’un, voici ce qu’il faut ajouter au fichier functions.php de son thème pour limiter la recherche au titres de articles :

    add_filter(‘posts_where’, ‘limit_search_where_to_title’ );
    
    function limit_search_where_to_title( $where )
    {
      global $wpdb;
      if( is_search() ) {
        $where = “AND `post_status` = ‘publish’ AND `post_title` LIKE ‘%”. mysql_real_escape_string( $_GET[‘s’] ) .”%'”;
       }
    
      return $where;
    }

    Avec cette méthode, on ne touche pas au code source de WordPress.

    @+
    Thierry
    Développeur / Chef de Projet – Expert WordPress et Référencement

    #581409
    ChatelainWeb
    Participant
    Initié WordPress
    7 contributions

    Merci BEAUCOUP Thierry ! Votre méthode fonctionne parfaitement et m’a bien dépanné !

    La communauté WordPress est vraiment excellente ! Merci encore !

    Guillaume, jeune webmaster a Toulouse

    P.S : De plus votre site thierry-pigot.fr est très sympa ! J’aime beaucoup ! ^^

    #581410
    Thierry Pigot – WP Assistance
    Participant
    Chevalier WordPress
    122 contributions

    De rien Guillaume 😉

    Et merci pour les compliments !

13 sujets de 1 à 13 (sur un total de 13)
  • Vous devez être connecté pour répondre à ce sujet.