J'essaie de rechercher un type d'article personnalisé en utilisant un WP_Query
comme suit:
$searchTerm = '%my book%';
$args = array(
'post_type' => 'books',
'meta_query' = array(
'relation' => 'OR',
array(
'key' => 'book_title',
'value' => $searchTerm,
'compare' => 'LIKE'
),
array(
'key' => 'book_description',
'value' => $searchTerm,
'compare' => 'LIKE'
)
);
);
$query = new WP_Query($args);
La requête ci-dessus fonctionne très bien. En fait, je peux changer l'opérateur compare
pour n'importe lequel des opérateurs supportés par mysql tels que:
=,
\>=,
<=,
\>,
<,
LIKE,
RLIKE,
BETWEEN
Cependant, je ne parviens pas à comprendre comment utiliser l'opérateur MATCH AGAINST
. Dans MySQL, cela fonctionne comme ceci:
select *
from wp_postmeta
where meta_key = 'book_title'
and match(meta_value) against ('my book');
Mais je ne trouve pas le moyen de l'utiliser avec WP_Query
, merci d'avance.
Autant que je sache, vous ne pouvez pas utiliser MATCH()... AGAINST
dans WP_Query
. Les valeurs possibles pour la comparaison sont les suivantes:
=
!=
>
>=
<
<=
LIKE
NOT LIKE
IN
NOT IN
BETWEEN
NOT BETWEEN
NOT EXISTS
REGEXP
NOT REGEXP
RLIKE
La valeur par défaut est =
. Cependant, vous pouvez utiliser MATCH() AGAINST
dans une requête générique à utiliser avec $wpdb
. Par exemple:
$wpdb->prepare(" AND MATCH($wpdb->posts.post_title, $wpdb->posts.post_content) AGAINST(%s)", $search );
Vous pouvez également utiliser certains paramètres __not_in
dans votre requête, tels que:
$query = new WP_Query( array( 'tag__not_in' => array( 1, 2, 3 ) ) );
Qui recherchera les publications qui ne possèdent pas les identifiants de balises 1, 2 et 3.
Ceci Page Codex et Ticket principal pourrait vous aider.