Come utilizzare la funzione di logout sul collegamento del menu personalizzato?
2 risposta
- voti
-
- 2012-03-23
Non sei sicuro di comee dovepuoi creare unpulsantepersonalizzato,mapuoi aggiungere un collegamento di questotipoperfiltro: Aggiungi un funzione difiltroper
'wp_nav_menu_objects'
e inserisciil link doveti serve.Ecco unesempio dibase:
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; }
Dovresti modificareil codice:
- Controlla diesserenelmenu corretto. Adesempio,richiedi una classe
has_log_out_link
perilparametromenu_class
suwp_nav_menu
e prova$args->menu_class
. - I18nperiltitolo delmenu. ;)
- Imposta
menu_item_parent
su un ID articolo diverso da0
se haibisogno del linkin un sottomenu. - Ci sonopiùparametriperil collegamento,vedere lamia altra risposta peresaminarli.
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.
-
Ho unabarra laterale,ci sonomenupersonalizzati,ho aggiuntopaginee categorie.Ma l'ultimomenu è Logout,quando l'utentefa clic sulmenu Logout,voglio disconnetterlo.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
-
Sì,l'ho capito.Crea unelemento,aggiungilo almenupersonalizzatoe ilgioco èfatto.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
Nel casoin cui qualcun altro abbiaproblemi con questo,ilmodopiù semplice che hotrovato è stato semplicemente aggiungere la voce dimenu Esciesattamente dove vuoi utilizzando l'opzione di collegamentopersonalizzato.Rendi l'URL qualcosa di unico come logouturle aggiungi semplicemente questo codice altuofilefunctions.php o dovepreferisci aggiungere codicepersonalizzato.
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; }
Ricorda di cambiare questoprimoparametro di str_replace con la stringa utilizzatanel collegamentopersonalizzato delleimpostazioni delmenu.Potrebbe ancheesserenecessariomodificareiltema_location daprincipale a quello appropriato.
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.
Tutti
Sto usandoilmenupersonalizzato di wordpresse c'è unmenu come Logout. Conosco lafunzione di logout di wordpress
<?php echo wp_logout_url(); ?>
Ma comeposso usarlonelmenupersonalizzato?