web-dev-qa-db-fra.com

Utilisez correctement is_product_category ()

J'ai deux catégories de produits

  1. COMMERCIALISATION NUMÉRIQUE MULTILINGUE (ID 75)
  2. CANAUX DE VENTE INTERNATIONAUX (ID 107)

Je veux exécuter du code via si condition pour ces deux catégories seulement.

J'ai essayé d'utiliser ce code mais cela n'a pas fonctionné

if( is_product_category(107 || 75) ) { 

$term = get_queried_object();

$parent = $term->parent;

if (!empty($parent)) {
    $child_of = $parent;
} else {
    $child_of = $term->term_id;
}

$terms = get_terms( array(
    'taxonomy'      => 'product_cat',
    'child_of'      => $child_of,
) );

if ($terms) {
    foreach ( $terms as $category ) {

        $category_id = $category->term_id;
        $category_slug = $category->slug;
        $category_name = $category->name;
        $category_desc = $category->description;

        echo '<div class="'.$category_slug.'">';

        echo '<h2>'.$category_name.'</h2>';

        if ($category_desc) {
            echo '<p>'.$category_desc.'</p>';
        }

        $products_args = array(
            'post_type'     => 'product', 
            'tax_query'     => array( 
                array(
                    'taxonomy' => 'product_cat',
                    'field'    => 'term_id',
                    'terms'    => $category_id, 
                ),
            ),
        );

        $products = new WP_Query( $products_args );

        if ( $products->have_posts() ) { // only start if we hace some products

            // START some normal woocommerce loop

            woocommerce_product_loop_start();

            if ( wc_get_loop_prop( 'total' ) ) {

                while ( $products->have_posts() ) : $products->the_post();

                    /**
                     * Hook: woocommerce_shop_loop.
                     *
                     * @hooked WC_Structured_Data::generate_product_data() - 10
                     */
                    do_action( 'woocommerce_shop_loop' );

                    wc_get_template_part( 'content', 'product' );

                endwhile; // end of the loop.

            }

            woocommerce_product_loop_end();

            // END the normal woocommerce loop

            // Restore original post data, maybe not needed here (in a plugin it might be necessary)
            wp_reset_postdata();

        }
1
Nimesh Deo

is_product_category() doit être utilisé sur les pages d'archives de catégorie woocommerce uniquement, assurez-vous d'abord que vous êtes sur l'archive de catégorie.

au lieu du numéro de catégorie, utilisez le nom de slug de catégorie is_product_category('category-slug')

pas besoin d'exécuter la condition OR (||), utilisez simplement is_product_category('category-slug1','category-slug2') pour obtenir le même résultat

2
Kanon Chowdhury

Essayer:

if( is_product_category( 'category1-slug' ) || is_product_category( 'category2-slug' ) ) {
   //...
}
0
Bogdan Dragomir