Передача параметра в постоянную ссылку

Вопрос или проблема

Я пытаюсь создать постоянные ссылки для страницы, на которую в настоящее время передаются параметры. Сайт был настроен кем-то другим, и я не знаком с WordPress.

У меня есть различные страницы с URL-адресами формата /events/single-event/?u_name=<название_события>/ например, /events/single-event/?u_name=Hippy.

Я хотел бы иметь возможность получать доступ к этим различным страницам через /<что-то>/<название_события>/, где я не слишком привередлив в отношении того, что такое <что-то>. <что-то> может содержать слэш, если это необходимо.

Я пытался настроить это через RewriteRule в .htaccess, но не повезло.

Может кто-то подсказать, как я могу этого добиться?

Большое спасибо.

Вам не нужно беспокоиться о .htaccess, так как у WordPress есть собственный встроенный механизм перезаписи. Вам нужно это: https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

Ответ или решение

Чтобы создать дружелюбные для пользователя постоянные ссылки (пермалики) на страницах WordPress, которые в данный момент принимают параметры через URL, такие как /events/single-event/?u_name=Hippy, вам следует использовать встроенную систему перезаписи URL в WordPress, а не редактировать файл .htaccess напрямую. Этот подход не только упрощает процесс, но и позволяет клиенту получить более эстетичные и понятные адреса страниц.

Шаг 1: Создание собственной перезаписи

Во-первых, вам нужно добавить новую перезапись, которая будет обрабатывать ваши новые URL. Для этого вы можете воспользоваться функцией add_rewrite_rule, которая позволяет вам задавать, какой URL будет соответствовать каким параметрам.

Вот пример кода, который можно добавить в файл вашей темы WordPress, например, в functions.php:

function custom_rewrite_rule() {
    add_rewrite_rule('^something/([^/]*)/?', 'index.php?page_id=YOUR_PAGE_ID&u_name=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule');

Объяснение кода:

  1. add_rewrite_rule: Функция, которая добавляет новое правило перезаписи.

    • ^something/([^/]*)/?: Это регулярное выражение, которое соответствует URL, начинающемуся с "something", после чего следует любой набор символов (например, имя события).
    • index.php?page_id=YOUR_PAGE_ID&u_name=$matches[1]: Эта часть указывает, что при совпадении нажимается определенная страница (здесь вам нужно заменить YOUR_PAGE_ID на ID вашей страницы) и передается параметр u_name, который будет установлен в значение, соответствующее имени события, извлеченному из URL.
  2. add_action(‘init’, ‘custom_rewrite_rule’): Эта строка добавляет вашу функцию к действию init, что означает, что она будет выполняться при загрузке WordPress.

Шаг 2: Сброс пермалинков

После того как вы добавите этот код, вам необходимо сбросить правила перезаписи, чтобы изменения вступили в силу. Это можно сделать, перейдя в админку WordPress, затем в "Настройки" -> "Постоянные ссылки" и просто нажав "Сохранить изменения". Это не требует фактической корректировки каких-либо параметров — просто сохранение страницы обновляет правила перезаписи.

Шаг 3: Тестирование

Теперь вы можете протестировать свои новые URL. Попробуйте зайти на URL вида /something/Hippy и проверьте, будет ли перенаправление на вашу соответствующую страницу с параметром u_name установленным на Hippy.

Заключение

Использование WordPress Rewrite API — это более чистый и эффективный способ управления URL-ссылками, чем редактирование файла .htaccess вручную. Этот подход не только упрощает работу с пермалинками, но и обеспечивает совместимость с другими функциями WordPress, такими как плагин SEO или другие расширения. Если у вас возникнут дополнительные вопросы или сложности, не стесняйтесь обратиться за помощью на форумы сообщества WordPress.

Оцените материал
Добавить комментарий

Капча загружается...