Obține slug-ul elementului de meniu
Folosesc meniuri personalizate și aș dori să obțin slug-urile elementelor din meniu. Este posibil acest lucru?
// Obține meniul de navigare bazat pe $menu_name (același ca 'theme_location' sau argumentul 'menu' pentru wp_nav_menu)
// Acest cod se bazează pe codul wp_nav_menu pentru a obține ID-ul meniului din slug-ul meniului
$menu_name = 'main-menu';
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menu_items = wp_get_nav_menu_items($menu->term_id);
$menu_list = '<ul id="menu-' . $menu_name . '">';
foreach ( (array) $menu_items as $key => $menu_item ) {
$title = $menu_item->title;
$url = $menu_item->url;
$menu_list .= '<li><a href="#' . $url . '">' . $title . '</a></li>';
}
$menu_list .= '</ul>';
}
echo $menu_list;
http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items
Deci ai ID-ul postării la dispoziție. Poți folosi această funcție personalizată pentru a obține slug-ul oricărei postări.
function get_the_slug( $id=null ){
if( empty($id) ):
global $post;
if( empty($post) )
return ''; // Nu există variabilă globală $post disponibilă.
$id = $post->ID;
endif;
$slug = basename( get_permalink($id) );
return $slug;
}
Aceasta va returna slug-ul postării specificate pe care o poți transmite ca argument. Implicit, va returna slug-ul postării curente.

Am creat o soluție care obține meniurile și extrage slug-urile din acestea. Nu sunt sigur dacă funcționează perfect cu meniurile personalizate, dar cel puțin atunci când meniul utilizează postări, categorii sau alte opțiuni pe care WordPress le oferă, funcționează.
Puteți plasa această funcție în fișierul functions.php și să o apelați oriunde în tema dumneavoastră.
//Trebuie să transmiți slug-ul meniului ca parametru funcției.
//Înlocuiți $current_menu cu slug-ul meniului din care doriți să obțineți slug-urile.
function get_menu_slugs( $current_menu ) {
$slugs_menu = array();
$array_menu = wp_get_nav_menu_items( $current_menu );
foreach ( $array_menu as $m ) {
$single_slug = basename( $m->url );
$slugs_menu[] = $single_slug;
}
return $slugs_menu;
}
Această funcție va returna un array cu lista de slug-uri extrase din URL-urile meniului.
