Essayer de construire une recherche qui recherche non seulement les valeurs par défaut (titre, contenu, etc.) mais aussi un champ personnalisé spécifique.
Ma requête actuelle:
$args = array(
'post_type' => 'post',
's' => $query,
'meta_query' => array(
array(
'key' => 'speel',
'value' => $query,
'compare' => 'LIKE'
)
)
);
$search = new WP_Query( $args )
...
Cela renvoie des messages qui correspondent à la fois à la requête de recherche ET à la méta-requête, mais j'aimerais également qu'il renvoie également les messages où il correspond simplement à l'un d'eux.
Des idées?
Réponses:
Je cherche depuis des heures une solution à ce problème. La fusion de tableaux n'est pas la voie à suivre, surtout lorsque les requêtes sont complexes et que vous devez être en mesure d'ajouter des méta-requêtes à l'avenir. La solution la plus simple est de remplacer «s» par celui qui permet à la fois de rechercher des titres et des méta champs.
Usage:
la source
Beaucoup de code peut être réduit en utilisant une version modifiée de cette réponse .
la source
$result->post_count = count( $result->posts );
parce que je n'obtenais qu'un seul résultat autrement.J'ai optimisé @Stabir Kira répondre un peu
Vous pouvez maintenant rechercher par (titre, contenu, extrait) ou (champ méta) ou (les deux).
la source
Selon la suggestion de Nick Perkins , j'ai dû fusionner deux requêtes comme ceci:
la source
Eh bien, c'est une sorte de hack mais ça marche. Vous devez ajouter un filtre posts_clauses. Cette fonction de filtrage vérifie si l'un des mots de la requête existe dans le champ personnalisé "speel" et la requête restante reste intacte.
la source
j'ai eu le même problème, pour mon nouveau site je viens d'ajouter une nouvelle méta "title":
functions.php
Et puis .. ajoutez simplement quelque chose comme ça:
Que pensez-vous de cette solution de contournement?
la source
Toutes les solutions ci-dessus ne renvoient des résultats que si une correspondance existe dans la méta-clé de séparation. Si vous avez des résultats ailleurs mais pas dans ce domaine, vous n'obtiendrez rien. Personne ne veut ça.
Une jointure gauche est nécessaire. Ce qui suit en créera un.
la source
C'est une excellente solution mais vous devez corriger une chose. Lorsque vous appelez «post__in», vous devez définir un tableau d'ID et $ unique est un tableau de messages.
Exemple:
la source
La réponse @ satbir-kira fonctionne très bien, mais elle ne fera que rechercher dans la méta et le titre du message. Si vous voulez qu'il recherche par méta, titre et contenu, voici la version modifiée.
Et voici son utilisation:
Remplacez
$get['search']
par votre valeur de recherchela source