Можно ли изменить URL для обычного типа записи, не влияя на URL других пользовательских типов записей?

9

Дилемма

У меня есть несколько пользовательских типов сообщений:

  • Портфолио
  • Отзывы
  • Вопросы и ответы

Структуры URL для этих пользовательских типов записей:

  • mysite.com/ портфолио / имя-заказ-пост
  • mysite.com/ testimonial / name-of-custom-post
  • mysite.com/ faq / name-of-custom-post

Я хотел бы использовать обычный встроенный тип поста WordPress для управления записями нашего блога, и чтобы URL-адрес каждой записи блога был таким:

  • mysite.com/ blog / name-of-post

Если я иду в Настройки> Постоянные ссылки и настраиваю структуру URL, чтобы быть похожим на ...

/blog/%postname%/

... тогда затрагиваются URL для всех моих типов постов, что приводит к:

  • mysite.com/ блог / портфолио / имя-заказ-пост
  • mysite.com/ blog / testimonial / name-of-custom-post
  • так далее...

Вопрос

Что я хотел бы знать - можно ли настроить структуру URL для встроенного типа записей WordPress, не затрагивая структуру URL других пользовательских типов записей?

Единственный способ решить мою дилемму - создать еще один пользовательский тип поста под названием «Блог». Это кажется расточительным, потому что тогда я вообще не буду использовать встроенный тип поста WordPress.

Если кому-то это нужно, почему

Если кто-то задается вопросом, почему мне так сильно нужен «блог» в URL, это потому, что мы объединяем наш блог с той же установкой, что и наш сайт, и хотим сохранить URL-адреса нетронутыми, чтобы не потерять ценный сок Google.

Любая помощь очень ценится - спасибо!

Райан
источник
Я просто задал этот же вопрос почти слово в слово, рад, что нашел это, спасибо
JasonDavis

Ответы:

14

Вы можете сделать это при регистрации на заказ.

1) Установите постоянную ссылку по умолчанию в админке WordPress на желаемую структуру, например:

/ Блог /% postname%

2) Добавьте параметр «slug» и «with_front» в массив rewrite в функции register_post_type. "Слизняк" должен быть названием вашего пост-типа.

  $args = array(
    // ...
    'rewrite' => array(
        'slug' => 'your_post_type',
        'with_front' => false
    ),
    // ...
  ); 
  register_post_type('your_post_type',$args);

Это должно сгенерировать следующие правила перезаписи:

Сообщение по умолчанию: http://example.com/blog/%postname%
Страница по умолчанию: http://example.com/%postname%
Пользовательский тип сообщения: http://example.com/your_post_type/%postname%

РЕДАКТИРОВАТЬ

Параметр "slug" является необязательным. Если вы не установите его, используется имя вашего пользовательского типа записи. Проверьте ссылку на функцию о register_post_type: http://codex.wordpress.org/Function_Reference/register_post_type

rofflox
источник
Вы абсолютно мужчина. Это работает отлично; благодарю вас!
Райан
@rofflox. Пожалуйста, посмотрите на этот ( wordpress.stackexchange.com/questions/52471/… ) вопрос. Я попробовал ваш ответ, но это не помогло мне.
Средний Джо
0

Альтернатива - вы можете установить постоянные 301 перенаправления. Это отправит людей на правильную ссылку и сохранит ваш google сок без изменений. Я не знаю ответа на ваш конкретный вопрос.

mrtsherman
источник
Спасибо Мртшерман. Я спросил нашего SEO-менеджера об этом, и мне сказали, что вы теряете немного сока Google, делая 301 переадресацию. Я бы хотел не потерять никого, но если ничего не получится, я могу просто пойти по этому пути.
Райан
@Ryan - +1 забавно, моя компания просто попросила сделать то же самое, что и вчера вечером. Надеюсь, кто-нибудь придет.
Мртшерман