Comment empêcher le thème mobile d'hériter du menu de navigation du bureau?
-
-
avez-vous écrit register_nav_menu () dansfunctions.php de votrethèmemobile??did u wrote register_nav_menu() in functions.php of your mobile theme ??
- 0
- 2014-07-30
- Zammuuz
-
Pas spécifiquement.Dans wp admin,j'ai créé 2menuspersonnalisés.1pour lethèmeprincipal dubureauet un autrepour lethèmemobile.Avec lethème debureau sélectionné commethème actif dans wp admin,toute l'expérience debureaufonctionne comme vous le souhaitez.Mais lorsqu'ilest visualisé sur unmobile (qui active lethèmemobile),lemenu disparaît.Ilne réapparaît sur lemobile que sije configure lethèmeprincipal dubureaupour utiliser lethèmemobile ... Cela aide-t-il?MerciNot specifically. In wp admin, I created 2 custom menus. 1 for the main desktop theme, and another for the mobile theme. With the desktop theme selected as the active theme in wp admin, the whole desktop experience works as desired. But when viewed on a mobile (which activates the mobile theme) the menu disappears. It reappears on the mobile only if I set the main desktop theme to use the mobile theme... Does that help? Thanks
- 0
- 2014-07-30
- speedypancake
-
* Remarque - lethèmemobile a été créé à l'aide duframework Genesiset utilise lemenumobile Genesis,au cas où celaferait une différence???*Note - the mobile theme was created using the Genesis framework and uses the Genesis dropdown mobile menu, in case that makes any difference???
- 0
- 2014-07-30
- speedypancake
-
Commentpassez-vous d'unthème à l'autre?Je suppose une sorte de détection denavigateur/appareilphp?Je suppose que le code de changement dethème que vous avezne gèrepas lesmenus.How are you switching from theme to theme? I assume some sort of php browser/device detection? My guess is that whatever theme switching code you have doesn't handle menus.
- 0
- 2014-07-31
- The Maniac
-
Postez votre code s'il vousplaîtPost your code please
- 0
- 2014-07-31
- Brad Dalton
-
voici uneidée.Vouspouvez ajouter une option dethème dans laquelle vouspouvez sélectionner lemenu duthème.Ensuite,dans la zone dumenu denavigation,vous vérifiez d'abord s'il y a une sélection demenu.Si c'est le cas,vous ouvrez cemenu.here is an idea. You can add a theme option where you can select the menu for the theme. Then on navigation menu area you first check if there is any menu select. If so you pull up that menu.
- 0
- 2014-08-01
- Sisir
-
@The Maniac - J'utilise leplugin "anymobiletheme"pour changer dethème.@The Maniac - I'm using the "any mobile theme" plugin to switch themes.
- 0
- 2014-08-01
- speedypancake
-
Brad - Quelmorceau de code spécifique voulez-vous voir?Jen'aipas écritni ajouté de code supplémentaire,j'aijuste créé 2thèmes,créé 2menuspersonnalisés dans l'apparence/lesmenus de wpet attribué 1menu àprincipalet l'autre à "mobile"Brad - Which specific bit of code do you want to see? I haven't written or added any extra code, just created 2 themes, created 2 custom menus within wp appearance/menus and assigned 1 menu to primary and the other to "mobile"
- 0
- 2014-08-01
- speedypancake
-
N'oubliezpas d'ajouter votremise àjour comme réponse,acceptez-la également comme solution si vous décidez d'y aller.Quant à laprime,tout dépend de vous,lol :-).Don't forget to add your update as an answer, also accept it as the solution if you decide to go with that. As for the bounty, it is all up to you, lol :-).
- 0
- 2014-08-02
- Pieter Goosen
-
Merci Pieter,bien quepas convaincu que ce quej'aiest lameilleure solution.Celafonctionne,maisiln'y a aucunmoyen depermettre aux visiteursmobiles depasser à l'expérience debureaunormale s'ils lepréfèrent ...Thanks Pieter, although not convinced what I've got is the best solution. It works, but there's no way to allow mobile visitors to switch over to the normal desktop experience if they prefer....
- 0
- 2014-08-02
- speedypancake
-
5 réponses
- votes
-
- 2014-08-03
Après 5jours de recherche sur Google,d'essaiset d'erreurset denombreuxplugins,j'aienfin une solution quifonctionnepourmoi.
J'ai recommencé à utiliser unthème communpour les visiteurs debureauet mobiles,mais chacun avec sonpropremenupersonnalisé. Cela a étéfacilitépourmoi carj'expérimente avec leframework Genesiset leurthèmeenfant "Sandbox" a unefonction denavigationminimisée/mobileintégrée. Donc,j'ai simplement défini les optionsprincipaleset mobiles dans lemenu dubureau.
Pour répondre auxbesoins des visiteursmobiles,j'aiinstallé l'excellentplugin "responsivemenu": https://wordpress .org/plugins/responsive-menu/ Cela vous donne lapossibilité de sélectionner unmenupersonnalisé différentpour sa source,doncje l'ai défini surmonmenumobile.
L'ajout duplugin responsive signifie queje me suis retrouvé avec 2menus denavigation affichés,j'ai donc utilisé unpeu de CSS conditionnelpourmasquer lemenu réactif sur lebureauet masquer lemenu Genesispour lesmobiles.
<?php if (wp_is_mobile() ): ?> <style type="text/css"> .desktop-nav{display: none;} #click-menu{display:block;} </style> <?php endif; ?>
Lemenu contextuelest le div dumenu réactif. Lafonction "wp_is_mobile"peut être cibléeplusprécisémenten installant lepluginmobble sinécessaire.
J'aimême ajouté une redirection depagepour les visiteursmobiles qui les amène àma versionmodifiée de lapage d'accueil:
function so16165211_mobile_home_redirect(){ if( wp_is_mobile() && is_front_page() ){ wp_redirect( '/mobile-home' ); exit; } } add_action( 'template_redirect', 'so16165211_mobile_home_redirect' );
Alors voilà! C'est une solution acceptablepourmoitout à l'heure. Idéalement,je seraisen mesure d'offrir aux visiteursmobiles lapossibilité de choisir l'expériencemobile ou debureau,mais cela sembleimpliquer la configuration de cookies,ce quipourraitbien être une questionpour un autrejour.
Merciencore à TOUS qui ontpris letemps de répondre -en particulier à ceux qui ont suggéré qu'avoir 2thèmes différentsn'étaitpas lameilleure approche.
After 5 days of googling, trial and error and umpteen plugins, I finally have a solution that works for me.
I've gone back to using a common theme for both desktop and mobile visitors, but each with their own custom menu. This was made easier for me because I'm experimenting with the Genesis framework and their "Sandbox" childtheme has a minimised / mobile navigation function built in. So I simply set the primary and mobile options to the desktop-menu.
To cater for mobile visitors, I installed the excellent "responsive menu" plugin: https://wordpress.org/plugins/responsive-menu/ This gives you the option to select a different custom menu for its source, so I set this to my mobile-menu.
Adding the responsive plugin means I ended up with 2 navigation menus showing, so I used a bit of conditional CSS to hide the responsive menu on the desktop and hide the Genesis menu for mobiles.
<?php if (wp_is_mobile() ): ?> <style type="text/css"> .desktop-nav{display: none;} #click-menu{display:block;} </style> <?php endif; ?>
Click menu is the div for the responsive menu. The "wp_is_mobile" function can be more accurately targeted by installing the mobble plugin if required.
I even added a page redirect for mobile visitors which takes them to my edited-down version of the home page:
function so16165211_mobile_home_redirect(){ if( wp_is_mobile() && is_front_page() ){ wp_redirect( '/mobile-home' ); exit; } } add_action( 'template_redirect', 'so16165211_mobile_home_redirect' );
So there you have it! It's an acceptable solution for me just now. Ideally I'd be able to offer mobile visitors the option to choose the mobile or desktop experience, but that seems to involve setting cookies which may well be a question for another day.
Thanks again to ALL who took the time to respond - especially those who suggested that having 2 different themes wasn't the best approach.
-
Merci d'avoirpublié votre solution.+1 C'est unplaisiret heureux depouvoir être utile.Prendreplaisir :-)Thanks for posting your solution. +1 It is a pleasure and glad I could be of help. Enjoy :-)
- 0
- 2014-08-03
- Pieter Goosen
-
- 2014-08-01
Jepense que l'époque de la création d'unthème distinctpour les utilisateursmobilesest révolue depuis longtemps. Avec uneplanificationet unemiseen page appropriées,vouspouvez utiliser unthème sur les ordinateurs debureau,les ordinateursportables,lestabletteset les appareilsmobiles
Je voudrais aborder cette question d'unemanièretrès différente.
-
Premièrement,je créeraismonthème demanière à ce qu'il soit réactif selon lataille d'écran requise,comme d'habitude. Pour desexemples,voir lesthèmesfournis,spécialement àpartir de vingt-douze
-
Utilisez labalise conditionnelle
wp_is_mobile()
pour charger desfonctions quine seront spécifiques qu'auxtéléphonesportables. Je créerais également unfichier defonctions séparéesjustepour quemesfonctionsmobiles lesgardent organisées. Exempleif(wp_is_mobile()) { //DO SOMETHING FOR MOBILE }else{ //DO SOMETHING FOR EVERYTHING ELSE NOT MOBILE }
-
Créez unefeuille de style spécifique uniquementpour vos stylesmobiles,puismettez cettefeuille de styleen file d'attente demanière conditionnelle à l'aide de labalise conditionnelle
wp_is_mobile()
. N'oubliezpas d'ajouter lapriorité à votre action afin que chaquefois que cettefeuille de style se charge,elle se chargeen dernier.
Pour lemenu,je regarderais également lesthèmes regroupés. J'aime lemenu vingt-quatorzeet commentil répond. Toutestgérépar de simplesjs à l'intérieur defunctions.js. Vouspouvez l'utiliseret l'adapter dans votreproprethème. Jen'aijamaistravaillé avecgenesis,doncje ne saispas quels hooksils utilisent.
Uneexcellenteidée vient également de cetutoriel de wpmudev.org,quiincorporeessentiellement leplugin Sidr d'Alberto ValeropourjQuery. Je l'ai utilisé dans l'un demes vingt-quatorzethèmespourenfants,et celafonctionnetrèsbien.
Cene sont là que quelques alternatives que vouspouvezenvisager. J'espère que cela vous aidera à résoudre votreproblème
I do think that the days of creating a separate theme for mobile users are long gone. With proper planning and layout you can use one theme on desktops, laptops, tablets and mobile devices
I would tackle this is a much different way.
Firstly, I would create my theme in such a way it is responsive on according to the required screensize like normal. For examples see the bundled themes, specially as from twentytwelve
Use the
wp_is_mobile()
conditinal tag to load functions that will only be specific to mobile phones. I would also create a separte functions file just for my mobile functions to keep them organised. Exampleif(wp_is_mobile()) { //DO SOMETHING FOR MOBILE }else{ //DO SOMETHING FOR EVERYTHING ELSE NOT MOBILE }
Create a spearate stylesheet just for your mobile styles, then enqueue this stylesheet conditionally using the
wp_is_mobile()
conditional tag. Just remember to add priority to your action so that whenever this stylesheet load, it loads dead last.
For the menu, I would also look at the bundled themes. I like the twentyfourteen menu and how it respond. All is handled by simple js from inside functions.js. You can make use of this and adapt it in your own theme. I have never worked with genesis, so I don't know what hooks ets they are using.
Also a great idea comes from this tutorial from wpmudev.org, which basically incorporates the Alberto Valero’s Sidr plugin for jQuery. I've used it in one of my twentyfourteen child themes, and it works great.
These are just a few alternatives you can consider. I hope some of this helps in solving your problem
-
Mercipour vos commentaireset suggestions -j'entiendrai compte aujourd'hui -bravoThanks for your comments and suggestions - will consider this today - cheers
- 0
- 2014-08-01
- speedypancake
-
Pas deproblème,commeje l'ai dit,cene sont que des alternatives :-).Profitez-enet j'espère quetoutes ces réponses vouspermettront de résoudre votreproblème.À votre santé :-)No problem, as I said, these are just alternatives :-). Enjoy and I hope out of all these answers you can solve your problem. Cheers :-)
- 0
- 2014-08-01
- Pieter Goosen
-
- 2014-07-31
Créez 2menus.Unpour l'affichage sur lesmobileset unpar défautpour les ordinateurs debureau.Ajoutez ce code dans votre header.php ou vouspouvez utiliser un hook dans votrefichier defonctions.
<?php if ( wp_is_mobile() ) { wp_nav_menu( array( 'theme_location' => 'mobile-menu' ) ); } else { wp_nav_menu( array( 'theme_location' => 'desktop-menu' ) ); } ?>
Ou vouspouvez créer 2menuspersonnaliséset utiliser ce code:
<?php if ( wp_is_mobile() ) { wp_nav_menu( array( 'menu' => 'mobile-menu' ) ); } else { wp_nav_menu( array( 'menu' => 'desktop-menu' ) ); } ?>
Ou vouspouvez changer dethème sous condition:
add_filter( 'stylesheet', 'wpsites_change_themes' ); add_filter( 'template', 'wpsites_change_themes' ); function wpsites_change_themes( $theme ) { if ( wp_is_mobile() ) $theme = 'my-mobile-theme'; return $theme; }
Create 2 menus. One for display on mobiles and one as a default for desktops. Add this code in your header.php or you could use a hook in your functions file.
<?php if ( wp_is_mobile() ) { wp_nav_menu( array( 'theme_location' => 'mobile-menu' ) ); } else { wp_nav_menu( array( 'theme_location' => 'desktop-menu' ) ); } ?>
Or you could create 2 custom menus and use this code:
<?php if ( wp_is_mobile() ) { wp_nav_menu( array( 'menu' => 'mobile-menu' ) ); } else { wp_nav_menu( array( 'menu' => 'desktop-menu' ) ); } ?>
Or you could switch themes conditionally:
add_filter( 'stylesheet', 'wpsites_change_themes' ); add_filter( 'template', 'wpsites_change_themes' ); function wpsites_change_themes( $theme ) { if ( wp_is_mobile() ) $theme = 'my-mobile-theme'; return $theme; }
-
Merci Brad - J'essaie votre deuxième suggestion,maiselle ajoute lemenumobile ainsi que lemenu dubureau.Je suppose queje pourrais cacher lebureauen utilisant le CSS,maispourrait-il êtreentièrement remplacé?Thanks Brad - I'm trying your second suggestion, but it adds the mobile menu as well as the desktop menu. I suppose I could hide the desktop using css, but could it be replaced entirely?
- 0
- 2014-08-01
- speedypancake
-
Vous devez corriger votre code.Voyez si vouspouvez repérer lemauvais conditionnel :-)You should correct your code. See if you can spot the wrong conditional :-)
- 0
- 2014-08-02
- Pieter Goosen
-
Celapourrait-il être changépour qu'au lieu d'introduire unnouveaumenu,ilpuisse remplacer la source/le contenu dumenu denavigationprincipalexistant (genesis)?MerciCould this be changed so that instead of introducing a new menu, it could replace the source/content of the existing (genesis) primary navigation menu? Thanks
- 0
- 2014-08-02
- speedypancake
-
Oui,vouspouvezmodifier le codepour cefaire.Yes, you can modify the code to do that.
- 0
- 2014-08-03
- Brad Dalton
-
- 2014-07-31
C'est assez étrange d'avoir deuxthèmes comme vous le décrivez,maisje pense quenouspouvons comprendre cela.
Dans les deuxthèmes,partout où votremenuestimprimé (probablement
header.php
),vous aurezbesoin d'un code comme celui-ci qui choisit lebonmenu,puis l'imprime:$desktop_theme_name = 'Desktop Theme Name'; // Replace this with the name of the desktop theme $mobile_theme_name = 'Mobile Theme Name'; // Replace this with the name of the mobile theme // Get the current theme's information $current_theme = wp_get_theme(); if ( $current_theme->Name == $desktop_theme_name ) { // Print desktop menu // NOTE: Instead of using "theme_location" use "menu" wp_nav_menu( array( 'menu' => 'Desktop Menu', // Replace this with the name, slug, or ID of your desktop menu // Rest of menu options if needed ) ); } else if ( $current_theme->Name == $mobile_theme_name ) { // Print mobile menu wp_nav_menu( array( 'menu' => 'Mobile Menu', // Replace this with the name, slug, or ID of your mobile menu // Rest of menu options if needed ) ); } else { // Not using one of the special themes, so just print the menu! wp_nav_menu(); }
J'espère que cela aide,bonne chance!
Its quite odd to have two themes running like you describe, but I think we can figure this out.
In both themes, wherever your menu is printed (probably
header.php
) you'll need some code like this that chooses the correct menu, then prints it:$desktop_theme_name = 'Desktop Theme Name'; // Replace this with the name of the desktop theme $mobile_theme_name = 'Mobile Theme Name'; // Replace this with the name of the mobile theme // Get the current theme's information $current_theme = wp_get_theme(); if ( $current_theme->Name == $desktop_theme_name ) { // Print desktop menu // NOTE: Instead of using "theme_location" use "menu" wp_nav_menu( array( 'menu' => 'Desktop Menu', // Replace this with the name, slug, or ID of your desktop menu // Rest of menu options if needed ) ); } else if ( $current_theme->Name == $mobile_theme_name ) { // Print mobile menu wp_nav_menu( array( 'menu' => 'Mobile Menu', // Replace this with the name, slug, or ID of your mobile menu // Rest of menu options if needed ) ); } else { // Not using one of the special themes, so just print the menu! wp_nav_menu(); }
Hope that helps, good luck!
-
- 2018-02-23
0 vote contre Si quelqu'un regardeencore cefil,je me débattais avec ça depuis unmoment,aucun de cesproblèmesn'afonctionné ... Jepourrais lefaire avec CSS!
Engros,créez unmenugéant avectous les éléments souhaités surmobileet ordinateur debureau.Ensuite,ajoutez les classes: "hide-mobile"et "hide-desktop" sur leurs éléments demenu respectifs.
Utilisez ce CSS:
@media (min-width: 980px){ .hide-desktop{ display: none !important; } } @media (max-width: 980px){ .hide-mobile{ display: none !important; } }
0 down vote If anyone is still watching this thread, I had been struggling with this for a while, none of these worked... I could do it with CSS!
Basically, create one giant menu with all the items you want on mobile and desktop. Then, add classes: "hide-mobile" and "hide-desktop" on their respective menu items.
Use this CSS:
@media (min-width: 980px){ .hide-desktop{ display: none !important; } } @media (max-width: 980px){ .hide-mobile{ display: none !important; } }
MISE À JOUR ************ Ehbien,j'ai une solution detravail,maispasidéale.
En utilisant lethèmeenfant Genesis sandbox qui a unbouton denavigationmobileintégré,j'aipu le définirpour utiliser lemenu denavigationprincipal,ce quiprenden charge lesbureaux réduits auminimum.
J'aiensuite ajouté leplugin demenu responsive quim'apermis de choisirmonmenumobilepersonnalisépour la source. Ensuite,j'ai caché lepluginpour une utilisation sur lebureauet j'ai caché lebouton demenu Genesispour lesmobiles.
Je vais le laisser quelquesjours,puis choisir qui obtient les 50points -merci àtouspour vos contributions ...
(QUESTION RE-PHRASÉE) Essayer de créer une versionmobile demon site.
2thèmes,1pour ordinateuret un autre uniquementpour les visiteursmobiles (thèmemobile sélectionné automatiquementpour les visiteursmobiles avec "toutplugin dethèmemobile").
J'ai créé unmenupersonnalisépour chaquethème dans wp admin/menus -menu debureauet menumobile.
Avec lethème dubureau activé,je sélectionne lemenu dubureaupour lanavigationprincipale. Unefois lethèmemobile activé,j'ai défini lanavigationprincipale sur lemenumobile.
Leproblèmeest queje dois avoir lethème dubureau actifpour unfonctionnementnormal. Les visiteursmobiles voient lethèmemobile alternatif,mais lanavigation suittoujours quelle que soit lanavigationprincipale dubureau.
Commentpuis-jeempêcher celaet forcer lethèmemobile àtoujours/uniquement utiliser lanavigationmobile?