Angezeigten Benutzernamen im WordPress-Menü anzeigen

Ich verwende WordPress mit UserPro und möchte, dass in meinem Menü der Vorname des angemeldeten Benutzers angezeigt wird, der mit der Benutzerprofilseite verknüpft ist.

Das Problem ist, dass in meiner Menüstruktur die Menüoption “Profil” ein Untermenü haben soll, das “Profil bearbeiten”, “Senden” und “Abmelden” enthält.

Dies ist der Code, den ich momentan verwende:

/*earlier code, currently commented out, for function to display username in menu using #profile_name# placeholder function give_profile_name($atts){ echo userpro_profile_data('first_name', get_current_user_id()); } add_shortcode('profile_name', 'give_profile_name'); add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' ); function my_dynamic_menu_items( $menu_items ) { foreach ( $menu_items as $menu_item ) { if ( '#profile_name#' == $menu_item->title ) { global $shortcode_tags; if ( isset( $shortcode_tags['profile_name'] ) ) { // Or do_shortcode(), if you must. $menu_item->title = call_user_func( $shortcode_tags['profile_name'] ); } } } return $menu_items; } end of earlier code */ //currently in use, unlinked code 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->user_firstname; $items .= '
  • '.$name.''; } return $items; }
  • Ich kann herumfummeln und versuchen, das Untermenü unter dem Menü hinzuzufügen, indem ich mit dem Code von Firebug herumspiele, aber das würde manuelle Änderungen an allen Links in der functions.php bedeuten, was mühsam wäre.

    Ich möchte in der Lage sein, die Untermenüpunkte einfach über das WordPress-Menü hinzuzufügen, zu bearbeiten, zu entfernen und umzuleiten.

    Bitte beraten.

    Solutions Collecting From Web of "Angezeigten Benutzernamen im WordPress-Menü anzeigen"

    Okay, ich habe eine Lösung gefunden (und sie kann für jedes Thema verwendet werden, mit jedem Plugin, da es nur corefunktionen von WordPress verwendet).

    Benennen Sie im Menü den Menüeintrag, in dem der Name des Benutzers mit einem Platzhalter angezeigt werden soll (siehe Abbildung unten). Beispiel: # profilname #, # benutzer #, # zufällig #

    Bildbeschreibung hier eingeben

    Fügen Sie nun den folgenden Code zur functions.php Ihres Child-Theme hinzu:

     function give_profile_name($atts){ $user=wp_get_current_user(); $name=$user->user_firstname; return $name; } add_shortcode('profile_name', 'give_profile_name'); add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' ); function my_dynamic_menu_items( $menu_items ) { foreach ( $menu_items as $menu_item ) { if ( '#profile_name#' == $menu_item->title ) { global $shortcode_tags; if ( isset( $shortcode_tags['profile_name'] ) ) { // Or do_shortcode(), if you must. $menu_item->title = call_user_func( $shortcode_tags['profile_name'] ); } } } return $menu_items; } 

    Wenn Sie Ihren eigenen Platzhalter verwenden, denken Sie daran, # profile_name # durch den Namen Ihres benutzerdefinierten Platzhalters im obigen Code zu ersetzen.

    Entschuldigung, falls ich den Begriff “Platzhalter” missbraucht habe.

    Der Code:

     function give_profile_name($atts){ ... } 

    gibt eine Warnung ab. Besser ist:

     function give_profile_name(){ ... } 

    Und es ist besser zu erkennen, ob der Benutzer angemeldet ist oder nicht. Wie so:

     function give_profile_name(){ $user=wp_get_current_user(); if(!is_user_logged_in()) $name = "User not logged in"; else $name=$user->user_firstname.' '.$user->user_lastname; return $name; } 

    Hoffe das hilft.

    Kein Shortcode erforderlich

     add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' ); function my_dynamic_menu_items( $menu_items ) { foreach ( $menu_items as $menu_item ) { if ( strpos($menu_item->title, '#profile_name#') !== false) { $menu_item->title = str_replace("#profile_name#", wp_get_current_user()->user_firstname, $menu_item->title); } } return $menu_items; }