web-dev-qa-db-fra.com

Connexion préexistante pour changer de lien dans le sous-menu

J'utilise vingt douze avec un thème enfant. J'ai un lien dans mon menu principal de navigation où j'ai un lien pour "Mon compte" qui a un sous-menu avec un lien "Connexion/Enregistrer" qui redirige vers un fichier wp-login.php modifié. Puis-je transformer le lien "Login/Register" en un lien "Logout" lorsqu'un utilisateur est connecté? Si cela est possible, sauriez-vous comment je pourrais y parvenir ou me diriger dans la bonne direction?

Tout ce que j'ai trouvé en ligne ajoute un lien de connexion/déconnexion au menu principal. Je voudrais laisser le menu intact car le sous-menu "Mon compte" aura plus de liens ajoutés.

Je ne sais pas si cela est pertinent, mais j'ai créé le sous-menu à l'aide des menus Wordpress et créé un lien personnalisé pour le rediriger vers wp-login.php

Je vous remercie

1
Michele

Voici comment j'ai réussi à le configurer pour un client. Le code (qui devrait aller dans le functions.php du thème) suppose qu'il existe un élément de menu existant intitulé "Connexion". Fonctionne bien mais n'est peut-être pas la meilleure façon, alors la critique est la bienvenue.

function wpse0520_modify_login_menu_item( $item ) {

    if(isset($item->title)){
        if( $item->title =='Login' ) {
            if(is_user_logged_in()){
                $item->url = wp_logout_url( get_permalink() );
                $item->title = 'Logout';
            } else {
                $item->url = site_url( 'login' );
            }
        } elseif ( $item->title =='Logout' ) {
            if(!is_user_logged_in()){
                $item->url = site_url( 'login' );
                $item->title = 'Login';
            } else {
                $item->url = wp_logout_url( get_permalink() );
            }
        }
    }
    return $item;
}
add_filter( 'wp_setup_nav_menu_item', 'wpse0520_modify_login_menu_item' );
3
montrealist