Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- global $post;
- $category_id = get_post_meta($post->ID, 'dynamic-menu', true);
- $term = get_term_by('name', $category_id, 'category');
- if($term != false) {
- $category_id = $term->term_id;
- update_post_meta($post->ID, 'dynamic-menu', $category_id);
- }
- if(!empty($category_id) && $category_id != 0) {
- //testing resets
- delete_transient('dynamic-menu');
- $prebuilt_menu = get_transient('dynamic-menu', array());
- if(!empty($prebuilt_menu[$category_id])) { echo $prebuilt_menu[$category_id]; }
- else {
- $cats = get_categories(array('child_of' => $category_id, 'order_by' => 'id', 'order' => 'asc'));
- $exclude = array();
- foreach($cats as $cat) { $exclude[] = $cat->term_id; }
- ob_start(); ?>
- <ul id='collapsible-menu'>
- <?php $query = new WP_query(array('order' => 'desc', 'category__in' => array($category_id), 'orderby' => 'id', 'post_type' => array('post'), 'category__not_in' => $exclude )); ?>
- <?php while($query->have_posts()) : $query->the_post(); ?>
- <ul class="section">
- <li class="header"><a href="<?php the_permalink(); ?>"><?php echo theme_functions::menu_title($query->post->ID); ?></a></li>
- </ul>
- <?php endwhile; ?>
- <?php foreach($cats as $cat):
- $menu = get_term_by('name', $cat->name, 'nav_menu');
- if(isset($menu->term_id)) :
- $items = wp_get_nav_menu_items($menu->term_id); ?>
- <ul class="section">
- <li class="header"><?php echo $cat->name; ?></li>
- <li class="children">
- <ul>
- <?php foreach((array)$items as $key => $menu_item) { echo "<li><a href='{$menu_item->url}'>{$menu_item->title}</a></li>"; } ?>
- </ul>
- </li>
- </ul>
- <?php
- else:
- $query = new WP_query(array(
- 'category__in' => array($cat->term_id),
- 'orderby' => 'id',
- 'order' => 'desc',
- 'post_type' => array('post'),
- 'nopaging' => true));
- ?>
- <ul class="section">
- <li class="header"><?php echo $cat->name; ?></li>
- <li class="children">
- <ul>
- <?php while($query->have_posts()) : $query->the_post(); ?>
- <li><a href="<?php the_permalink(); ?>"><?php echo theme_functions::menu_title($query->post->ID); ?></a></li>
- <?php endwhile; ?>
- </ul>
- </li>
- </ul>
- <?php endif; ?>
- <?php endforeach; ?>
- </ul>
- <?php
- $menu = ob_get_contents();
- ob_end_flush();
- $prebuilt_menu[$category_id] = $menu;
- set_transient('dynamic-menu', $prebuilt_menu, 60*60*12);
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement