Home » wordpress » Créer un menu overlay sur un seul item de menu
Créer un menu overlay sur un seul item de menu
Comment créer un mega menu en overlay à partir d’un simple lien dans le menu
Pour un mega-menu classique, en version dropdown, on trouve d’innombrables plugins wordpress très efficaces. Vous en avez déjà une longue liste sur wpmudev par exemple. Notre but ici n’est pas d’avoir un « dropdown-menu » ( menu déroulant ) gigantesque, mais bien un sous menu qui prend toute la largeur de l’écran avec un effet d’opacité ou dans certains cas, une couleur d’arrière plan.
Dans un précédent tuto, je montrai un exemple de menu overlay classique, avec une icone d’ouverture et de fermeture. Tout le menu était intégré dans cette page pleine largeur.
Aujourd’hui, on va donc voir comment réaliser la même chose, mais à partir d’un seul item de menu. Pour rendre ce sous-menu plus attractif, on l’intègre dans un conteneur pleine largeur qui s’ouvre au clic. Voici donc les étapes.
La source
Ce tuto est largement inspiré d’un ce tutoriel en anglais qui explique comment créer un mega-menu classique. Il va même au delà puisqu’il donne la possibilité d’ajouter des widgets directement dans le menu. Son principe est de créer une sidebar qu’on appelle dans un nouvel emplacement de menu, dans laquelle on collerait un widget menu, mais aussi n’importe quel autre type de widget. Je reprend ici le même principe :
je crée un nouvel emplacement de menu dans le fichier functions.php.
Je crée mon menu en drag and drop via l’onglet menu du backoffice.
J’appelle ensuite ce menu dans mon fichier header.php.
Grâce au css et/ou au js, je le fais apparaître en pleine page avec un voile d’opacité.
Le menu principal
Dans un fichier à part, ou dans le header de mon thème, j’ai d’abord mon menu principal. Ici j’utilise boostrap 4. Pour le faire fonctionner, j’utilise une classe WP_Bootstrap_Navwalker(). Vous en trouverez différents exemples sur le net.
Afin de pouvoir afficher notre mega menu, on va d’abord l’enregistrer dans le fichier functions.php, à l’intérieur de la fonction after_setup_theme. Voici le code de déclaration du nouvel emplacement de menu.
Maintenant, dans le backoffice de wordpress, on peut créer notre mega-menu en sélectionnant notre nouvel emplacement de menu. On y intègre les pages ou catégories que l’on veut.
Le menu principal
Dans le menu principal, à l’endroit du lien qui nous intéresse, on va rajouter la classe ‘has-mega-menu‘ . On crée unlien personnalisé, mais comme on ne veut pas qu’il redirige quelque part, on y insère un # en guise de lien.
Le mega menu
Dans notre fichier header.php, à la suite du menu principal, on va créer la fonction qui va « scanner » ce mega-menu et nous afficher tous les liens en front. Ici le css est à adpater en fonction de ses besoins.
Ensuite, on va afficher/cacher notre menu grâce au js. Au clic sur le lien, on ajoute la classe « open« , et au clic sur l’icone de fermeture, on retire la classe « open« .