В WordPress часто возникает необходимость оптимизировать URL для улучшения SEO и удобства пользователей. Одной из распространённых задач является удаление лишних параметров контроллера из URL, например, параметров типа ?controller=example или других, которые добавляются плагинами или темами. Такие параметры могут ухудшать восприятие адреса страницы и создавать дублирующийся контент.
Что такое параметры контроллера в URL и почему их стоит удалять
Параметры контроллера — это GET-параметры, которые используются для передачи информации серверу о том, какой контроллер или обработчик должен обрабатывать запрос. В WordPress, особенно при использовании кастомных решений, таких параметров может быть несколько. Однако из-за них URL становятся громоздкими и менее читаемыми.
Удаление лишних параметров помогает:
- Улучшить читаемость URL для пользователей.
- Избежать проблем с SEO из-за дублированного контента.
- Снизить вероятность ошибок при работе с кэшированием и плагинами.
Рассмотрим, как можно убрать эти параметры программно и с помощью популярных плагинов.
Удаление параметров контроллера через фильтр WordPress
Самый гибкий способ — это использовать фильтр request, который позволяет изменить массив параметров запроса до того, как WordPress приступит к его обработке.
Добавьте следующий код в файл functions.php вашей активной темы или в собственный плагин:
function wpkpi_remove_controller_param( $query_vars ) {
if ( isset( $query_vars['controller'] ) ) {
unset( $query_vars['controller'] );
}
return $query_vars;
}
add_filter( 'request', 'wpkpi_remove_controller_param' );Этот код удалит параметр controller из запроса, что позволит избавиться от него в URL и не учитывать его при выборке данных.
Как проверить результат
Для проверки достаточно открыть страницу с URL, в котором есть параметр ?controller=example. После добавления кода и очистки кэша параметр перестанет учитываться в запросах, и WordPress будет обрабатывать страницу без него.
Принудительное удаление параметров из URL с помощью редиректа
Иногда нужно не только игнорировать параметр, но и полностью убрать его из адресной строки, чтобы избежать SEO-проблем и дублирования контента. Для этого можно использовать функцию, которая будет делать редирект на чистый URL без параметра.
function wpkpi_redirect_without_controller_param() {
if ( isset( $_GET['controller'] ) ) {
$url = remove_query_arg( 'controller' );
wp_redirect( esc_url_raw( $url ), 301 );
exit;
}
}
add_action( 'template_redirect', 'wpkpi_redirect_without_controller_param' );Данный код проверяет наличие параметра controller в URL, и если он есть — делает 301 редирект на URL без него. Это поможет поисковикам индексировать только чистые адреса.
Особенности использования редиректа
Редирект стоит использовать осторожно, чтобы не создавать циклов и не ухудшать производительность сайта. Проверьте, что параметр действительно не нужен для корректной работы сайта, прежде чем применять этот метод.
Использование плагина Clearfy для удаления лишних параметров из URL
Плагин Clearfy — мощный инструмент для оптимизации WordPress, который позволяет убрать ненужные параметры из URL, повысить безопасность и ускорить сайт.
В Clearfy есть модуль для очистки URL от лишних параметров, который можно настроить в несколько кликов без программирования. Это полезно, если вы не хотите писать код или опасаетесь ошибок.
Как настроить Clearfy для удаления параметров
- Установите и активируйте плагин Clearfy.
- Перейдите в раздел «Оптимизация» —> «Очистка URL».
- Добавьте параметр
controllerв список параметров для удаления. - Сохраните настройки.
После этого плагин будет автоматически удалять указанные параметры из URL и делать редиректы при необходимости.
Удаление нескольких параметров контроллера и других GET-параметров
Часто нужно убрать не только один параметр, а сразу несколько. Для этого расширим функцию фильтра:
function wpkpi_remove_multiple_params( $query_vars ) {
$params_to_remove = array( 'controller', 'session_id', 'tracking' );
foreach ( $params_to_remove as $param ) {
if ( isset( $query_vars[ $param ] ) ) {
unset( $query_vars[ $param ] );
}
}
return $query_vars;
}
add_filter( 'request', 'wpkpi_remove_multiple_params' );Этот код удалит из запроса сразу несколько параметров — можно добавить любые необходимые.
Удаление параметров из URL с помощью редиректа при множественных параметрах
function wpkpi_redirect_without_multiple_params() {
$params_to_remove = array( 'controller', 'session_id', 'tracking' );
$has_param = false;
foreach ( $params_to_remove as $param ) {
if ( isset( $_GET[ $param ] ) ) {
$has_param = true;
break;
}
}
if ( $has_param ) {
$url = remove_query_arg( $params_to_remove );
wp_redirect( esc_url_raw( $url ), 301 );
exit;
}
}
add_action( 'template_redirect', 'wpkpi_redirect_without_multiple_params' );Это поможет очистить URL от всех ненужных параметров и сделать сайт чище и дружелюбнее для пользователей и поисковиков.
Проверка и отладка удаления параметров контроллера
После внедрения вышеописанных решений важно проверить, что удаление параметров не нарушило работу сайта. Несколько советов:
- Проверьте основные страницы с параметрами в URL вручную.
- Используйте инструменты браузера для отслеживания редиректов (например, вкладка Network в Chrome DevTools).
- Убедитесь, что функциональность, завязанная на данных параметрах, не сломалась.
- Проверьте логи сервера на предмет ошибок после внедрения.
Если вы используете кэширование (например, через плагин или сервер), очистите кэш, чтобы изменения вступили в силу.
Заключение по теме удаления параметров контроллера из URL
Удаление лишних параметров контроллера из URL — важный шаг для улучшения SEO и удобства пользователей. В WordPress это можно сделать программно через фильтры и редиректы, а также с помощью плагинов, например, Clearfy. Главное — делать это аккуратно, проверяя функциональность сайта после изменений.