Как переписать URL страницы на основе параметров строки запроса?

16 авг. 2012 г., 07:27:09
Просмотры: 16K
Голосов: 1

У меня есть следующая страница, которая содержит один пост и несколько комментариев:

http://mysite.com/tips

Когда пользователь оставляет комментарий, я добавляю к нему метаданные, чтобы можно было фильтровать комментарии, используя такие URL:

http://mysite/tips?id=cat&filter_id=1

http://mysite/tips?id=dog&filter_id=2

Я хочу использовать вместо них следующие URL:

http://mysite/tips/cat

http://mysite/tips/dog

Страница tips отображает список постов на основе параметров строки запроса.

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

Возможно ли это реализовать?

0
Все ответы на вопрос 3
0

Вы можете добавить правило перезаписи URL, как показано ниже. Убедитесь, что вы зарегистрировали ваши публичные query vars в WordPress, чтобы система распознавала переменные из вашего правила перезаписи.

add_rewrite_rule('^(tips)/([^/]*)/([^/]*)/?', 'index.php?name=$matches[1]&id=$matches[2]&filter_id=$matches[3]','top');

add_filter('query_vars', 'foo_my_query_vars');
function foo_my_query_vars($vars){
    $vars[] = 'id';
    $vars[] = 'filter_id';
    return $vars;
}

Перейдите на страницу настроек постоянных ссылок, чтобы сбросить их.

Доступ к вашим переменным можно получить следующим образом:

$id = get_query_var('id');
$filter_id = get_query_var('filter_id');

Обратите внимание, что вы хотите использовать две динамические переменные с одним сегментом URI, что не будет работать. Приведенное выше правило перезаписи работает для tips/cat/1 (где 1 — это filter_id).

Для тестирования ваших правил я настоятельно рекомендую использовать Monkeyman Rewrite Analyzer.

Надеюсь, это поможет вам!

17 авг. 2012 г. 07:21:22
0

Вы можете использовать функцию add_query_arg:

add_query_arg('filter_id', 1);
add_query_arg('filter_id', 2);

Теперь URL выглядят следующим образом:

http://mysite/tips/cat?filter_id=1

http://mysite/tips/dog?filter_id=2

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

$id = get_query_var('id');
$filter_id = get_query_var('filter_id');

Вот дополнительная информация о функции add_query_arg

8 мая 2013 г. 11:26:10
0
-1

Я думаю, вы хотите изменить стиль постоянных ссылок. Вы можете изменить постоянные ссылки вашего сайта через административную панель WordPress. Перейдите в WordPress, затем в боковом меню выберите "Настройки", где вы увидите подменю "Постоянные ссылки". Нажмите на него, и вы увидите различные типы постоянных ссылок, предоставляемые WordPress. Вы также можете создать свою собственную структуру постоянных ссылок. Посмотрите на изображение, надеюсь, это поможет:

Настройки постоянных ссылок

16 авг. 2012 г. 08:10:20