Bearbeiten Sie bestimmte Knoten in WP_Admin_Bar

Ist es leicht möglich , Links in der globalen $wp_admin_bar Instanz $wp_admin_bar zu bearbeiten?

Solutions Collecting From Web of "Bearbeiten Sie bestimmte Knoten in WP_Admin_Bar"

Ja, ich bin kürzlich auf die Situation gestoßen, in der ich den Profil-Link im User-Info-Bereich der Admin-Leiste ändern wollte. Das Problem ist, dass Sie nur alle Knoten erhalten, hinzufügen und entfernen können. Merkte es an. Außerdem können Sie die Eigenschaft $wp_admin_bar->nodes nicht ändern, da sie privat ist.

Wenn Sie sie einfach entfernen und hinzufügen, verlieren Sie Ihre Bestellung und das Ganze sieht schrecklich aus. Jetzt hier ist meine Lösung:

 // void jw_edit_admin_bar ( mixed $id , string $property , string $value ) if(!function_exists('jw_edit_admin_bar')) { function jw_edit_admin_bar($id, $property, $value) { global $wp_admin_bar; if(!is_array($id)) { $id = array($id); } $all_nodes = $wp_admin_bar->get_nodes(); foreach($all_nodes as $key => $val) { $current_node = $all_nodes[$key]; $wp_admin_bar->remove_node($key); if(in_array($key, $id)) { $current_node->$property = $value; } $wp_admin_bar->add_node($current_node); } } } add_action('admin_bar_menu', function() { jw_edit_admin_bar(array('user-info', 'my-account'), 'href', 'http://www.nyan.cat'); }); 

Ok, also bin ich kürzlich auf ein Problem gestoßen, bei dem ich versucht habe, eine benutzerdefinierte Feiertags / Uhrzeit-Begrüßung für die WordPress Admin Toolbar zu erstellen und diese Antwort durchlaufen zu haben, was mich zu einem Pfad von Stunden vergeudeter Zeit geführt hat, da es eigentlich völlig unnötig ist. Sie müssen die Verwaltungssymbolleiste nicht zerstören und neu erstellen, um einen Knoten zu bearbeiten.

Die einfache Lösung für Juliens Problem ist ein 5-Zeilen-Zusatz zu Ihrer functions.php-Datei, die die gewünschte URL ersetzt:

  //----------------------------------------------------------------------------- /* change location of user profile page in admin toolbar */ add_filter( 'edit_profile_url', 'update_admin_bar_user_profile_url', 10, 3 ); function update_admin_bar_user_profile_url( $url, $user_id, $scheme ) { $url = site_url( '/edit-user-profile/' ); return $url; } //----------------------------------------------------------------------------- 

Wenn Sie nun ein wenig tiefer in das Bearbeiten / Bearbeiten der Admin Toolbar einsteigen möchten, können Sie etwas tun, das die Website-URL des Benutzers hinzufügt, wenn diese auf ihrer Profilseite als Knoten zum Benutzerprofil eingegeben wurde Panel (ein Link im “Untermenü”):

  /* --- add the user website link node in the admin toolbar --- */ add_action( 'admin_bar_menu', 'update_admin_bar_user_node', 250 ); function update_admin_bar_user_node( $wp_admin_bar ) { $user_id = get_current_user_id(); $current_user = wp_get_current_user(); $profile_url = get_edit_profile_url( $user_id ); if ( ! $user_id ) return; if ( current_user_can( 'read' ) ) { $profile_url = get_edit_profile_url( $user_id ); } elseif ( is_multisite() ) { $profile_url = get_dashboard_url( $user_id, 'profile.php' ); } else { $profile_url = false; } // Add the users website/link to the user-actions sub-menu if they have one $my_account = $wp_admin_bar->get_node( 'my-account' ); if( ! empty( $current_user->user_url ) && $my_account ){ $wp_admin_bar->add_node( array( 'parent' => 'user-actions', 'id' => 'user-url', 'title' => '' . __( 'My Website' ) . '', 'href' => esc_url( $current_user->user_url ) ) ); } } 

Hier ist ein Screenshot, wie diese Änderung im “my-account” “user-actions” Menü aussieht: Bildbeschreibung hier eingeben