Пользовательские запросы и красивые URL-адреса Wordpress - как? - PullRequest
3 голосов
/ 04 января 2011

У меня есть отличная (пока что) настройка WordPress для нового сайта. Красивые URL работают как положено.

У меня есть 1 динамическая страница, которая загружает контент в зависимости от строки запроса:

/dynamic/?loc=england&code=uk 

Я хочу также сделать этот URL "красивым", но каждый раз, когда я изменяю .htaccess, никаких изменений не происходит. Перепробовал все и погуглил все остальное - в крайнем случае. Если бы я мог заставить работать следующее, я был бы счастлив.

Мне нужно, чтобы URL выглядел следующим образом.

/dynamic/location/england/code/uk/

Добавление этого к любому .htaccess нарушает работу всего сайта.

RewriteRule /dynamic/(.*)/(.*)/(.*)/(.*)/$ /dynamic?$1=$2&$3=$4

Что мне не хватает.

Заранее спасибо

N

1 Ответ

11 голосов
/ 05 января 2011

Не добавляйте правило перезаписи в файл .htaccess.WordPress управляет этим файлом для вас, поэтому старайтесь использовать встроенные функции, когда можете.

WordPress на самом деле имеет несколько продвинутый механизм перезаписи , который поставляется в стандартной комплектации - и он подключаемый, как и все остальныеплатформы.

Трюк, однако, работает с ним.Вам нужно зарегистрировать свой RegEx, чтобы WordPress знал, с какими типами строк соответствовать (например, dynamic/location/(.*)/code/(.*) => /dynamic?$loc=$1&code=$2).Затем вам нужно будет настроить страницу и сценарий на серверной части для обработки отправки.

Для аналогичного примера посмотрите на полученный ответ на разбор пользовательских URL-адресов с пользовательским типом записи поверх Ответы WordPress .Расширяя это, вам нужно настроить код, подобный следующему ( примечание: не проверено !!!):

<?php
add_action('init', 'add_my_rewrite');

function add_my_rewrite() {
    global $wp_rewrite;
    $wp_rewrite->add_rule('location/([^/]+)/code/([^/]+)','index.php?loc=$matches[1]&code=$matches[2]','top');
    $wp_rewrite->flush_rules(false);  // This should really be done in a plugin activation
}

Это должно добавить переписываниеавтоматически структурировать ваш .htaccess файл.

...