Blog

Comment inclure les champs personnalisés dans le recherche wordpress


custom fields wordpress

Dans ce billet je vais vous montrer comment inclure les champs personnalisés (ou ce que l’on appel en anglais custom fields) dans la recherche wordpress.

Pour inclure les custom fields dans la recherche wordress, il vous suffit d’inclure la fonction et le filtre (add_filter) ci-après dans le fichier fuction.php de votre thème wordpress, sans oublier bien sûr de remplacer le contenu du tableau $custom_fields par vos propres champs personnalisés.

 

function custom_search_where($pieces) {
    if (is_search() && !is_admin()) {
        global $wpdb;
        // A la place de champs 1, 2 , 3 vous mettez vos propre champs (custom fields
        $custom_fields = array('champs1','champs2','champs3');
        $keywords = explode(' ', get_query_var('s'));

        foreach ($custom_fields as $field) {
            foreach ($keywords as $word) {
                $query .= "((mypm1.meta_key = '".$field."')";
                $query .= " AND (mypm1.meta_value LIKE '%{$word}%')) OR ";
            }
        }
        if (!empty($query)) {
            $pieces['where'] = str_replace("(((wp_posts.post_title LIKE '%", "( {$query} ((wp_posts.post_title LIKE '%", $pieces['where']);
            $pieces['join'] = $pieces['join'] . " INNER JOIN {$wpdb->postmeta} AS mypm1 ON ({$wpdb->posts}.ID = mypm1.post_id)";
        }
    }
    return ($pieces);
}

add_filter('posts_clauses', 'custom_search_where', 20, 1);

//Resoudre le probleme des guillemets
remove_filter('the_content', 'wptexturize');


23 août 2014
Commentaires
  1. Luc said on 21 avril 2016 12 h 28 min:

    Merci pour se partage, as-tu une astuce PHP pour faire une recherche sur TOUS les champs personnalisés en une requête ?