Как создать уникальные слаги для пользовательских типов записей в WordPress

В WordPress слаги (slug) — это часть URL, которая отвечает за идентификацию записи или страницы. При работе с пользовательскими типами записей (Custom Post Types) важно правильно настроить слаги, чтобы URL были уникальными, понятными и оптимизированными для SEO. В этой статье мы рассмотрим, как создавать уникальные слаги для CPT, избегая конфликтов с другими типами контента и таксономиями.

Почему важно создавать уникальные слаги для CPT

Когда вы регистрируете новый тип записи через функцию register_post_type, вы задаете параметр rewrite, который отвечает за формирование URL. Если слаг совпадает с существующими страницами, архивами или таксономиями, могут возникнуть конфликты, приводящие к ошибкам 404 или неправильному отображению контента.

Уникальные слаги:

  • Обеспечивают корректную работу ЧПУ (человекопонятных URL);
  • Улучшают SEO благодаря логичной структуре ссылок;
  • Повышают удобство пользователя при навигации по сайту;
  • Избегают конфликтов с другими плагинами и функциями WordPress.

Регистрация CPT с уникальным слагом: базовый пример

Рассмотрим, как создать тип записи с уникальным слагом и настроить правильные правила перезаписи URL.

function wplancer_register_custom_post_type() {
    $args = array(
        'label'  => 'Проекты',
        'public' => true,
        'rewrite' => array(
            'slug' => 'wplancer-project', // уникальный слаг
            'with_front' => false
        ),
        'has_archive' => 'wplancer-projects',
        'supports' => array('title', 'editor', 'thumbnail')
    );
    register_post_type('wplancer_project', $args);
}
add_action('init', 'wplancer_register_custom_post_type');

Здесь мы задали слаг wplancer-project для отдельных записей и wplancer-projects для архива. Это позволит избежать пересечений с другими разделами сайта.

Как проверить и очистить правила перезаписи (rewrite rules)

После регистрации CPT с новым слагом необходимо обновить правила перезаписи. Для этого можно перейти в админке WordPress в раздел Настройки → Постоянные ссылки и просто сохранить настройки. Либо сделать это программно:

function wplancer_flush_rewrite_rules() {
    wplancer_register_custom_post_type();
    flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'wplancer_flush_rewrite_rules');

Важно не вызывать flush_rewrite_rules() на каждом запросе, так как это снижает производительность.

Создание слагов с вложенной структурой

Иногда требуется, чтобы URL содержал вложенную структуру, например, категория и подкатегория. Для этого можно использовать rewrite с параметром slug, включающим слэши:

'rewrite' => array(
    'slug' => 'portfolio/wplancer-projects',
    'with_front' => false
)

Так URL будут выглядеть так: site.ru/portfolio/wplancer-projects/post-name. Это удобно для группировки контента.

Автоматическое создание уникальных слагов при сохранении записи

Иногда нужно программно изменять слаг записи, чтобы гарантировать уникальность, например, при импорте или массовом создании записей. Для этого используйте фильтр wp_insert_post_data:

function wplancer_unique_post_slug( $data, $postarr ) {
    if ( $data['post_type'] === 'wplancer_project' ) {
        $base_slug = sanitize_title( $data['post_title'] );
        $unique_slug = $base_slug;
        $i = 1;

        while ( post_exists_by_slug( $unique_slug, 'wplancer_project', $postarr['ID'] ) ) {
            $unique_slug = $base_slug . '-' . $i;
            $i++;
        }

        $data['post_name'] = $unique_slug;
    }
    return $data;
}
add_filter( 'wp_insert_post_data', 'wplancer_unique_post_slug', 10, 2 );

function post_exists_by_slug( $slug, $post_type, $exclude_id = 0 ) {
    global $wpdb;
    $query = $wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_status IN ('publish', 'pending', 'draft')",
        $slug, $post_type, $exclude_id
    );
    return $wpdb->get_var( $query ) !== null;
}

Этот код проверяет, существует ли уже запись с таким слагом, и если да — добавляет суффикс с номером.

Использование плагина Clearfy Pro для управления слагами

Плагин Clearfy Pro предоставляет удобный интерфейс для управления SEO-настройками, в том числе автоматической оптимизации слагов для всех типов записей. Он помогает избежать дублирования и конфликтов, а также позволяет настраивать исключения и правила перезаписи без необходимости писать код.

Частые ошибки и как их избежать

1. Конфликты с другими URL. Если слаг совпадает с названием страницы, таксономии или другого CPT, это приведет к ошибкам. Всегда выбирайте уникальные имена.

2. Неочищенные rewrite rules. После изменения слагов не забудьте очистить правила перезаписи.

3. Автоматическое дублирование слагов. Если записи создаются массово, контролируйте уникальность слагов программно.

4. Слишком длинные или сложные слаги. Старайтесь делать URL короткими и понятными, избегайте лишних слов.

Итоги и рекомендации

Уникальные слаги — это залог удобных и понятных URL, которые помогают SEO и улучшению пользовательского опыта. Настраивайте их при регистрации CPT, учитывайте возможные конфликты и используйте программные методы для контроля уникальности. Если хотите сэкономить время и получить дополнительные возможности, попробуйте Clearfy Pro.

Реализуйте эти советы, и ваши пользовательские типы записей получат аккуратные и удобные URL, обеспечивающие стабильную работу сайта и высокий уровень SEO.

Автоматический импорт постов из внешнего источника в WordPress
07.04.2026
Как удалить неиспользуемые термины таксономий в WordPress
26.03.2026
Как создать собственный REST API в WordPress с примерами кода
26.11.2025
Как автоматизировать управление пользовательскими ролями в WordPress
15.04.2026
Как автоматически удалять неактивных пользователей в WordPress
19.04.2026