Deux étapes:
- Créer un short code qui propose l’alternative entre la page login ou la page author
- Un plug In qui permet de placer des shortcodes dans le menu
Le Shortcode:
function menu_users_shortcode( $atts ) {
if ( is_user_logged_in() ) {
$link_menu= '<a href="' . esc_url( get_author_posts_url( wp_get_current_user()->ID ) ) .
'">Mon espace cothurnes</a>';
} else {
$link_menu= '<a href="' . esc_url( wp_login_url() ) . '" title="Login">Login</a>';
}
return $link_menu;
}
add_shortcode( 'menu_shortcode', 'menu_users_shortcode' );
Le PlugIn:
- Dans Apparence->Menu => Penser à activer ‘Shortcode’ dans les options de l’ecran

- Mettre le nom du shortcode dans les Elements de menu
- Ne pas mettre de titre à l’élément (déjà inclu dans le code)
Remarques:
- Le code est presque celui indiqué dans cet article.
Néanmoins le ‘echo’ provoquait un bug: le lien était affiché 2 fois, et au dessus du menu.
Ici le ‘return’ permet d’éviter ça !!! - Pour gérer le CSS il est essentiel de rajouter une class dans le code.
Dans le cas de Cothurnes, j’ai appliqué la classe « elementor-item » pour que le CSS automatique du menu créé par Elementor puisse s’y appliquer aussi:
<?php
/*
Plugin Name: shortcode_user_page
Plugin URI: https://toolbox.benjamin-viguier.fr/2022/10/22/creer-un-lien-vers-la-page-user-dans-le-menu/
Description: Crée un shortcode [menu_shortcode] qui renvoie l'url de la page auteur de l'utilisateur connecté. Si pas de connection, renvoie vers la page login. Créé pour completer le plugin Shortcode In Menu
Author: BV (d'après Rup)
Version: 1.0
Author URI: http://benjamin-viguier.fr/
*/
//la classe elementor-item permet d'appliquer les mêmes regles CSS sur cet élément que sur les autres éléments du menu
function menu_users_shortcode( $atts ) {
if ( is_user_logged_in() ) {
$link_menu= '<a href="' . esc_url( get_author_posts_url( wp_get_current_user()->ID ) ) .
'"class="elementor-item">Mon espace</a>';
} else {
$link_menu= '<a href="' . esc_url( wp_login_url() ) . '"class="elementor-item" title="Login">Login</a>';
}
return $link_menu;
}
add_shortcode( 'menu_shortcode', 'menu_users_shortcode' );