Intereting Posts
Есть ли функция PHP для замены значений двух переменных? $ wpdb-> update или $ wpdb-> вставить результаты с косой чертой, добавляемой перед кавычками не может нажимать элементы, отобранные другой страницей, используя ajax – $ (document) .on не работает PHP – добавление прозрачного PNG в GIF динамически Как получить идентификатор адреса доставки / биллинга заказа за пределами API-интерфейса Magento? Создание и приглашение группы к событию через график api Предупреждение: входные переменные превысили 1000 объединение запросов mysql AND OR в Codeigniter Преобразование между часовыми поясами в PHP все комбинации строк фиксированной длины, основанные на кодировке Как вы указываете предложение IN в динамическом запросе с использованием переменной? json_encode / json_decode – возвращает stdClass вместо Array в PHP Извлеките параметры $ _GET / $ _ POST и передайте их конструктору Как я могу шифровать данные паролей в базе данных с помощью PHP? Некоторые значения с плавающей запятой должны суммироваться до нуля в PHP, но не

Добавление класса current_page_item

Я работаю над WordPress-Design, и я хочу создать пользовательское меню.

$items = wp_get_nav_menu_items('Menu', array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true, 'update_post_term_cache' => false)); echo '<pre>'; print_r($items); echo '</pre>'; foreach($items as $item){ echo '<div class="menu_entry"><a href="'.$item->url.'">'.$item->title.'</a></div>'; } 

Проблема в том, что мне нужна «текущая страница» – класс, который создается WordPress – в стандартном меню.

Любые идеи, как добавить этот класс?

Вы можете сравнить с текущим идентификатором страницы / cat и т. Д. С элементами меню object_id, который является идентификатором страницы / категории и т. Д., С которой она связана.

Что-то вроде (непроверено);

 global $post; $thePostID = $post->ID; foreach($items as $item){ if($thePostID === $item->object_id) { echo '<div class="menu_entry"><a href="'.$item->url.'" class="current-menu-item">'.$item->title.'</a></div>'; }else{ echo '<div class="menu_entry"><a href="'.$item->url.'">'.$item->title.'</a></div>'; } } 

Время решения:

Функция WordPress, добавляющая эти классы, – _wp_menu_item_classes_by_context() . Это вызывается уже при использовании wp_nav_menu но не wp_get_nav_menu_items . К счастью, последний обеспечивает фильтр, поэтому мы можем сделать это сами:

 add_filter( 'wp_get_nav_menu_items', 'prefix_nav_menu_classes', 10, 3 ); function prefix_nav_menu_classes($items, $menu, $args) { _wp_menu_item_classes_by_context($items); return $items; }