2010-12-07 3 views
0

Mise à jour un jour plus tard: les cookies sont en cours de définition. J'essaie de montrer les changements que j'ai dû faire avec les modifications dans le code cité ci-dessous. Il y a toujours un problème. Maintenant, il n'applique pas les feuilles de style non-par défaut! Le navigateur peut les trouver, mais pas le commutateur ....Les cookies php styleswitcher ne sont pas mis en wordpress. Pourquoi?

(question initiale :) J'utilise v.2 Rob Ballou styleswitcher (le robballou.com/switcher/v2/tutorial.php), en un blog WP3 (site here). Je l'ai modifié les urls stylesheet, de sorte que WP sait où les trouver:

de:
$ss->addStyle("default", "style.css", "", "", true);

à

$my_url = get_bloginfo('template_url'); 

$ss->addStyle("default", $my_url . '/style.css', "", "", true); 

A en juger par la source de documents, les feuilles de style sont trouvés . Donc ce n'est pas le problème. Cependant, le cookie n'est tout simplement pas réglé. Si je cours exactement les mêmes scripts sur une page web (par exemple, molvray.com/testing/ss-example.php), cela fonctionne, et quand je vérifie les cookies, cwStyle a été défini. Mais dès que c'est en WP, pas de chance.

Je suppose que le problème est cette ligne: $ss->cookieDomain = ".". $_SERVER['HTTP_HOST']; dans switcher.php. J'ai vu un post qui suggérait d'utiliser HTTP_REFERRER à la place, mais cela n'aide pas. J'ai inclus switcher.php ci-dessous. Je n'ai pas touché à Styleswitcher.php lui-même.

Quelqu'un peut-il me dire ce que je fais mal? Je vais devenir fou ici!

S'il vous plaît, soyez le moins du monde possible, pour avoir une chance de suivre. Je suis assez inutile à la programmation.

Nouveauté: la plus grande partie de switcher.php est incluse dans header.php et non dans un fichier séparé.

dans header.php:

<?php 

require_once ("Styleswitcher.php");
$ ss = nouveau Styleswitcher ('/ switcher/v2 /');

if(!isset($reqPath)){ $reqPath = ""; } 
require_once($reqPath ."Styleswitcher.php"); 
$my_url = get_bloginfo('template_url'); 
$ss = new Styleswitcher(); 

$ss->addStyle("default", $my_url . '/style.css', "", "", true); 
$ss->addStyle("lowgraphics", $my_url . '/handheld.css'); 
$ss->addStyle("highcontrast", $my_url . '/highcontrast.css'); 

$ss->createSet("style"); 
$ss->addStyleToSet("style", "default", true); 
$ss->addStyleToSet("style", "lowgraphics"); 
$ss->addStyleToSet("style", "highcontrast"); 

$ss->cookieDomain = ".". $_SERVER['HTTP_HOST']; 
$ss->cookieName = "cwStyle"; 

-ß $> start();

$ss->printStyles(); 
    ?> 

la switcher.php réelle est alors simplement:?

<?php 
if(!isset($reqPath)){ $reqPath = $my_url; } 
require_once("Styleswitcher.php"); 
$ss = new Styleswitcher('/switcher/v2/'); 
$ss->cookieDomain = ".". $_SERVER['HTTP_HOST']; 
$ss->cookieName = "cwStyle"; 
$ss->start(); 
?> 
forme

utilisé dans le header.php de wordpress a "< _ php bloginfo ('de template_url');>/switcher.php » au lieu de "switcher.php"

<form action="<?php bloginfo('template_url'); ?>/switcher.php" method="post"> 

< type _INPUT = "" name = "caché" id = "referer referer" value = ""/>

<input type="hidden" name="inputStyle2" id="inputStyle2" value="style" />   
    <li><input type="submit" name="style" id="default" value="Default" <?php $ss->printSetInputChecked("style", "default"); ?>/></li>  
    <li><input type="submit" name="style" id="lowgraphics" value="Mobile" <?php $ss->printSetInputChecked("style", "lowgraphics"); ?>/></li> 
    <li><input type="submit" name="style" id="highcontrast" value="High&nbsp;Contrast" <?php $ss->printSetInputChecked("style", "highcontrast"); ?>/> </li> 
    </form> 

Le bit essentiel, je pense, a ajouter le chemin bloginfo php ('de template_url') à switcher.php dans l'élément de forme. Maintenant, pour comprendre pourquoi il ne va pas à autre chose que le style par défaut.

+0

Où Courez-vous le morceau principal du code? Dans un fichier modèle? Si oui, quel fichier? Dans un plugin? – TheDeadMedic

+0

Le code principal est dans Styleswitcher.php, qui est inchangé à partir du téléchargement. switcher.php l'appelle et contient les paramètres que vous devrez peut-être modifier. Les deux sont dans le répertoire du blog pour les fichiers modèles. Ce que j'ai changé dans switcher.php est la ligne "myurl" et le chemin vers les fichiers de style. – quixote

+0

Switcher.php est appelée depuis le fichier de modèle, header.php – quixote

Répondre

0

(réponse continue à The Dead Medic. Je n'ai pas le coup du système ici encore.)

J'ai aussi regardé autour un peu plus, et a trouvé quelque chose au sujet d'un problème avec WP enregistrement global variables http://wordpress.org/support/topic/wp-blog-headerphp-killing-sessions

J'ai essayé de faire un fichier php.ini dans le répertoire racine du blog, avec "register_globals Off" comme suggéré vers la fin de ce fil, mais cela ne semblait pas faire quoi que ce soit.

Il y a aussi ce lien, h_ttp: //www.scratch99.com/2008/09/setting-cookies-in-wordpress-trap-for-beginners/ qui parle de donner à setcookie un chemin explicite, mais je suis pas clair comment et où cela rentrerait dans mon switcher.php ci-dessus.

(Pour répondre à votre dernière question: non, ce n'est pas un plugin WP est pathétique sur styleswitchers, d'où cette odyssée. S)

+0

J'ai aussi eu la chance d'essayer la suggestion de désactiver les globals dans wp_settings.php, mais, pour autant que je sache, wp 3.01 est déjà désactivé ("wp_unregister_GLOBALS();"). aussi une suggestion pour ajouter "session_start();" au début de wp_config.php (sans les guillemets bien sûr) mais cela aussi, n'a rien fait.J'ai veillé à recharger complètement le site web entre les changements, mais je n'ai pas 't éteignez le navigateur, si cela peut être un problème.J'ai également essayé de changer mon cookieDomain dans switcher.php à "$ ss-> cookieDomain ="/"," .molvray.com ", mais pas de chance là encore non plus. :( – quixote

Questions connexes