Intereting Posts
Веб-сайт конференции с продажами билетов + спонсорские продажи с помощью WordPress? Архивный шаблон в сочетании с ползунком и регулярными сообщениями «Неожиданная ошибка» в запросах обновления Добавление динамической таблицы стилей Использование шаблонов WordPress для html-писем Как скрыть сообщение об ошибке WordPress? Не удалось открыть advanced-cache.php, который разбивает медиа-библиотеку Избавиться от панели инструментов WordPress.com на других сайтах? post_parent в настраиваемом типе сообщений Пред. / След. Навигация для текущей страницы? локализация переменной на шаблоне front-page.php терпит неудачу, но преуспевает в одной странице и в архиве таксономии Мета-запрос с логическим значением true / false Поиск лучшего виджета Twitter Каков наилучший способ визуализации Visual Composer в сообщениях, а не в страницах? Как удалить заголовок со страницы всех категорий и тегов?

Отображать имя пользователя в качестве родительского пункта меню

Используя этот код:

add_filter( 'wp_nav_menu_items', 'my_custom_menu_item'); function my_custom_menu_item($items) { if(is_user_logged_in()) { $user=wp_get_current_user(); $name=$user->display_name; // or user_login , user_firstname, user_lastname $items .= '<li><a href="">Welcome '.$name.'</a></li>'; } return $items; } 

Я могу отображать текущее имя пользователя в имени пользователя в навигации, но оно заменяет текущие пункты меню.

Что мне нужно, чтобы отобразить имя родительского элемента, которое затем я могу использовать систему меню wordpress для подпунктов? Я предполагаю, что id нужно в каком-то месте в меню, например # place_holder #, но я не уверен, как добраться до этого этапа.

Solutions Collecting From Web of "Отображать имя пользователя в качестве родительского пункта меню"

Работает отлично для меня, ничего не заменяется, оно просто добавлено к навигации. Вы уверены, что это не просто проблема стиля? Вы посмотрели источник документа, чтобы проверить, действительно ли он заменяет другие пункты меню?

Что именно вы подразумеваете, сделав это родительским элементом? Вы хотите включить

 <li><a href="">Item</a></li> 

в

 <li><a href="">Welcome $user</a> <ul> <li><a href="">Item</a></li> </ul> </li> 

в конце?

Чтобы изменить меню и сделать его легким и удобным, возможно, вы могли бы использовать что-то вроде этого:

 add_filter( 'wp_nav_menu_objects', 'my_custom_menu_item'); function my_custom_menu_item($items) { $remove_childs_of = array(); foreach($items as $index => $item) { if($item->title == "##currentuser##") { if(is_user_logged_in()) { $user=wp_get_current_user(); $name=$user->display_name; // or user_login , user_firstname, user_lastname $items[$index]->title = $name; } else { array_push($remove_childs_of, $item->ID); unset($items[$index]); } } if(!empty($remove_childs_of) && in_array($item->menu_item_parent, $remove_childs_of)) { array_push($remove_childs_of, $item->ID); unset($items[$index]); } } return $items; } не add_filter( 'wp_nav_menu_objects', 'my_custom_menu_item'); function my_custom_menu_item($items) { $remove_childs_of = array(); foreach($items as $index => $item) { if($item->title == "##currentuser##") { if(is_user_logged_in()) { $user=wp_get_current_user(); $name=$user->display_name; // or user_login , user_firstname, user_lastname $items[$index]->title = $name; } else { array_push($remove_childs_of, $item->ID); unset($items[$index]); } } if(!empty($remove_childs_of) && in_array($item->menu_item_parent, $remove_childs_of)) { array_push($remove_childs_of, $item->ID); unset($items[$index]); } } return $items; } не add_filter( 'wp_nav_menu_objects', 'my_custom_menu_item'); function my_custom_menu_item($items) { $remove_childs_of = array(); foreach($items as $index => $item) { if($item->title == "##currentuser##") { if(is_user_logged_in()) { $user=wp_get_current_user(); $name=$user->display_name; // or user_login , user_firstname, user_lastname $items[$index]->title = $name; } else { array_push($remove_childs_of, $item->ID); unset($items[$index]); } } if(!empty($remove_childs_of) && in_array($item->menu_item_parent, $remove_childs_of)) { array_push($remove_childs_of, $item->ID); unset($items[$index]); } } return $items; } 

Фильтр wp_nav_menu_objects позволяет нам работать над элементами, прежде чем они преобразуются в HTML. Вам нужно добавить элемент в свое меню, в котором отображается «## currentuser ##». Если пользователь вошел в систему, этот пункт меню покажет свое имя. Если это анонимный пользователь, элемент меню и его подменю будут удалены из навигации.