Bonjour !

Sur un woocommerce, en utilisant la recherche sur les produits. Le client me demande que la recherche ne se fasse pas uniquement sur le titre du produit mais également sur les étquettes (tags).

j'ai donc essayé de faire comme ceci :

function customSearchProduct( $query ) {
    if ( is_search() && $query->query_vars['post_type'] == 'product' && ! is_admin() ) {
        $tagProducts = get_terms( 'product_tag' );
        $tagsID      = [];

        array_map( function ( $currentitemTag ) use ( $query, &$tagsID ) {
            if ( strpos( $query->query['s'], strtolower( $currentitemTag->name ) ) !== false ) {
                $tagsID[] = $currentitemTag->term_id;
            }
        }, $tagProducts );

        $query->set( 'tax_query', [
            [
                'taxonomy' => 'product_tag',
                'field'    => 'term_id',
                'terms'    => $tagsID,
                'operator' => 'IN'
            ],
        ] );
    }
    return $query;
}

add_action( 'pre_get_posts', 'customSearchProduct' );

Le soucis c'est que j'ai un résultat vide. Quand j'essaye avec une chaine de caractère vide dans le formulaire de recherche, j'ai la recherche sur les étiquettes qui fonctionne... J'imagine que je ne fais pas de la bonne façon mais je n'arrive pas à voir quoi...

Merci d'avance pour l'aide.

Cordialement.

Aucune réponse