گرفتن تمامی دسته های فرزند یک دسته خاص

irpcpro

تازه وارد
سلام .
من داخل ووکامرس ، دسته ها ، یکسری دسته هایی رو ایجاد کردم و میشه گفت parent child های زیادی داره .
به فرض مثال زیر :

car
pride
house
cat1
big
small
red
green
blue
little
cat2
tiny
cat3
animal
cat
bird


الان کدی رو نیاز دارم ک به فرض آیدی دسته cat۱ رو بهش دادم ، کامل با استایل li و ul بیاد کل منو زیرش رو چاپ کنه :

cat1
big
small
red
green
blue
little


کدهای متفاوتی رو پیدا کردم ولی مشکلات زیادی داشت و child هارو زیر هرکدوم چاپ نمیکرد یا استایل li و ul نمیداد و ....
ممنون میشم کمکم کنید .
تشکر

 

irpcpro

تازه وارد
خیلی ممنون از پاسختون . تشکر ...

ولی دقیقا اون چیزی ک میخوام نیست .

چون هم child های اون دسته مورد نظر رو چاپ نمیکنه ، و نه با استایل ul و li

این هم کدی ک استفاده میکنم هست ، ولی مشکلاتی ک بالا گفتم رو داره و هم اینکه نمیشه بهش آیدی دسته مورد نظر رو داد :

کد:
    echo return_terms_index();
    function return_terms_index() {
        $taxonomies = array(
            'product_cat',
        );
        $args = array(
            'parent'            => 0,
            'orderby'           => 'parent',
            'order'             => 'ASC',
        );

        $terms = get_terms($taxonomies, $args);

        $return .= '<ul class="allBgListCatChild">';

        foreach ( $terms as $term ) {


            
                // return terms (working)
                $return .= sprintf(
                    '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',
                    $term->term_id,
                    $term->name,
                    $term->description
                );

                $subterms = get_terms($taxonomies, array(
                    'parent' => $term->term_id,
                    'hide_empty' => false
                ));


                $return .= '<ul>';
                foreach ($subterms as $subterm) {
                    //return sub terms (not working :( )
                    $return .= sprintf(
                        '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',
                        $subterm->term_id,
                        $subterm->name,
                        $subterm->description
                    );
                    $return .= '</li>'; //end subterms li
                }
                $return .= '</ul>'; //end subterms ul


                $return .= '</li>'; //end terms li
            


        } //end foreach term

        $return .= '</ul>';

        return $return;
    }
 
آخرین ویرایش توسط مدیر:

irpcpro

تازه وارد
بله ولی فقط تا یک درجه از child رو چاپ میکنه.

یعنی داخل مثالی ک زدم ، فقط اینو چاپ میکنه :

کد:
car
	pride
house
	cat1
	cat2
	cat3
animal
	cat
	bird
 
آخرین ویرایش توسط مدیر:

irpcpro

تازه وارد
خودم به جواب مشکل رسیدم تا حدی ..

چون برای هر عمق child ها ، باید یک کد داخلش اضافه بشه .

میشه تا هر عمقی ک بخواییم چاپ کنه و قسمت get_queried_object_id() هر آیدی ک قرار بدین ، میاد از چایلد اونجا به بعد رو چاپ میکنه :

برای کسایی هم ک به این مشکل بر خوردن میتونن از این تابع استفاده کنن :

کد:
    echo return_terms_index();


    function return_terms_index() {
        $taxonomies = array(
            'product_cat',
        );
        $args = array(
            'parent' => get_queried_object_id(),
            'orderby'           => 'parent',
            'order'             => 'ASC',
            'hide_empty' => 0,
        );

        $terms = get_terms($taxonomies, $args);

        $return .= '<ul class="allBgListCatChild">';
        foreach ( $terms as $term ) {

//            print_r($term);
            if(18 == 18) {
                // return terms (working)
                $return .= sprintf(
                    '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',
                    $term->term_id,
                    $term->name,
                    $term->description
                );

                //For Child
                $subterms = get_terms($taxonomies, array(
                    'parent' => $term->term_id,
                    'hide_empty' => false
                ));

                $return .= '<ul>';
                foreach ($subterms as $subterm) {
                    //return sub terms (not working :( )
                    $return .= sprintf(
                        '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',
                        $subterm->term_id,
                        $subterm->name,
                        $subterm->description
                    );



                    //For Child
                    $subterms2 = get_terms($taxonomies, array(
                        'parent' => $subterm->term_id,
                        'hide_empty' => false
                    ));
                    $return .= '<ul>';
                    foreach ($subterms2 as $subterm2) {
                        //return sub terms (not working :( )
                        $return .= sprintf(
                            '<li id="category-%1$s" class="toggle">%2$s <span class="cat-description">%3$s</span>',
                            $subterm2->term_id,
                            $subterm2->name,
                            $subterm2->description
                        );
                        $return .= '</li>'; //end subterms li
                    }
                    $return .= '</ul>'; //end subterms ul




                    $return .= '</li>'; //end subterms li
                }
                $return .= '</ul>'; //end subterms ul


                $return .= '</li>'; //end terms li
            }

        } //end foreach term

        $return .= '</ul>';

        return $return;
    }
 
بالا