Как удалить из ссылки название типа записи на страницах материалов?

Как можно настроить тип записей "news" в WordPress, чтобы ссылки на материалы не содержали "news" в их URL? В данный момент ссылки на материалы имеют формат `site.com/news/post-name`, а необходимо, чтобы они выглядели как `site.com/post-name`. Как это можно осуществить?
  • 7 октября 2024 г. 14:14
Ответы на вопрос 2
Чтобы удалить часть "news" из URL для пользовательского типа записей (custom post type) в WordPress, необходимо изменить параметры при создании этого типа записей. Также стоит настроить обычные постоянные ссылки (permalinks). Вот шаги, которые помогут вам это сделать:

### 1. Изменение параметров при регистрации типа записи

При регистрации вашего типа записи `news`, убедитесь, что вы использовали параметр `rewrite` следующим образом:

```php
function custom_post_type_news() {
    $args = array(
        'label' => 'News',
        'public' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => ''), // Указываем пустую строку
        'supports' => array('title', 'editor', 'excerpt', 'thumbnail'),
    );

    register_post_type('news', $args);
}
add_action('init', 'custom_post_type_news');
```

### 2. Сохранение постоянных ссылок

После внесения изменений в код, вам необходимо обновить настройки постоянных ссылок:

- Перейдите в админку WordPress.
- Зайдите в **Настройки** -> **Постоянные ссылки**.
- Просто нажмите кнопку **Сохранить изменения** — это обновит структуру постоянных ссылок.

### 3. Обработка возможных конфликтов

Имейте в виду, что если на вашем сайте есть страницы или записи с одинаковыми слагами (например, `site.com/post-name` это может быть обычная запись или страница), это может вызвать конфликты. Если столкнетесь с подобными проблемами, стоит продумать уникальные слаги для ваших записей.

### 4. Дополнительная настройка .htaccess (опционально)

В большинстве случаев вышеуказанных шагов достаточно, но если у вас возникнут проблемы с URL, возможно, вам понадобится проверить файл `.htaccess`. Он должен содержать базовые правила для перезаписи:

```plaintext
# 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
```

Убедитесь, что этот код присутствует и не изменен.

### Заключение

После выполнения вышеперечисленных шагов, ссылки на записи типа `news` должны выглядеть как `site.com/post-name`, и вам больше не нужно будет добавлять "news" в URL.
ссылка на сам материал типа записи сейчас site.com/news/post-name
а нужно что бы открывался без news а site.com/post-name
как это реализовать?


А если ты создашь запись или страницу post-name - как ВП должен понять что показывать?

Итого - без костылей нельзя. А использование костылей чревато разного рода проблемами. Если не сразу, то в будущем.
Похожие вопросы