Add collapse for submenus in dropdown wordpress

Viewed 35

I am using a plugin WCFM in which there is a filter to show Vendors on basis of categories, currently subcategories is having ----- sign before the title, what I want is to add collapse for Categories. Example: when user click on category name then collapsed subcategories should show to user and user can select the subcategory.

As of now I have more than 50 subcategories for each 10 categories, which makes list very lengthy, collapse will solve the issue.

Code:

<?php if( $category && apply_filters( 'wcfmmp_is_allow_store_list_category_filter', true ) ) { ?>
        <?php
        $vendor_categories = $WCFMmp->wcfmmp_vendor->wcfmmp_get_vendor_taxonomy( 0, 'product_cat' );
        if ( $vendor_categories ) {
            $preferred_taxonomy = 'product_cat';
            ?>
          <select id="wcfmmp_store_category" name="wcfmmp_store_category" class="wcfm-select wcfm_ele">
            <option value=""><?php _e( 'Choose Category', 'wc-multivendor-marketplace' ); ?></option>
              <?php
                foreach( $vendor_categories as $vendor_category_id => $vendor_category ) {
                    if( $vendor_category_id ) {
                        if( !apply_filters( 'wcfm_is_allow_store_list_taxomony_by_id', true, $vendor_category_id, $preferred_taxonomy ) ) continue;
                        if( is_array( $vendor_category ) && !empty( $vendor_category ) ) {
                            $vendor_term = get_term( absint( $vendor_category_id ), $preferred_taxonomy ); 
                            $tax_toggle_class = '';
                            if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                ?>
                                <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>><?php echo $vendor_term->name; ?></option>
                                <?php
                            }
                            foreach( $vendor_category as $vendor_category_child_id => $vendor_category_child ) {
                                $vendor_term = get_term( absint( $vendor_category_child_id ), $preferred_taxonomy );
                                if( !is_array( $vendor_category_child ) ) {
                                    if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                        if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                        $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                        ?>
                                        <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>—<?php echo $vendor_term->name; ?></option>
                                        <?php
                                    }
                                } else {
                                    ?>
                                    <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>—<?php echo $vendor_term->name; ?></option>
                                    <?php
                                    foreach( $vendor_category_child as $vendor_category_child2_id => $vendor_category_child2 ) {
                                        $vendor_term = get_term( absint( $vendor_category_child2_id ), $preferred_taxonomy ); 
                                        if( !is_array( $vendor_category_child2 ) ) {
                                            if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                                if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                                $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                                ?>
                                                <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>——<?php echo $vendor_term->name; ?></option>
                                                <?php
                                            }
                                        } else {
                                            ?>
                                            <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>——<?php echo $vendor_term->name; ?></option>
                                            <?php
                                            foreach( $vendor_category_child2 as $vendor_category_child3_id => $vendor_category_child3 ) {
                                                $vendor_term = get_term( absint( $vendor_category_child3_id ), $preferred_taxonomy ); 
                                                if( !is_array( $vendor_category_child3 ) ) {
                                                    if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                                        if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                                        $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                                        ?>
                                                        <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>———<?php echo $vendor_term->name; ?></option>
                                                        <?php
                                                    }
                                                } else {
                                                    ?>
                                                    <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>———<?php echo $vendor_term->name; ?></option>
                                                    <?php
                                                    foreach( $vendor_category_child3 as $vendor_category_child4_id => $vendor_category_child4 ) {
                                                        $vendor_term = get_term( absint( $vendor_category_child4_id ), $preferred_taxonomy ); 
                                                        if( !is_array( $vendor_category_child4 ) ) {
                                                            if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                                                if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                                                $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                                                ?>
                                                                <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>————<?php echo $vendor_term->name; ?></option>
                                                                <?php
                                                            }
                                                        } else {
                                                            ?>
                                                            <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>————<?php echo $vendor_term->name; ?></option>
                                                            <?php
                                                            foreach( $vendor_category_child4 as $vendor_category_child5_id => $vendor_category_child5 ) {
                                                                $vendor_term = get_term( absint( $vendor_category_child5_id ), $preferred_taxonomy ); 
                                                                if( !is_array( $vendor_category_child5 ) ) {
                                                                    if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                                                        if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                                                        $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                                                        ?>
                                                                        <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>—————<?php echo $vendor_term->name; ?></option>
                                                                        <?php
                                                                    }
                                                                } else {
                                                                    ?>
                                                                    <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>—————<?php echo $vendor_term->name; ?></option>
                                                                    <?php
                                                                    foreach( $vendor_category_child5 as $vendor_category_child6_id => $vendor_category_child6 ) {
                                                                        $vendor_term = get_term( absint( $vendor_category_child6_id ), $preferred_taxonomy ); 
                                                                        if( !is_array( $vendor_category_child6 ) ) {
                                                                            if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                                                                if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                                                                $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                                                                ?>
                                                                                <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>——————<?php echo $vendor_term->name; ?></option>
                                                                                <?php
                                                                            }
                                                                        } else {
                                                                            ?>
                                                                            <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>——————<?php echo $vendor_term->name; ?></option>
                                                                            <?php
                                                                            foreach( $vendor_category_child6 as $vendor_category_child7_id => $vendor_category_child7 ) {
                                                                                $vendor_term = get_term( absint( $vendor_category_child7_id ), $preferred_taxonomy ); 
                                                                                if( !is_array( $vendor_category_child7 ) ) {
                                                                                    if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                                                                        if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                                                                        $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                                                                        ?>
                                                                                        <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>———————<?php echo $vendor_term->name; ?></option>
                                                                                        <?php
                                                                                    }
                                                                                } else {
                                                                                    ?>
                                                                                    <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>>———————<?php echo $vendor_term->name; ?></option>
                                                                                    <?php
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        } else {
                            $vendor_term = get_term( absint( $vendor_category_id ), $preferred_taxonomy ); 
                            if( $vendor_term && $vendor_term->term_id && $vendor_term->name ) {
                                if( in_array( $vendor_term->term_id, $display_vendor_term) ) continue;
                                $display_vendor_term[$vendor_term->term_id] = $vendor_term->term_id;
                                ?>
                                <option value="<?php echo $vendor_term->term_id; ?>" <?php if( $vendor_term->term_id == $search_category ) echo 'selected'; ?>><?php echo $vendor_term->name; ?></option>
                                <?php 
                            }
                        }
                    } 
                }
                ?>
            </select>
        <?php } ?>
        <?php do_action( 'wcfmmp_after_store_list_category_filter', $args ); ?>
  <?php } ?>
0 Answers
Related