Obtener el ID del menú usando su nombre

26 jun 2013, 12:33:41
Vistas: 27K
Votos: 1

Tengo un menú llamado Social Network. Quiero obtener el ID del menú. Intenté lo siguiente, pero no funcionó.

global $wpdb;
$menu_slug = 'social-network';
$menu_id = $wpdb->get_results(
    "
    SELECT TERM_ID
    FROM $wpdb->wp_terms
    WHERE name = ".$menu_slug."
    "
);
echo $menu_id;
1
Comentarios

¿Qué contiene exactamente $args?

kaiser kaiser
26 jun 2013 12:38:28
Todas las respuestas a la pregunta 4
0

Puedes usar la función get_term_by y usar 'name' en el parámetro field.

<?php get_term_by( $field, $value, $taxonomy, $output, $filter ) ?> 

Ejemplo:

$term = get_term_by('name', 'Social Network', 'nav_menu');
$menu_id = $term->term_id;

Aquí está el enlace a la página del codex: http://codex.wordpress.org/Function_Reference/get_term_by

Espero que esto ayude.

5 jun 2014 14:38:37
0

Todo lo que necesitas es get_terms()

Escribamos wp_menu_id_by_name( $name )

/**
 * Obtiene un ID de menú por su nombre
 * 
 * @param string $name El nombre del menú
 * @return int|boolean El ID del menú o false si no se encuentra
 */
function wp_menu_id_by_name( $name ) {
    $menus = get_terms( 'nav_menu' ); 

    foreach ( $menus as $menu ) {
        if( $name === $menu->name ) {
            return $menu->term_id;
        }
    }
    return false;
}

Usémoslo

echo 'El ID de Mi Menú Especial es ' . wp_menu_id_by_name( 'Mi Menú Especial' );

// Salida: El ID de Mi Menú Especial es 3
23 may 2014 01:42:39
0

He utilizado la función wp_get_nav_menu_object. Puedes pasarle el slug o nombre del menú para obtener el objeto del menú y luego acceder al term_id desde él. Codex para wp_get_nav_menu_object.

$menu_obj = wp_get_nav_menu_object(MENU_SLUG);
$menu_id  = $menu_obj ? $menu_obj->term_id : 0;
9 jul 2020 13:21:40
0

No estás usando el código correcto, usa este en su lugar:

global $wpdb;

$tablename = $wpdb->prefix.'terms'; // usa siempre el prefijo de tabla  
$menu_name = 'menu-principal'; // nombre del menú
$menu_id = $wpdb->get_results(
    "
    SELECT term_id
    FROM ".$tablename." 
    WHERE name= '".$menu_name."'
    "
);

// resultados en array
foreach($menu_id as $menu):
    echo $menu->term_id;
endforeach;
26 jun 2013 13:48:25