2009-06-19 8 views
13

Je veux ajouter un fichier php personnalisé à un WordPress pour faire une action simple.

Jusqu'à présent, j'ai dans mon thème fichier index.php:

<a href="myfile.php?size=md">link</a> 

et le php est

<?php echo "hello world"; ?> 

<?php echo $_GET["size"]; ?> 

<?php echo "hello world"; ?> 

Le lien, une fois cliqué, affiche:

hello world 

est en train de WordPress sur la fonction $_GET et j'ai besoin de faire quelques trucs pour l'utiliser? Qu'est-ce que je fais mal?

Modifier:

<?echo "hello world";?> 
<? 
    if (array_key_exists('size', $_GET)) 
    echo $_GET['size']; 
?> 
<?echo "end";?> 

Ouputs:

hello world 
+0

Passez-vous quelque chose dans la variable? –

+0

Avez-vous vérifié les erreurs dans le journal du serveur? – balpha

+0

@ian désolé le html était cassé. Oui, je passe une variable "taille" avec une valeur – marcgg

Répondre

2

Je ne sais pas si cela montrera quelque chose, mais essayez d'activer le rapport d'erreurs avec:

<?php 
    error_reporting(E_ALL); 
    ini_set('display_errors', true); 
?> 

en haut de votre page avant tout autre code.

Edit:

D'après les commentaires OP:

question idiote, mais êtes-vous sûr visualisez les résultats de vos dernières modifications apportées au fichier et non un mis en cache copie de la page ou quelque chose? Changer "bonjour monde" à autre chose. (Désolé saisir les pailles, mais ce est arrivé à moi avant) - Zenshai

ahaha, la personne qui faisaient les changements n'a pas changé le fichier correct. Il travaille maintenant - marcgg

programmation par les pairs échouent ^^ - marcgg

Ce serait un « ou quelque chose », ne peut pas vous dire combien de fois je l'ai fait quelque chose comme ça. Je suis content que vous ayez pu le comprendre à la fin. - Zenshai

Je découvre généralement des erreurs comme celles-ci seulement quand ils commencent à défier tout ce que je sais d'une langue ou un environnement.

+0

il n'affiche rien – marcgg

+0

merci pour votre aide. Quel problème stupide :) – marcgg

1

Essayez ceci:

<?echo "hello world";?> 
<? 
    if (array_key_exists('size', $_GET)) 
    echo $_GET['size']; 
?> 
<?echo "end";?> 

Si vous voyez

hello worldend 

... cela signifie que vous ne définissez pas le paramètre size GET. Quelle URL utilisez-vous pour accéder à cette page?

+0

Je reçois "bonjour monde": \ – marcgg

+0

Essayez de mettre en haut et voyez si vous avez des erreurs significatives. – cdmckay

+0

il n'affiche rien – marcgg

1

Wordpress ne supprime pas $ _GET. Etes-vous sûr que vous passez la variable correctement?

Si vous la variable coder en dur une url, assurez-vous qu'il est de cette forme: « ? »

YOUR_SITE_PATH/?variable_name=variable_value 

s'il vous plaît pas le «/» à la fin de l'URL, avant la

Je ne vois pas votre code index.php, mais assurez-vous que la variable "taille" est définie manuellement dans l'URL ou à partir d'un formulaire soumis. Si vous utilisez un formulaire, assurez-vous que vous utilisez la méthode = "GET". Si vous utilisez method = "POST", alors votre variable sera dans $ _POST ['size'].

Espérons que cela aide.

+0

Je pense, le chemin est: http://website.com/blog/fontSwitcher.php?size=md. J'ai mis à jour le code index.php – marcgg

+0

website.com/blog/fontSwitcher.php/?size=md ne fonctionne pas non plus – marcgg

0

Peut être ce que quelqu'un peut

S'il vous plaît vérifier votre fichier htaccess. et une règle de réécriture il

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase <<relative_url>>/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . <<relative_url>>/index.php [L] 
</IfModule> 
# END WordPress 

S'il vous plaît changer < < de relative_url >> avec l'URL relative par rapport à votre domaine

Je face à la même question et mon wordpress a été installé sur un serveur GoDaddy. Mais après avoir modifié le fichier .htaccess, le problème a été résolu.

12

Voir la solution:

Afin de pouvoir ajouter et travailler avec votre propre requête personnalisée vars que vous ajoutez à des URL (par exemple: www.site.com/some_page/?my_var=foo - par exemple en utilisant add_query_arg()), vous devez les ajouter à la variables de requête publique disponibles à WP_Query. Ceux-ci sont construits lorsque WP_Query instancie, mais heureusement sont passés à travers un filtre query_vars avant qu'ils ne soient réellement utilisés pour remplir la propriété $query_vars de WP_Query.

Pour votre cas:

function add_query_vars_filter($vars){ 
     $vars[] = "size"; 
     return $vars; 
    } 
    add_filter('query_vars', 'add_query_vars_filter'); 

et sur votre page de modèle appellent la Methode get comme ça:

$size_var = (get_query_var('size')) ? get_query_var('size') : false; 
if($size_var){ 
    // etc... 
} 

Plus au Codex: http://codex.wordpress.org/Function_Reference/get_query_var

J'espère ça aide !