WordPress – Comment faire une requete like = « %% »
Pour faire des requêtes sur WordPress, je suis habitué à utiliser WP_Query($args).
Dans cet exemple, il est question d’ajouter un like = « %title% » dans notre requête.
Ici une simple requete qui ajoute dans l’array a_response_array tous nos posts:
$args = array(
'post_status' => 'publish',
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$a_response_array[] = get_the_ID() . "-" .get_the_title();
}
}
Pour ajouter le like, on commence par mettre la valeur dans les arguments sous « search_title ».
Ensuite avant de récupérer tous les postes, on ajouter dans le where le like voulu.
$args = array(
'post_status' => 'publish',
'search_title' => $search_something
);
function title_filter( $where, &$wp_query ){
global $wpdb;
if ( $search_term = $wp_query->get( 'search_title' ) ) {
$where .= ' AND (concat(' . $wpdb->posts . '.ID,' . $wpdb->posts . '.post_title) LIKE \'%' . esc_sql( like_escape($search_term) ) . '%\')';
}
return $where;
}
add_filter( 'posts_where', 'title_filter', 10, 2 );
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$a_response_array[] = get_the_ID() . "-" .get_the_title();
}
}