Skip to content

Instantly share code, notes, and snippets.

@twentyfortysix
Last active February 13, 2016 19:37
Show Gist options
  • Save twentyfortysix/51bf129fbe2f160985ce to your computer and use it in GitHub Desktop.
Save twentyfortysix/51bf129fbe2f160985ce to your computer and use it in GitHub Desktop.
WP - bootstrap menu generated from pages, excluding custim_meta defined
function custom_menu(){
$o = '';
$pid = get_queried_object_id();
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => 0,
'order' => 'ASC',
'orderby' => 'menu_order',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'not_in_menu',
'value' => 1,
'compare' => 'NOT LIKE',
),
array(
'key' => 'not_in_menu',
// 'value' => 1,
'compare' => 'NOT EXISTS',
),
),
);
// The Query
$the_query = new WP_Query( $args );
if ($the_query->have_posts()) :
$o .= '<div id="base_menu" class="collapse navbar-toggleable-xs menu">
<ul id="menu-top_menu" class="">';
// The Loop
while ( $the_query->have_posts() ) :
$the_query->the_post();
$ch_args = array(
'post_type' => 'page',
'post_parent'=> $the_query->post->ID,
);
$children = get_children($ch_args);
$dropdown = $a_dropdown = '';
$toggle = '';
if(!empty($children)){
$dropdown = 'dropdown';
$a_dropdown = 'dropdown-toggle';
$toggle = 'data-hover="dropdown" data-delay="0" data-close-others="true"';
}
$m = get_post_meta($the_query->post->ID, 'not_in_menu', true);
$o .= '<li class="menu-item menu-item-'.$the_query->post->ID.' '.$dropdown.'" id="menu-item-'.$the_query->post->ID.'">';
$o .= '<a '.$toggle.' class="nav-link '.$a_dropdown.'" href="'.get_permalink($the_query->post->ID).'">'.$m.get_the_title($the_query->post->ID).'</a>';
if(!empty($children)){
$o .= '<ul role="menu" class="dropdown-menu">';
foreach ($children as $child) {
$o .= '<li id="menu-item-'.$child->ID.'">
<a class="nav-link" href="'.get_permalink($child->ID).'">'.get_the_title($child->ID).'</a>
</li>';
}
$o .= '</ul>';
}
$o .= '</li>';
endwhile;
$o .= '<ul>
</div>';
endif;
// Restore original Query & Post Data
wp_reset_postdata();
return $o;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment