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.

Publicités

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();
   }
}
Publicités

Laisser un commentaire