НейроАгент

Как удалить /blog/ из URL в WordPress

Полное руководство по удалению /blog/ из URL-адресов WordPress. Узнайте как настроить красивые URL без лишних префиксов с помощью настроек, кода и плагинов.

Как удалить /blog/ из URL-адресов в WordPress?

Здравствуйте! У меня возникла проблема с настройкой красивых URL-адресов на сайте WordPress. Я хочу, чтобы ссылки выглядели как https://sait.ru/usluga/, но WordPress автоматически генерирует такие URL: https://sait.ru/blog/service/usluga/.

Я могу смириться с наличием /service/ в URL, но наличие /blog/ совершенно недопустимо для моих целей.

Я пробовал(а) вносить изменения в файл functions.php с использованием условных операторов (if), но это приводит к тому, что обычные страницы перестают создаваться, а создаются только кастомные типы записей.

Подскажите, пожалуйста, как можно решить эту проблему и удалить /blog/ из URL-адресов в WordPress?

НейроАгент

WordPress автоматически добавляет “/blog/” в URL из-за стандартных настроек постоянных ссылок и структуры типов записей. Чтобы удалить “/blog/” из URL-адресов, вам нужно изменить настройки постоянных ссылок, использовать правильные аргументы при регистрации кастомных типов записей или установить специальные плагины для управления структурой URL.

Наиболее распространенной причиной появления “/blog/” в URL является стандартная структура постоянных ссылок в WordPress. Чтобы решить эту проблему, начните с базовых настроек:

  1. Зайдите в Настройки → Постоянные ссылки в административной панели WordPress
  2. Выберите структуру “Название записи” или “Пользовательская структура”
  3. Для структуры “Название записи” установите параметр /%postname%/
  4. Сохраните изменения

Важно: После изменения настроек постоянных ссылок WordPress автоматически создаст новые URL-адресов, но старые ссылки могут продолжать работать. Если вы видите “/blog/” в URL после этих изменений, проблема, скорее всего, связана с типами записей или плагинами.


Регистрация кастомных типов записей без /blog/

При регистрации кастомных типов записей в WordPress ключевым параметром является rewrite, который управляет структурой URL. Чтобы избежать добавления “/blog/”, используйте правильные параметры:

php
function register_custom_service_post_type() {
    $args = array(
        'public' => true,
        'has_archive' => true,
        'rewrite' => array(
            'slug' => 'usluga',  // без /blog/
            'with_front' => false  // предотвращает добавление /blog/
        ),
        'menu_icon' => 'dashicons-admin-tools',
        'supports' => array('title', 'editor', 'thumbnail')
    );
    register_post_type('usluga', $args);
}
add_action('init', 'register_custom_service_post_type');

Ключевые параметры:

  • slug - определяет базовую часть URL
  • with_front => false - предотвращает добавление префикса типа записей
  • has_archive => true - создает архивную страницу для типа записей

Использование functions.php для изменения URL

Если вы уже пробовали использовать conditional operators в functions.php, но столкнулись с проблемами, вот более правильный подход:

php
// Удаление /blog/ из URL всех типов записей
function remove_blog_base($wp_rewrite) {
    $rules = $wp_rewrite->rules;
    
    // Находим и удаляем правила, содержащие /blog/
    $new_rules = array();
    foreach ($rules as $rule => $rewrite) {
        if (strpos($rule, 'blog/') === false) {
            $new_rules[$rule] = $rewrite;
        }
    }
    
    $wp_rewrite->rules = $new_rules;
    return $wp_rewrite;
}
add_filter('generate_rewrite_rules', 'remove_blog_base');

// Пересоздание правил перезаписи
function flush_rewrite_rules_after_theme_change() {
    flush_rewrite_rules();
}
add_action('after_switch_theme', 'flush_rewrite_rules_after_theme_change');

Внимание: Этот код может повлиять на работу других плагинов и функционала сайта. Всегда создавайте резервную копию перед внесением изменений.


Плагины для управления структурой URL

Существуют специальные плагины, которые помогут решить проблему с “/blog/” в URL:

1. Permalink Manager Lite

Этот плагин позволяет управлять структурой URL для всех типов записей и таксономий:

  • Автоматически обновляет URL при изменении slug
  • Поддерживает массовое обновление URL
  • Работает с кастомными структурами
  • Позволяет создавать красивые URL без лишних префиксов

2. Custom Post Type Permalinks

Специализированный плагин для управления постоянными ссылками кастомных типов записей:

  • Полный контроль над структурой URL
  • Возможность исключить базовые префиксы
  • Интеграция с SEO-плагинами
  • Экспорт/импорт настроек

Решение проблем с существующими URL

Если у вас уже есть контент с URL, содержащими “/blog/”, вам нужно:

  1. Обновить существующие URL:

    • Используйте плагин Permalink Manager для массового обновления
    • Или создайте собственный скрипт для обновления базы данных
  2. Настроить редиректы:

    php
    // Добавление редиректов со старых URL на новые
    add_action('template_redirect', 'old_blog_url_redirect');
    function old_blog_url_redirect() {
        if (preg_match('/^\/blog\/(.*)$/', $_SERVER['REQUEST_URI'], $matches)) {
            wp_redirect(home_url('/' . $matches[1]), 301);
            exit();
        }
    }
    

База данных и редиректы

В некоторых случаях может потребоваться прямое вмешательство в базу данных:

  1. Резервное копирование: Всегда создавайте резервную копию базы данных перед внесением изменений

  2. SQL запрос для обновления URL:

    sql
    UPDATE wp_posts SET post_name = REPLACE(post_name, 'blog/', '') 
    WHERE post_name LIKE 'blog/%';
    
  3. Обновление терминов таксономии:

    sql
    UPDATE wp_terms SET slug = REPLACE(slug, 'blog/', '') 
    WHERE slug LIKE 'blog/%';
    

Проверка и тестирование изменений

После внесения всех изменений необходимо:

  1. Очистить кэш:

    • Очистить кэш плагинов (если используете WP Rocket, W3 Total Cache и т.д.)
    • Очистить кэш браузера
    • Проверить работу сайта в режиме инкогнито
  2. Проверить URL:

    • Создать новую запись/страницу
    • Убедиться, что URL не содержат “/blog/”
    • Проверить работу старых ссылок (должны редиректить на новые)
  3. Тестировать функционал:

    • Убедиться, что все страницы доступны
    • Проверить работу навигации
    • Тестировать поиск по сайту

Источники

  1. Permalink Manager Lite – WordPress plugin
  2. Custom Post Type Permalinks Plugin Documentation
  3. WordPress Codex - Post Types
  4. WordPress Codex - Rewrite API

Заключение

Для удаления “/blog/” из URL-адресов в WordPress выполните следующие шаги:

  1. Начните с базовых настроек постоянных ссылок в админ-панели
  2. При регистрации кастомных типов записей используйте правильные параметры rewrite
  3. При необходимости используйте специализированные плагины типа Permalink Manager
  4. Настройте редиректы со старых URL на новые
  5. Тщательно протестируйте все изменения

Основной проблемой при попытках использовать условные операторы в functions.php является неправильный подход к перезаписи URL. Вместо этого следует использовать хуки WordPress и специализированные плагины, которые предназначены именно для управления структурой URL.