Как передать переменные URL на страницу WordPress - PullRequest
0 голосов
/ 26 марта 2010

Это было задано здесь (более года назад), но, очевидно, не ответили, и WordPress постоянно развивается, поэтому, возможно, сейчас есть хорошее решение. Я хочу передать переменные на страницу WordPress через URL (аналогично сегментам помощника CodeIgniter URI).

В настоящее время я могу сделать это ...

Страница моего профиля: http://website.com/profile

Я могу передать переменную следующим образом: http://website.com/profile?username=johndoe

Я хочу передать переменную следующим образом: http://website.com/profile/johndoe или же http://website.com/profile/username/johndoe

Должна быть какая-то вспомогательная функция, верно?

Ответы [ 3 ]

1 голос
/ 21 декабря 2012

Я нашел способ сделать это с помощью PHP и функции WordPress.

Вот низкий уровень. В код вашего шаблона включите глобальную переменную $ wp_query, а затем используйте ее свойство запроса, которое является массивом. Один из этих индексов массива называется «pagename», и он возвращает запрос uri рассматриваемой страницы. Итак, предположим, что ваш URL-адрес http://website.com/profile/johndoe и ваша установка WordPress находится в вашем webroot, а затем этот код:

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

выведет "профиль / johndoe".

Однако, если url: http://website.com/cms/profile/johndoe, что означает, что ваш WordPress устанавливается в каталог cms, а не webroot, приведенный выше код все равно вернет profile/johndoe, что означает, что он учитывает разницу Адрес WordPress и адрес сайта устанавливаются на панели настроек.

В любом случае, хорошая сторона в том, что вы можете взять этот вывод и разбить его на массив следующим образом:

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

Я считаю, что первый сегмент (profile в этом случае будет назначен первому индексу массива и т. Д.).

В любом случае, он не так хорош, как CodeIgniter, но он не требует большого количества кода и делает свое дело.

0 голосов
/ 26 марта 2010

Добавьте к вашему файлу .htaccess в корневой папке что-то вроде

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

после других RewriteRules

0 голосов
/ 26 марта 2010

Предполагая, что в вашей установке wp используются постоянные ссылки, поэтому функции .htaccess следует поместить в ТОП вашего файла .htaccess следующим образом:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^profile/(.*)$ /profile?username=$1 [NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...