Ottenere l'ID del menu utilizzando il suo nome

26 giu 2013, 12:33:41
Visualizzazioni: 27K
Voti: 1

Ho un menu chiamato Social Network. Voglio ottenere l'ID del menu. Ho provato il seguente codice, ma non ha funzionato.

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

Cosa contiene esattamente $args?

kaiser kaiser
26 giu 2013 12:38:28
Tutte le risposte alla domanda 4
0

Puoi utilizzare la funzione get_term_by e usare 'name' nel parametro field.

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

Esempio:

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

Ecco il link alla pagina del codex: http://codex.wordpress.org/Function_Reference/get_term_by

Spero che questo ti sia utile.

5 giu 2014 14:38:37
0

Tutto ciò di cui hai bisogno è get_terms()

Scriviamo wp_menu_id_by_name( $name )

/**
 * Ottiene l'ID di un menu dal suo nome
 * 
 * @param string $name Il nome del menu
 * @return int|boolean L'ID del menu o false se non trovato
 */
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;
}

Usiamolo

echo 'L\'ID del mio menu speciale è ' . wp_menu_id_by_name( 'My Special menu' );

// Output: L'ID del mio menu speciale è 3
23 mag 2014 01:42:39
0

Ho utilizzato la funzione wp_get_nav_menu_object. Puoi passargli lo slug o il nome del menu per ottenere l'oggetto menu e poi puoi accedere al term_id da esso. Codex per wp_get_nav_menu_object.

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

Non stai utilizzando il codice corretto, usa questo invece:

global $wpdb;

$tablename = $wpdb->prefix.'terms'; // usa sempre il prefisso delle tabelle
$menu_name = 'top-menu'; // nome del menu
$menu_id = $wpdb->get_results(
    "
    SELECT term_id
    FROM ".$tablename." 
    WHERE name= '".$menu_name."'
    "
);

// risultati in array 
foreach($menu_id as $menu):
    echo $menu->term_id;
endforeach; 
26 giu 2013 13:48:25