Custom post type, как задать url на русском?

Ссылка скопирована
1 ответ

Всем драсте.
Создал custom post type - doctors , slug - врачи. Все корректно работает, в адресной строке выдает врачи, архивная страница site.ru/врачи работает.
Проблема: установил yoats и с помощью его вывожу хлебные крошки и у меня выводится ( главная doctors Петров ) , а мне надо ( главная врачи Петров ) , как это можно поправить ? Пробовал в настройках самого yoats не нахожу, менял по разному не работает.

Дополнительно:

Ответы:

Скорее всего yoast тянет "doctors" из аргумента labels функции register_post_type.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Для custom post type можно задать русский slug в параметре rewrite. WordPress технически поддерживает кириллицу в URL, а браузер будет показывать её красиво, хотя внутри она кодируется percent-encoding. Главное — регистрировать CPT на init и после изменения slug пересохранить постоянные ссылки.

add_action('init', function () {
    register_post_type('service', [
        'labels' => [
            'name'          => 'Услуги',
            'singular_name' => 'Услуга',
        ],
        'public'       => true,
        'has_archive'  => 'услуги',
        'rewrite'      => [
            'slug'       => 'услуги',
            'with_front' => false,
        ],
        'show_in_rest' => true,
        'supports'     => ['title', 'editor', 'thumbnail'],
    ]);
});

add_action('init', function () { register_post_type('service', [ 'labels' => [ 'name' => 'Услуги', 'singular_name' => 'Услуга', ], 'public' => true, 'has_archive' => 'услуги', 'rewrite' => [ 'slug' => 'услуги', 'with_front' => false, ], 'show_in_rest' => true, 'supports' => ['title', 'editor', 'thumbnail'], ]); });

После этого откройте «Настройки → Постоянные ссылки» и нажмите «Сохранить». Это обновит rewrite rules. Делать flush_rewrite_rules() на каждом запросе нельзя: это лишняя нагрузка.

Минусы кириллических URL: при копировании в некоторые системы ссылка может превращаться в длинную строку с %D1%83..., бывают проблемы со старыми интеграциями и логами. Для SEO кириллица допустима, но на практике часто выбирают латиницу: /uslugi/, /portfolio/, /stati/.

Если сайт уже индексируется со старым slug, смена URL требует 301-редиректов со старых адресов на новые. Иначе можно потерять трафик и получить 404.

Перед внедрением на рабочем сайте проверьте решение на копии или хотя бы сделайте резервную копию изменяемого файла. После правки включите отображение ошибок, откройте проблемную страницу в обычном и приватном окне, проверьте консоль браузера и логи PHP. Если задача связана с WordPress, WooCommerce или ACF, дополнительно проверьте поведение после очистки кэша и после выхода из админки: часть ошибок видна только для незалогиненного пользователя.

Если код работает только в одном шаблоне, лучше не оставлять его разрозненно в нескольких файлах. Вынесите повторяемую логику в функцию, небольшой плагин или template part, а в шаблоне оставьте только вызов. Так проще поддерживать решение после обновления темы, плагинов и PHP.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно