J'ai un très vieux site. Maintenant, je veux le rendre réactif sans changer le thème ni sa feuille de style.
Exigences:
J'ai donc décidé de
enqueue
une feuille de style distincte lorsque vous cliquez sur un switcher link
. : Lien pour rendre le site responsiveenqueue
la feuille de style par défaut lorsqu'un autre switcher link
est cliqué. : Lien pour revenir au site non réactif par défaut.Ensuite, j'ai mis les deux liens suivants dans mon header.php
<a href="?site=mobile" class="mobile_site" id="mobile_site"><img src="http://i60.tinypic.com/dza06h.jpg" alt="switch to mobile site"></a>
<a href="?site=desktop" class="desktop_site"><img src="http://i61.tinypic.com/2iu3vl.jpg" alt="switch to desktop site"></a>
Je mets le code suivant dans mon functions.php
$site=$_GET['site'];
if ($site == 'mobile'){
function responsive_css(){
wp_enqueue_style(
'wpa_custom',
get_template_directory_uri() . '/css/responsive.css'
);
}
add_action( 'wp_enqueue_scripts', 'responsive_css', 999 );
}
if ($site == 'desktop'){
function default_css(){
wp_enqueue_style(
'default_css',
get_template_directory_uri() . '/style.css'
);
}
add_action( 'wp_enqueue_scripts', 'default_css', 999 );
}
et j'ai ajouté un dossier appelé css
dans mon répertoire de modèles, qui contient responsive.css
.
et alors
mobile link
(class=mobile_site
), tout le site est réactif. Le lien de site devient www.mysite.com/?site=mobile
desktop link
(class=desktop_site
), le site entier devient non réactif (le site par défaut est chargé avec son style.css
par défaut). Le lien de site devient www.mysite.com/?site=desktop
VOILA .... !!!!
MAIS LE NUMÉRO EST:
Après avoir cliqué sur le lien du mobile si je visite d'autres pages/publications, l'ensemble du site devient non réactif. Il est réactif si je suis dans la page d'accueil uniquement (après avoir cliqué sur le lien du mobile)
Pour les autres pages et la publication, je dois cliquer sur le mobile link
AGAIN pour le rendre réactif. En résumé, les utilisateurs doivent cliquer sur le mobile link
chaque fois qu'ils visitent des (nouveaux) messages/pages s'ils veulent le site réactif.
J'ai compris que le problème est I did not set a cookie
lorsque l'utilisateur clique sur mobile link
ou desktop link
.
J'ai fait référence à PHP cookies et à d'autres tutoriels, mais je n'ai pas réussi à le faire fonctionner.
Maintenant, les exigences sont (avec les 5 mentionnés ci-dessus)
mobile link (class="mobile_site")
jusqu'à ce que le desktop link(class="desktop_site")
soit à nouveau cliqué.Comment puis-je le faire en utilisant PHP?
* S'IL VOUS PLAÎT, ne vous contentez pas de voter ** et dites que c'est plus lié à PHP et demandez dans stack overflow
. C'est mélangé et je le demande ici. Plutôt que de voter, faites des suggestions s'il vous plaît.
Vous pouvez utiliser l'action init pour définir le cookie et toute autre action init pour le lire. Cependant, c'est un cookie ... vous devrez également vérifier la variable GET.
add_action('init', 'is_it_mobile_or_desktop', 1);
function is_it_mobile_or_desktop(){
if (isset($_GET['site']) && in_array($_GET['site'], array('mobile', 'desktop')) ) {
setcookie( 'site', $_GET['site'], time() - YEAR_IN_SECONDS, SITECOOKIEPATH, COOKIE_DOMAIN );
}
}
add_action('init', 'who_am_i', 2);
function who_am_i(){
$site = isset($_GET['site']) && in_array($_GET['site'], array('mobile', 'desktop')) ? $_GET['site']
: (isset($_COOKIE['site']) && in_array($_COOKIE['site'], array('mobile', 'desktop')) ? $_COOKIE['site'] : 'default_case');
if ($site == 'mobile'){
function responsive_css(){
wp_enqueue_style(
'wpa_custom',
get_template_directory_uri() . '/css/responsive.css'
);
}
add_action( 'wp_enqueue_scripts', 'responsive_css', 999 );
} else {
function default_css(){
wp_enqueue_style(
'default_css',
get_template_directory_uri() . '/style.css'
);
}
add_action( 'wp_enqueue_scripts', 'default_css', 999 );
}
}