get menu id using its name

时间:2013-06-26 作者:Bhuvnesh

我有菜单名Social Network. 我想获取菜单ID。我尝试了以下操作,但没有成功。

  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;

4 个回复
SO网友:lucymtc

您可以使用函数get\\u term\\u by并在字段param中使用“name”。

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

$term = get_term_by(\'name\', \'Social Network\', \'nav_menu\');
$menu_id = $term->term_id;
以下是指向codex页面的链接:http://codex.wordpress.org/Function_Reference/get_term_by

希望这有帮助。

SO网友:Nabil Kadimi

你只需要get_terms()

让我们写wp_menu_id_by_name( $name )

/**
 * Gets a menu id by name
 * 
 * @param string $name The menu name
 * @return int|boolean The menu id or false if not found
 */
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;
}
让我们使用它
echo \'My Special Menu id is \' . wp_menu_id_by_name( \'My Special menu\' );

// Outputs: My Special Menu id is 3

SO网友:Balas

如果使用的代码不正确,请使用以下代码:

global $wpdb;

$tablename = $wpdb->prefix.\'terms\'; // use always table prefix
$menu_name = \'top-menu\'; // menu name
$menu_id = $wpdb->get_results(
    "
    SELECT term_id
    FROM ".$tablename." 
    WHERE name= \'".$menu_name."\'
    "
);

// results in array 
foreach($menu_id as $menu):
    echo $menu->term_id;
endforeach; 

SO网友:Oksana Romaniv

我用过wp_get_nav_menu_object. 您可以将menu slug或name传递给它以获取menu对象,然后可以访问term_id 从中。Codex for wp_get_nav_menu_object.

$menu_obj = wp_get_nav_menu_object(MENU_SLUG);
$menu_id  = $menu_obj ? $menu_obj->term_id : 0;

结束