web-dev-qa-db-fra.com

Rechercher tout (posts, pages, tags, cpt, méta)

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;

  • des postes
  • des pages
  • mots clés
  • type de message personnalisé (portefeuille)
  • taxonomie personnalisée utilisée dans le type d'article personnalisé (compétence, client)
  • métaboxes utilisés dans le type de message personnalisé (portfolio_caption, portfolio_excerpt, portfolio_credits, portfolio_links)

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é)

3
robflate

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_ids et l'autre est une requête de publications pour obtenir post_ids. 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 )."%";.

2
Manny Fleurmond

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

0
Matthew Boynes

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.

0
karllhughes