Получить ID меню по его названию

26 июн. 2013 г., 12:33:41
Просмотры: 27K
Голосов: 1

У меня есть меню с названием 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;
1
Комментарии

Что именно находится внутри $args?

kaiser kaiser
26 июн. 2013 г. 12:38:28
Все ответы на вопрос 4
0

Вы можете использовать функцию get_term_by и указать 'name' в параметре field.

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

Пример:

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

Вот ссылка на страницу кодекса: http://codex.wordpress.org/Function_Reference/get_term_by

Надеюсь, это поможет.

5 июн. 2014 г. 14:38:37
0

Всё, что вам нужно — это get_terms()

Напишем функцию wp_menu_id_by_name( $name )

/**
 * Получает ID меню по его названию
 * 
 * @param string $name Название меню
 * @return int|boolean ID меню или false, если не найдено
 */
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 'ID моего специального меню: ' . wp_menu_id_by_name( 'Моё специальное меню' );

// Выведет: ID моего специального меню: 3
23 мая 2014 г. 01:42:39
0

Я использовал функцию wp_get_nav_menu_object. Вы можете передать в неё слаг или название меню, чтобы получить объект меню, а затем получить из него term_id. Кодекс для wp_get_nav_menu_object.

$menu_obj = wp_get_nav_menu_object(MENU_SLUG);
$menu_id  = $menu_obj ? $menu_obj->term_id : 0;
9 июл. 2020 г. 13:21:40
0

Вы используете неправильный код, вместо этого используйте следующий:

global $wpdb;

$tablename = $wpdb->prefix.'terms'; // всегда используйте префикс таблицы
$menu_name = 'top-menu'; // название меню
$menu_id = $wpdb->get_results(
    "
    SELECT term_id
    FROM ".$tablename." 
    WHERE name= '".$menu_name."'
    "
);

// результаты в виде массива 
foreach($menu_id as $menu):
    echo $menu->term_id;
endforeach; 
26 июн. 2013 г. 13:48:25