usuario1048676
Todo, estoy usando el siguiente código para obtener todos los menús de wordpress definidos que se crean:
$menus = wp_get_nav_menus();
Sé el ID del menú que quiero usar. Según la identificación del menú, me gustaría obtener las páginas que están en ese menú y la etiqueta de navegación correspondiente según la identificación del menú seleccionado. ¿Cómo puedo hacer eso?
De hecho descubrí esto:
$menu_items = wp_get_nav_menu_items($options['menu_choice']);
En ese ejemplo, las $opciones[‘menu_choice’] es el ID de menú seleccionado, pero lo que realmente me gustaría es dar el valor de enlace permanente. ¿Puedo sacar eso de esto?
¡Gracias por cualquier ayuda de antemano!
Eso es exactamente lo que quieres.
$menu_name="menu-id"; //e.g. primary-menu; $options['menu_choice'] in your case
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);
}
Ahora $menu_items es un objeto que contiene todos los datos de todos los elementos del menú. Para que pueda recuperar los datos necesarios usando foreach
círculo.
foreach ($menu_items as $menu_item) {
$id = $menu_item->ID;
$title = $menu_item->title;
$url = $menu_item->url;
if ($parent_id = $menu_item->menu_item_parent) {
//the element has a parent with id $parent_id, so you can build a hierarchically menu tree
}
else {
//the element doesn't have a parent
}
}
Puede encontrar más información interesante para esta pregunta, como las opciones de ordenación, en el sitio web oficial: http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items
Para acceder al título y la URL de cada elemento en un menú usando el wp_get_nav_menu_items()
función:
$menu_items = wp_get_nav_menu_items( $options['menu_choice'] );
foreach ( (array) $menu_items as $key => $menu_item ) {
$title = $menu_item->title;
$url = $menu_item->url;
}
¿Quieres mostrar un menú específico? por qué no usar una función más simple, wp_nav_menu
, y pasar un argumento de su ID de menú deseable? simplemente reemplace su menu_id con $menu_ID en el siguiente ejemplo:
<?php
$menu_args = array('menu' => $menu_ID );
wp_nav_menu( $menu_args );
?>
-
$menu_ID = ‘195’; $menu_args = array(‘menu’ => $menu_ID ); wp_nav_menu ($ menu_args);
-Pramod Jain
26 de mayo de 2017 a las 7:13
Para obtener el ID de la publicación, deberá extraerlo con esta función:
$id = get_post_meta( $menu_item->ID, ‘_menu_item_object_id’, true );
De lo contrario, la identificación será la publicación de tipo personalizado nav_menu que wordpress usa para los menús. Lo mismo ocurre con $url, puede llamarlo usando get_permalink($id);
<pre>
$menu_ID = '195'; // 195 is a menu id this id you can see
http://example.com/wp-admin/nav-menus.php?action=edit&menu=195
$menu_args = array('menu' => $menu_ID );
wp_nav_menu( $menu_args );
</pre>
¿Sabía que hay un sitio de StackExchange dedicado a WordPress? wordpress.stackexchange.com
– julien_c
15 de marzo de 2012 a las 10:17
verifique esta respuesta stackoverflow.com/a/37959604/1153703
– Bikesh M
22 de junio de 2016 a las 5:54