Не удается удалить ненужный слаг

Вопрос или проблема

Я использую тему, которая использует разные типы постов, такие как обычные “посты”, “видео” и “телесериалы”. Я могу добавить пост в вкладке “посты”, могу добавить видео (это тоже пост) в вкладке “видео”, и то же самое касается вкладки “телесериалы”.

Я сталкиваюсь с раздражающей проблемой с URL. Мои постоянные ссылки имеют пользовательскую структуру: /%category%/%postname%/
Это прекрасно работает, когда я публикую обычный пост во вкладке “посты”. Однако, когда я публикую пользовательский тип поста (во вкладке видео или телесериалы), URL получается вроде: mydomain..com/title/example-movie-name, а когда я публикую серию, URL получается: mydomain..com/episodes-title/example-series-episode-3/. /title/ всегда присутствует для “видео” постов, и /episodes-title/ всегда присутствует для “телесериалов”. Это очень раздражает.

Я пытался использовать пользовательский код через плагин для фрагментов кода, благодаря chatgpt, чтобы удалить эти ненужные слоги (/title/ и /episodes-title/) из URL. Это действительно сработало, но также сломало все ссылки и весь сайт, поэтому мне пришлось отменить это. Я также пытался вставить этот код в functions.php, но результаты были теми же. Также мой mod_rewrite включен.

Сейчас у меня более 2000 “постов телесериалов (эпизодов)” и 100 “видео постов”, так что даже если существует способ сделать это с помощью плагина, вручную по одному, я думаю, я не смогу это сделать, так как это займет слишком много времени. Мне нужно удалить эти ненужные слоги более коротким способом.

На данный момент я даже не уверен, действительно ли мне нужно удалять этот слог. Я просто считаю его ненужным, и с точки зрения SEO, лучше, если я его удалю. Чем чище URL, тем лучше опыт для пользователя, верно? Я даже не уверен, если мне удастся редактировать URL, создаст ли это проблемы с индексацией?

Вот пользовательский код, который мне дал chatgpt: (video_skrn и episodes_skrn – это названия моих пользовательских типов постов)

function custom_post_type_slug($args, $post_type) {

if ($post_type === 'video_skrn') { // Замените 'videos' на ваш слог типа поста

$args['rewrite'] = array('slug' => "https://wordpress.stackexchange.com/"); // Пустой слог удаляет его полностью

}

if ($post_type === 'episodes_skrn') { // Замените на ваш слог типа поста

$args['rewrite'] = array('slug' => "https://wordpress.stackexchange.com/");

}

return $args;

}

add_filter('register_post_type_args', 'custom_post_type_slug', 10, 2);

Буду благодарен за любую помощь, спасибо!

Ответ или решение

Проблема с удалением ненужных слогов в URL, таких как /title/ и /episodes-title/, может возникнуть из-за особенностей работы систем управления контентом, таких как WordPress, особенно при использовании нестандартных типов записей. Ваша задача — сократить URL до более чистого и удобного вида, что может положительно повлиять на SEO и пользовательский опыт. Давайте подробно рассмотрим, как можно решить эту проблему.

Понимание проблемы

Используя пользовательские типы записей, вы столкнулись с проблемами в структуре URL. Ваши текущие настройки перманентных ссылок (/ %category% /%postname% /) работают для обычных записей, но для пользовательских типов записей вы получаете дополнительные слоги, которые вы не хотите видеть.

Решение проблемы

  1. Корректное редактирование пользовательских типов записей:
    Вам необходимо убедиться, что вы правильно настраиваете слоги для ваших пользовательских типов записей. Вместо того чтобы пытаться удалить слог путем назначения пустого значения, определите, что именно вы хотите установить для слога.

    Вот пример функции, которая позволит вам установить новые значения слогов, которые будут более удобными:

    function custom_post_type_slug($args, $post_type) {
       if ($post_type === 'video_skrn') {
           $args['rewrite'] = array('slug' => 'video'); // Установите желаемый слог
       }
    
       if ($post_type === 'episodes_skrn') {
           $args['rewrite'] = array('slug' => 'episodes'); // Установите желаемый слог
       }
    
       return $args;
    }
    add_filter('register_post_type_args', 'custom_post_type_slug', 10, 2);

    В этом примере установка слогов ‘video’ и ‘episodes’ позволяет вам контролировать структуру URL, удовлетворяющую ваши требования.

  2. Сброс пермалинков:
    После того как вы внесли изменения в код, не забудьте сбросить настройки пермалинков. Это можно сделать в админ-панели WordPress, перейдя в раздел "Настройки" -> "Постоянные ссылки" и просто нажав кнопку "Сохранить изменения". Это позволяет WordPress обновить правила переопределения.

  3. Обработка 301 редиректов:
    Поскольку вы упоминаете, что у вас есть много существующих записей, важно настроить 301 редиректы с помощью плагина, такого как Redirection. Это поможет избежать ошибок 404 и сохранить SEO-рейтинги для существующих страниц. Иногда ссылки могут измениться, и наличие редиректов гарантирует, что пользователи и поисковые системы будут направлены на правильные страницы.

  4. SEO-оптимизация:
    Более короткие и понятные URL положительно влияют на SEO, так как они легче воспринимаются пользователями и поисковыми системами. Тем не менее, вы также должны учитывать, что изменение слогов может вызвать проблемы с индексированием. Как только вы обновите URL, предоставьте Google новый контент через Google Search Console.

  5. Тестирование и мониторинг:
    После внесения всех изменений протестируйте ваш сайт. Убедитесь, что все страницы доступны, нет битых ссылок, а URL ведут на правильные записи. Также периодически проверяйте консоль Google на предмет ошибок индексации.

Заключение

Удаление ненужных слогов может значительно улучшить структуру вашего сайта и пользовательский опыт в целом. Используя вышеописанные методы, вы можете контролировать настройки пользовательских типов записей и обеспечить правильную работу вашего сайта. Не забывайте следить за изменениями и вовремя обновлять настройки, чтобы избежать потенциальных проблем с доступом и индексированием ваших страниц.

Оцените материал
Добавить комментарий

Капча загружается...