2010-03-25 11 views
0

Cela a été demandé ici (il y a plus d'un an), mais apparemment pas de réponse, et WordPress est en constante évolution alors peut-être theres une bonne solution maintenant. Je veux passer des variables à une page WordPress via l'URL (similaire aux segments d'aide de CodeIgniter uri).Comment passer des variables d'URL dans une page WordPress

Actuellement, je peux le faire ...

Ma page de profil est: http://website.com/profile

je peux passer une variable comme ceci: http://website.com/profile?username=johndoe

Je veux passer la variable comme celui-ci : http://website.com/profile/johndoe ou http://website.com/profile/username/johndoe

Il doit y avoir une sorte de fonction d'assistance, non?

Répondre

0

En supposant que l'installation de wp utilise permaliens, de sorte que les caractéristiques de .htaccess, vous devez mettre au-dessus de déposer votre .htaccess les éléments suivants:

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^profile/(.*)$ /profile?username=$1 [NC] 
+0

erreur 404 si j'essaye website.com/profile/johndoe –

0

Append à votre fichier .htaccess dans le dossier racine quelque chose comme

RewriteRule ^profile/?([_0-9a-z-]+)?/?$ http://website.com/profile?username=$1 [R=301,L] 

après les autres RewriteRules

+0

Oui, c'est ce qui a été posté dans la plupart des autres forums que j'ai trouvé où les gens posaient la même question. Mais, apparemment, cela n'a pas fonctionné pour eux, ni moi, malheureusement. Mon WordPress est la structure permalien: /% année% /% monthnum% /% postname%/ Et les règles du fichier .htaccess que WP créés sont: RewriteEngine On RewriteBase/learnwake. com/ RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule. /learnwake.com/index.php [L]

+0

Wow, désolé pour ce désordre de code ... Les sauts de ligne n'ont pas été conservés. –

0

J'ai trouvé une sorte de chemin de changement de marque de le faire avec PHP et une fonction WordPress.

Voici la verité. Dans votre code de modèle, incluez la variable globale $ wp_query, puis utilisez sa propriété query, qui est un tableau. L'un de ces index de tableau s'appelle 'pagename' et retourne la requête uri de la page en question. Donc, supposons que votre URL est http://website.com/profile/johndoe et votre installation de WordPress est dans votre Webroot alors ce code:

global $wp_query; 
echo $wp_query->query['pagename'] 

sera putout profil/johndoe.

Cependant, si l'URL est: http://website.com/cms/profile/johndoe ce qui signifie que votre WordPress installer dans le répertoire cms et non Webroot, le code ci-dessus encore revenir profile/johndoe, ce qui signifie, il tient compte de ce que la différence entre l'adresse WordPress et le site Les adresses sont définies dans le panneau des paramètres.

donc de toute façon, la bonne partie est tht vous pouvez prendre cette sortie et divisée en un tableau comme ceci:

$segments = array_explode('/', $wp_query->query['pagename']); 

je crois que le premier segment (profile dans ce cas serait le affecté au premier indice du tableau et ainsi de suite.).

De toute façon, ce n'est pas aussi bien que CodeIgniter mais ça ne prend pas beaucoup de code à faire et ça fait l'affaire.

Questions connexes