web-dev-qa-db-fra.com

Recherche personnalisée: par données postales et métadonnées postales?

Je me bats avec une fonction de recherche WordPress. Peut-être que cela aidera simplement si quelqu'un peut m'expliquer le fonctionnement de la fonction intégrée dans WordPress. Mais voici ce que je veux:

  • Deux champs de recherche, par nom et par lieu
  • Le premier champ doit vérifier toutes les données de publication communes (uniquement les publications) + catégories
  • Le deuxième champ ne doit vérifier que les champs personnalisés des publications
  • Un seul champ doit être rempli

Tout d’abord, est-ce même possible ou dois-je utiliser le php + sql natif? Si cela est possible, pouvez-vous s'il vous plaît me donner un indice sur par où commencer?

5
tbleckert

La recherche intégrée WP ressemble seulement a Titre et contenu des articles/pages ', not par d'autres éléments comme les champs personnalisés et le contenu des codes courts. Il y a un certain nombre de plugs qui vont rechercher les champs personnalisés:

http://wordpress.org/extend/plugins/wp-custom-fields-search/

http://wordpress.org/extend/plugins/search-everything/

http://wordpress.org/extend/plugins/relevanssi/ ​​

Il existe également un filtre apply_filters_ref_array() qui "autorise les plugins à ajouter/supprimer/modifier de manière contextuelle la section de recherche de la requête de base de données".

Pour votre information, la recherche est définie dans query.php et ressemble à ceci:

...if ( !empty($q['s']) ) ... ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')

Le titre et le contenu sont donc les seuls éléments de la recherche par défaut.

6
hearvox

Vous pouvez personnaliser la recherche en créant votre propre modèle de recherche et en utilisant WP_Query . Dans la plupart des cas, il y a suffisamment de paramètres pour faire ce que vous voulez, vous n'avez pas besoin de plonger dans la base de données.

Exemple: création d'un modèle de recherche personnalisé .

Si vous avez besoin de quelque chose en dehors de ce que WP_Query peut faire, vous n'avez pas besoin de sortir du php/sql personnalisé, vous pouvez utiliser la classe WPDB de WordPress pour interagir avec la base de données .

1
Wyck