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:
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?
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.
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 .