X

php – comment dois-je obtenir des produits basés sur des balises dans woocommerce


je veux écrire un shortcode pour obtenir ou filtrer les produits par balises. par exemple, je veux obtenir tous les produits qui ont à la fois des balises “masculin” et “sport”. je ne veux pas trouver séparément des produits qui ont “masculin” et ensuite trouver des produits qui ont “sport”. tous les produits qui ont les deux balises doivent être affichés et si un produit n’en a pas un ou tous doivent être ignorés. j’ai écrit ceci:

    function woo_products_by_tags_shortcode( $atts, $content = null ) {
  
    // Get attribuets
    extract(shortcode_atts(array(
        "tags" => ''
    ), $atts));
    
    ob_start();

    // Define Query Arguments
    $args = array( 
                'post_type'      => 'product', 
                'product_tag'    => $tags 
                );
    
    // Create the new query
    $loop = new WP_Query( $args );
    
    // Get products number
    $product_count = $loop->post_count;
    
    // If results
    if( $product_count > 0 ) :
    
        
            // Start the loop
            while ( $loop->have_posts() ) : $loop->the_post(); global $product;
            
                global $post;
    
                echo "<div class="products_item">";

                
                if (has_post_thumbnail( $loop->post->ID )) 
                    echo  get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); 
                else 
                    echo '<img src="'.$woocommerce->plugin_url().'/assets/images/placeholder.png" alt="" width="'.$woocommerce->get_image_size('shop_catalog_image_width').'px" height="'.$woocommerce->get_image_size('shop_catalog_image_height').'px" />';
                    echo "<h2 class="product_title"><a href="https://wordpress.stackexchange.com/questions/414027/".get_post_permalink()."">" . $thePostID = $post->post_title. "</a></h2>";

                echo "</div>";

            endwhile;
    wp_reset_query();

        
    
    endif; // endif $product_count > 0
    
    return ob_get_clean();

}
add_shortcode("woo_products_by_tags", "woo_products_by_tags_shortcode");

dans le code ci-dessus, j’ai deux problèmes: 1- si $tag est nul, tous les produits seraient retournés 2- tous les produits qui ont au moins une balise seraient retournés mais je veux montrer les produits qui ont toutes les balises