J'essaie de créer une recherche personnalisée pour ma librairie. J'ai deux champs méta personnalisés appelés vbs_author et vbs_publisher qui contiennent le nom de l'auteur et de l'éditeur de ce produit (livre).
Jusqu'à présent, ce que j'ai est:
$s = get_search_query();
$args = array(
'post_type' => 'product',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'vbs_author',
'value' => $s,
'compare' => 'LIKE'
),
array(
'key' => 'vbs_publisher',
'value' => $s,
'compare' => 'LIKE'
)
)
);
$the_query = new WP_Query( $args );
Lorsque je recherche un auteur XYZ
ou un éditeur ABC
individuellement, les résultats sont satisfaisants. Mais lorsque je combine un auteur et un éditeur dans la même recherche, par exemple XYZ ABC
, bien qu'il s'agisse de valeurs pour vbs_author
et vbs_publisher
pour le même produit, la requête renvoie 0 résultat.
J'ai essayé de changer la relation en AND
mais cela ne fonctionnait toujours pas ...
Divisez la requête par un espace et changez 'compare' en 'IN' pour pouvoir utiliser le tableau de méta-valeurs:
<?php
$s = get_search_query();
$s_array = explode( ' ', $s ); // search query array
$args = array(
'post_type' = > 'product',
'meta_query' = > array(
'relation' => 'OR',
array(
'key' => 'vbs_author',
'value' => $s_array,
'compare' => 'IN', // note the change
),
array(
'key' => 'vbs_publisher',
'value' => $s_array,
'compare' => 'IN', // note the change
),
)
);
Peut-être devrez-vous ensuite supprimer les doublons.