WordPress : shortcode pour insérer les résultats d’une recherche

Il est parfois utile, dans le cadre de la création de landing pages dans les projets web et plus particulièrement sous WordPress, de devoir intégrer des résultats de recherche au sein de pages ou d’articles. La solution la plus simple passe par la création d’un simple shortcode 😉

	// Ajout shortcode "rechercher"
	// Usage : [rechercher terme="texte recherché" type="post"]
	function func_rechercher($atts) {

		// Extraction des paramètres
		extract(shortcode_atts(array(
			'terme' => '',
			'posttype' => 'post'
		), $atts));

		// Recherche de posts en rapport avec le terme défini
		$the_query = new WP_Query('s='.$terme.'&post_type='.$posttype);

		// Boucle sur les résultats
		if ($the_query->have_posts()) {
			$html = '<h4>À lire, à propos du terme <span style="color:#888F96">'.$terme.'</span></h4><ul style="border-top:0 !important;">';
			while ( $the_query->have_posts() ) {
				$the_query->the_post();
				$html .= '<li><a href="'.get_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a></li>';
			}
			$html .= "</ul>";
		}
		// Reset Post Data
		wp_reset_postdata();

		return $html;
	}
	add_shortcode('rechercher', 'func_rechercher');

Il vous suffit ici de personnaliser la sortie du résultat (que l’on pourra au besoin encadrer par un style CSS). J’ai utilisé ce shortcode dans le cadre du glossaire mis en oeuvre sur mon site photo,  ce qui donne par exemple, pour le shortcode suivant :

[rechercher terme="hotlink"]

…le résultat visible ici sous la définition du terme hotlink.

Vous avez la possibilité de passer en paramètre le post_type afin de pouvoir utiliser cette fonction sur des domaines précis de vos développements 😉

2 commentaires sur WordPress : shortcode pour insérer les résultats d’une recherche
  1. lionel Répondre

    Bonjour,

    Merci pour ce code ! Le rendu est plutôt pas mal sur le modèle.

    amicalement

  2. romain Répondre

    hello Cedric!!
    encore un bon hack pour améliorer son wordpress, dommage que tu ne postes plus de nouveaux bouts de codes sur ce site.

Laisser un commentaire

Votre adresse email ne sera pas publiée. Merci de saisir votre nom ou pseudo (pas de pseudo SEO merci !), votre email et votre commentaire.