Créer un lien vers la page User dans le menu WordPress

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' );