Как получить ID текущего пункта меню?

7 июн. 2011 г., 00:20:39
Просмотры: 27.1K
Голосов: 3

Я пытаюсь получить id пункта меню, который имеет класс "current-menu-item". Не id текущей страницы, а именно id элемента навигации.

Пожалуйста, помогите

1
Комментарии

Я когда-то разобрался, как получить заголовок текущего пункта меню, вы сможете адаптировать это, чтобы возвращать ID вместо заголовка.

Jan Fabry Jan Fabry
7 июн. 2011 г. 01:04:12
Все ответы на вопрос 3
0

Возможно, с небольшим опозданием, но есть еще один способ сделать это:

$menu = wp_get_nav_menu_items($menu_id,array(
   'posts_per_page' => -1,
   'meta_key' => '_menu_item_object_id',
   'meta_value' => $post->ID // текущий отображаемый пост
));

var_dump($menu[0]->ID);

Поскольку элементы меню являются типами записей, вы можете использовать все параметры WP-Query, включая мета-запрос. Приведенный выше код выбирает все элементы меню, связанные с текущей записью, из меню, которое вы указываете через $menu_id.

23 нояб. 2012 г. 10:28:11
0

Это должно решить проблему Как получить заголовок current-menu-item в виде переменной?

но измените

$GLOBALS['wpse16243_title'] = $menu_item->title;

на

$GLOBALS['wpse16243_title'] = $menu_item->ID;

и теперь вы можете использовать глобальную переменную $wpse16243_title для получения ID

7 июн. 2011 г. 12:15:26
3

Лучшим способом будет использовать фильтр nav_menu_css_class. Вот как это может выглядеть:

function wpse19375_nav_class( $classes, $item ){
  if( !in_array( 'current-menu-item', $classes ) )
    return $classes;
  // $item - это объект 'current-menu-item'.
  return $classes;
}

add_filter( 'nav_menu_css_class', 'wpse19375_nav_class', 10, 2 );
7 июн. 2011 г. 00:53:08
Комментарии

спасибо, друг, но я не понимаю, как это вернет id

Leroy Leroy
7 июн. 2011 г. 12:08:51

Переменная $item - это объект меню. Она содержит всю необходимую информацию, включая ID.

John P Bloch John P Bloch
7 июн. 2011 г. 13:55:48

@John P Bloch, Но куда вы возвращаете $classes?

Steven Steven
15 авг. 2011 г. 23:07:11