Folosirea corectă a funcției is_product_category()

20 iun. 2018, 14:16:47
Vizualizări: 19.8K
Voturi: 1

Am două categorii de produse:

  1. MARKETING DIGITAL MULTILINGV (ID 75)
  2. CANALE DE VÂNZĂRI INTERNAȚIONALE (ID 107)

Vreau să execut un cod specific prin intermediul unei condiții if doar pentru aceste două categorii.

Am încercat să folosesc acest cod dar nu a funcționat

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() ) { // începe doar dacă avem produse

            // ÎNCEPE bucla normală WooCommerce

            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; // sfârșitul buclei.

            }

            woocommerce_product_loop_end();

            // SFÂRȘIT bucla normală WooCommerce

            // Restaurează datele postării originale, poate nu este necesar aici (într-un plugin ar putea fi necesar)
            wp_reset_postdata();

        }
0
Toate răspunsurile la întrebare 3
0

is_product_category() trebuie utilizat doar pe paginile de arhivă ale categoriilor WooCommerce, așa că mai întâi asigură-te că te afli pe o pagină de arhivă a categoriei.

în loc de numărul categoriei, folosește numele slug al categoriei is_product_category('category-slug')

nu este nevoie să rulezi condiția SAU(||), folosește direct is_product_category('category-slug1','category-slug2') pentru a obține același rezultat

20 iun. 2018 14:46:31
0

Încearcă:

if( is_product_category( 'category1-slug' ) || is_product_category( 'category2-slug' ) ) {
   //...
}
20 iun. 2018 14:42:31
0

Pentru câteva categorii, ar trebui să utilizați slug-uri în array atunci când folosiți funcția is_product_category(). Exemplu mai jos. Testat și funcționează.

if( is_product_category( array('category1-slug', 'category2-slug' )) )
10 mar. 2020 17:10:14