La recherche WordPress

17 décembre 2013 nakama

Développement

(Cet article a été écrit il y a très longtemps, dans une galaxie très très lointaine)

Comme beaucoup, la recherche de WordPress me pose des problèmes dès que je souhaite spécifier des éléments.

Par exemple, faire une recherche uniquement sur un champ ou inclure les custom post type etc.

Pour commencer, comment récupérer la recherche de l’utilisateur

Ce qu’on va faire, c’est  configuré nos requêtes SQL, récupérer les ids des posts et ensuite utiliser une fonction de WordPress pour récupérer les posts.

$wpdb->get_col : exécute une requête SELECT. Le résultat est un vecteur comprenant un élément par enregistrement pour le champ demandé
$wpdb->prepare : protection contre les injections SQL pour les requêtes utilisant des paramètres
DISTINCT permet d’éviter des redondances dans les résultats
CONVERT(_utf8 ‘%s’ USING utf8) : permet de convertir l’élément de recherche en UTF8
– COLLATE utf8_general_ci : explication sur le site de MySQL (en englais)
%S : est remplacé par notre variable $keyword (autrement dit : la recherche de l’utilisateur)

Ici, on va récupérer les ID des posts ou des pages uniquement si :
– le contenu est publié
– s’il s’agit d’un post ou d’une page
– que le titre correspond bien au terme de la recherche
– et/ou si le contenu correspond au terme de la recherche lui aussi

Et pour les métas ? c’est la même chose

Du coup, pas besoin d’explication, on fait une recherche dans toutes les valeurs des métas.

On arrive à la fin 🙂

Il reste à compter si le tableau $post_ids a des valeurs. Si ce n’est pas le cas, c’est que la recherche ne retourne aucun résultat ^^

Je re-précise dans la requête les custom posts type, le status (publish) et je délimite les résultats aux ids de mon tableau.

Il est important de toujours bien préciser ce que l’on souhaite récupérer dans chaque partie du code, cela évite les mauvaises surprises 🙂

Ici je suis certain que si ma requête retourne quelque chose, c’est qu’il s’agit bien d’un post ou d’une page dont l’id se trouve dans le tableau.

Mots-clés associés à cet article :

Retrouvez d'autres articles par catégories

sem, mi, commodo neque. lectus suscipit Praesent odio