Вопрос или проблема
Это правило работает так хорошо.
add_action( 'rewrite_rules_array', 'rewrite_rules' );
function rewrite_rules( $rules ) {
$newrules = array();
$newrules[ 'group/(.*)/?$' ] = 'index.php?pagename=test&group=$matches[1]';
return $newrules + $rules;
}
Но сейчас у меня есть 2 URL.
2) www.site.com/*kitty*/*images*/
Теперь, когда я посещаю: www.site.com/kitty/
Я хочу быть перенаправленным на: www.site.com/*kitty*/*images*/
Важно! Перенаправление, а не перезапись
Как я могу это сделать?
Ответ или решение
Конечно, чтобы выполнить переадресацию с одного URL на другой, используя WordPress и не прибегая к .htaccess, можно воспользоваться хуком template_redirect
вместо rewrite_rules_array
. Хук rewrite_rules_array
больше подходит для задачи переписывания URL, тогда как для переадресации подходит template_redirect
. Давайте разберем, как можно реализовать это на практике.
Решение задачи с использованием template_redirect
Для того чтобы перенаправить ваш первый URL (http://www.site.com/kitty/
) на другой (http://www.site.com/kitty/images/
), вы можете использовать следующий код в файле functions.php вашей WordPress темы или в плагине:
add_action( 'template_redirect', 'redirect_kitty_to_images' );
function redirect_kitty_to_images() {
if ( is_page('kitty') ) {
wp_redirect( site_url('/kitty/images/'), 301 );
exit;
}
}
Пояснение к коду
-
Использование хука
template_redirect
: Этот хук срабатывает перед выдачей страницы. Он отлично подходит для выполнения любых переадресаций, так как мы уже знаем, какую страницу пользователь пытается посетить. -
Функция
is_page('kitty')
: Проверяет, что текущая страница — это страница с адресомkitty
. Такой подход предполагает, что вы используете структуру постоянных ссылок, в которой такая страница зарегистрирована. -
Функция
wp_redirect()
: Функция WordPress, которая устанавливает заголовок для 301-переадресации и перенаправляет пользователя на указанный URL. Здесь мы используем статус код 301, что соответствует постоянной переадресации. -
Использование
exit;
: Завершает выполнение скрипта после переадресации, чтобы избежать дальнейшей обработки кода WordPress.
На что обратить внимание
- Убедитесь, что страница
kitty
существует в вашей структуре страниц WordPress. - Проверьте, что структура переадресации применима для всех нужных страниц.
- Всегда тестируйте изменения на стадии разработки либо на тестовой копии вашего сайта, прежде чем применять их на продуктивном сервере.
Заключение
Этот подход позволяет сохранить переадресацию легкой и управляемой внутри WordPress, без необходимости изменения конфигурации сервера через .htaccess. Это особенно полезно, если у вас нет прямого доступа к файлам конфигурации сервера или если вы хотите максимально использовать возможности WordPress для управления URL.