wppartner.ru wordpress WP Partner

Как изменить структуру ссылок в WordPress без плагинов

Изменение структуры постоянных ссылок (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.

×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙