Wie verwende ich die Abmeldefunktion für einen benutzerdefinierten Menü-Link?
2 Antworten
- Stimmen
-
- 2012-03-23
Sie sind sichnicht sicher,wie und wo Sieeine benutzerdefinierte Schaltflächeerstellen können,aber Sie könneneinen solchen Linkpro Filter hinzufügen: Fügen Sieeine Filterfunktionnach
'wp_nav_menu_objects'
undfügen Sie den Link dortein,wo Sieihnbenötigen.Hieristein grundlegendes Beispiel:
add_filter( 'wp_nav_menu_objects', 'wpse_46547_add_log_out_link', 10, 2 ); function wpse_46547_add_log_out_link( $sorted_menu_items, $args ) { $link = array ( 'title' => 'Log out', 'menu_item_parent' => 0, 'ID' => '', 'db_id' => '', 'url' => wp_logout_url() ); $sorted_menu_items[] = (object) $link; return $sorted_menu_items; }
Sie sollten den Code ändern:
- Überprüfen Sie,ob Sie sichim richtigen Menübefinden. Benötigen Siebeispielsweiseeine Klasse
has_log_out_link
für den Parametermenu_class
inwp_nav_menu
undtesten Sie$args->menu_class
. - I18nfür den Menütitel. ;)
- Setzen Sie
menu_item_parent
aufeine andere Post-ID als0
,wenn Sie den Linkin einem Untermenübenötigen.- Weitere Parameterfür den Linkfinden Sie unter meine andere Antwort ,um diese zu überprüfen.
Not sure how and where you can create a custom button, but you can add such a link per filter: Add a filter function to
'wp_nav_menu_objects'
and insert the link where you need it.Here is a basic example:
add_filter( 'wp_nav_menu_objects', 'wpse_46547_add_log_out_link', 10, 2 ); function wpse_46547_add_log_out_link( $sorted_menu_items, $args ) { $link = array ( 'title' => 'Log out', 'menu_item_parent' => 0, 'ID' => '', 'db_id' => '', 'url' => wp_logout_url() ); $sorted_menu_items[] = (object) $link; return $sorted_menu_items; }
You should modify the code:
- Check if you are on the correct menu. For example require a class
has_log_out_link
for themenu_class
parameter onwp_nav_menu
and test$args->menu_class
. - I18n for the menu title. ;)
- Set
menu_item_parent
to a post ID other than0
if you need the link in a sub menu. - There are more parameters for the link, see my other answer to inspect those.
-
Ich habe dorteine Seitenleiste,esgibt einbenutzerdefiniertes Menü,ich habe dort Seiten und Kategorien hinzugefügt.Aber das letzte Menüist Abmelden. Wenn der Benutzer auf das Abmeldemenü klickt,möchteich diesen Benutzer abmelden.I have side bar in there, there are custom menu, i have added there pages & category. But last menu is Logout, When user click on logout menu, i want to logout that user.
- 0
- 2012-03-23
- Ajay Patel
-
Ja,das habeich verstanden.Erstellen Sieein Element,fügen Siees dembenutzerdefinierten Menü hinzu,undfertig.Yes, I understood this. Create an item, add it to the custom menu, and you are done.
- 1
- 2012-03-23
- fuxia
-
- 2016-10-20
Fallsjemand anderes damit zu kämpfen hat,war dereinfachste Weg,denichgefunden habe,einfach den Menüpunkt Abmeldengenau dort hinzuzufügen,wo Sieihnmöchten,indem Sie diebenutzerdefinierte Linkoption verwenden.Machen Sie die URL zuetwas Einzigartigem wie logouturl undfügen Sie diesen Codeeinfach zu Ihrer Dateifunctions.php hinzu oder woimmer Siebenutzerdefinierten Code hinzufügenmöchten.
add_filter( 'wp_nav_menu_items', 'wp123e_loginout_menu_link', 10, 2 ); function wp123e_loginout_menu_link( $items, $args ) { if ($args->theme_location == 'primary') { if (is_user_logged_in()) { $items = str_replace('logouturl', wp_logout_url(), $items); } } return $items; }
Denken Sie daran,diesenersten Parameter von str_replacein die Zeichenfolge zu ändern,dieim benutzerdefinierten Link der Menüeinstellungen verwendet wird.Möglicherweisemüssen Sie auch dentheme_location vomprimären zumentsprechenden Speicherort ändern.
In case someone else struggles with this, the easiest way I found was to simply add the Log out menu item exactly where you want it by using the custom link option. Make the url something unique like logouturl and the simply add this code to your functions.php file or wherever you prefer adding custom code.
add_filter( 'wp_nav_menu_items', 'wp123e_loginout_menu_link', 10, 2 ); function wp123e_loginout_menu_link( $items, $args ) { if ($args->theme_location == 'primary') { if (is_user_logged_in()) { $items = str_replace('logouturl', wp_logout_url(), $items); } } return $items; }
Remember to change this first parameter of str_replace to the string used in the custom link of the menu settings. You might also need to change the theme_location from primary to the appropriate location.
Alle
Ich verwendeein benutzerdefiniertes WordPress-Menü undesgibt ein Menü als Abmelden. Ich kenne die WordPress-Abmeldefunktion
<?php echo wp_logout_url(); ?>
Aber wie kannichesim benutzerdefinierten Menü verwenden?