J'aimerais savoir comment utiliser la recherche intégrée dans wordpress pour renvoyer les résultats de tout le contenu de mon site. Plus précisément, je veux chercher;
J'aimerais un seul formulaire de recherche et je n'ai pas besoin de limiter la recherche à certains types ou catégories d'articles. Entrez simplement le terme de recherche> cliquez sur Rechercher> pour afficher les correspondances de tout le contenu de mon site. Simple;)
Mise à jour: De préférence, j'y parviendrais via une fonction ou une requête de base de données personnalisée plutôt que d'utiliser un plugin. C'est parce que je développe un thème et que je souhaite que cette fonctionnalité soit incluse dans la boîte au lieu de demander à un utilisateur de télécharger un plugin. (titre changé)
DeluxeBlogTips.com 1) a un article sur la façon de faire des recherches combinées dans les posts et les métadonnées. Fondamentalement, il implique deux requêtes via l'objet $ wpdb; une pour rechercher la table de méta pour obtenir une liste de post_id
s et l'autre est une requête de publications pour obtenir post_id
s. Vous fusionnez ensuite les tableaux et vous utilisez cela pour effectuer une requête avec un WP_Query
à l'aide de l'argument posts__in
.
L'utilisation de balises peut s'avérer un peu délicate, car 1. les balises sont destinées à regrouper les publications et 2. les balises et les taxonomies impliquent 3 tables différentes.
1) L'article lié n'est pas complètement correct. Ce devrait être $keyword = "%".like_escape( $keyword )."%";
.
À l’aide du lien affiché par @Wyck, consultez http://wordpress.org/extend/plugins/search-everything/ . Compte tenu de la complexité de la tâche, un plugin est vraiment votre meilleur choix.
Si vous êtes vraiment opposé à un plugin et que vous connaissez un peu le langage SQL, vous pouvez le faire avec la variable globale $ wpdb .
Par exemple, pour interroger toutes les publications contenant "sample_text" dans le titre, procédez comme suit:
global $wpdb;
$post = $wpdb->get_results("SELECT * FROM $wpdb->wp_posts WHERE post_title LIKE '%sample_text%' ");
Ensuite, vous feriez des choses similaires pour chacune des autres tables.