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 œuvre 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 😉

Voir tous les articles de la catégorie WordPress

2 réflexions sur “WordPress : shortcode pour insérer les résultats d’une recherche”

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

Les commentaires sont fermés.

massa ut dapibus pulvinar ipsum Donec commodo Praesent Aliquam consequat. elit. elementum Retour haut de page