Изменение структуры постоянных ссылок (Permalinks) в WordPress — одна из частых задач для разработчиков и владельцев сайтов. Правильная структура URL важна для удобства пользователей и улучшения SEO. В этой статье мы подробно разберём, как изменить структуру ссылок без установки дополнительных плагинов, используя встроенные средства WordPress и кастомный код.
Почему важно менять структуру постоянных ссылок
Стандартная структура ссылок WordPress по умолчанию не очень удобна: ссылки вида https://example.com/?p=123 не информативны ни для человека, ни для поисковых систем. Более читаемые URL повышают кликабельность и помогают ранжированию.
Кроме того, при смене структуры важно правильно настроить редиректы, чтобы не потерять трафик и SEO-позиции.
Рассмотрим, как изменить структуру ссылок с помощью панели настроек и дополнительно с помощью кода в functions.php для более тонкой настройки.
Как изменить структуру ссылок через панель администратора
Самый простой способ — зайти в админ-панель WordPress в раздел Настройки → Постоянные ссылки. Там есть несколько стандартных вариантов:
- Простая —
?p=123 - День и название —
/2024/06/21/sample-post/ - Месяц и название
- Числовая
- Название записи —
/sample-post/ - Произвольная структура — где можно задать свои параметры
Например, чтобы сделать URL вида /blog/sample-post/, в поле «Произвольная структура» нужно ввести /blog/%postname%/.
После сохранения WordPress автоматически обновит файл .htaccess (если он доступен для записи) с необходимыми правилами перезаписи.
Что делать, если .htaccess не обновляется
Если изменения не вступают в силу, возможно, файл .htaccess защищён от записи. В этом случае нужно вручную добавить следующий код в .htaccess в корне сайта:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Этот код позволит корректно обрабатывать URL по новой структуре.
Использование фильтров для тонкой настройки структуры URL
Иногда стандартных тегов (например, %postname%, %category%) недостаточно. WordPress позволяет создавать пользовательские структуры с помощью фильтров и хуков.
Рассмотрим пример добавления собственного префикса на основе пользовательского поля (мета-данных) к URL записи.
Пример: добавляем в URL значение пользовательского мета-поля
Допустим, у записей есть мета-поле wp_partner_custom_prefix, и мы хотим, чтобы URL выглядел так:
/prefix-value/post-name/
Для этого добавим следующий код в файл functions.php вашей темы:
function wppartner_custom_post_link( $permalink, $post ) {
if ( $post->post_type != 'post' ) {
return $permalink;
}
$custom_prefix = get_post_meta( $post->ID, 'wp_partner_custom_prefix', true );
if ( ! $custom_prefix ) {
$custom_prefix = 'default';
}
$permalink = home_url( '/' . $custom_prefix . '/' . $post->post_name . '/' );
return $permalink;
}
add_filter( 'post_link', 'wppartner_custom_post_link', 10, 2 );Этот фильтр изменяет URL поста, добавляя перед названием поста значение мета-поля или дефолтный префикс.
Настройка правил перезаписи для новой структуры
Чтобы WordPress корректно обрабатывал такие URL, нужно добавить правила перезаписи:
function wppartner_custom_rewrite_rules() {
add_rewrite_rule('^([^/]+)/([^/]+)/?$', 'index.php?name=$matches[2]', 'top');
}
add_action('init', 'wppartner_custom_rewrite_rules');После добавления этого кода необходимо обновить правила перезаписи, зайдя в «Настройки → Постоянные ссылки» и просто сохранив настройки.
Как безопасно менять структуру ссылок без потери SEO
Если сайт уже работает и имеет индексацию в поисковых системах, изменение структуры может привести к ошибкам 404 и потере позиций.
Для предотвращения проблем рекомендуем:
- Настраивать 301 редиректы со старых URL на новые. Для этого можно добавить в .htaccess или использовать хуки WordPress.
- Проверить все ссылки на сайте, чтобы они указывали на новые URL.
- Использовать Google Search Console для отслеживания ошибок и обновления карты сайта.
Пример простого 301 редиректа в functions.php
function wppartner_redirect_old_urls() {
$request_uri = $_SERVER['REQUEST_URI'];
if ( preg_match('#^/\?p=(\d+)$#', $request_uri, $matches) ) {
$post_id = $matches[1];
$new_url = get_permalink( $post_id );
if ( $new_url ) {
wp_redirect( $new_url, 301 );
exit;
}
}
}
add_action( 'template_redirect', 'wppartner_redirect_old_urls' );Этот код перенаправляет старые ссылки с параметром ?p=ID на новые постоянные URL.
Использование плагина Clearfy Pro для оптимизации структуры ссылок
Если вы хотите дополнительно оптимизировать структуру ссылок и убрать лишние параметры, можно воспользоваться плагином Clearfy Pro. Он позволяет:
- Удалять ненужные параметры из URL
- Оптимизировать ЧПУ
- Устранять дублированный контент, связанный с URL
Clearfy Pro отлично подходит для тех, кто хочет глубже контролировать структуру ссылок без написания сложного кода.
Заключение по теме изменения структуры ссылок
Изменение структуры ссылок в WordPress — задача, которую можно решить как средствами админ-панели, так и с помощью кастомного кода. Главное — тщательно планировать изменения, чтобы не потерять SEO и обеспечить стабильную работу сайта.
Используйте фильтры и хуки, чтобы создавать уникальные URL под свои задачи, и не забывайте про редиректы и обновление правил перезаписи.
Если хотите облегчить себе задачу — обратите внимание на проверенные плагины, например, Clearfy Pro.