Czy można zmienić adres URL zwykłego typu postu bez wpływu na adres URL innych niestandardowych typów postów?

9

Dylemat

Mam kilka niestandardowych typów postów:

  • Elementy portfela
  • Referencje
  • FAQ

Struktury URL dla tych niestandardowych typów postów to:

  • mysite.com/ portfolio / name-of-custom-post
  • mysite.com/ testimonial / name-of-custom-post
  • mysite.com/ faq / name-of-custom-post

Chciałbym użyć zwykłego, wbudowanego typu posta WordPress do kontrolowania naszych wpisów na blogu, a adres URL każdego wpisu na blogu powinien wyglądać następująco:

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

Jeśli przejdę do Ustawienia> Permalinks i dostosuję strukturę adresu URL tak, aby ...

/blog/%postname%/

... wpływa to na adresy URL wszystkich moich typów postów, co powoduje:

  • mysite.com/ blog / portfolio / name-of-custom-post
  • mysite.com/ blog / testimonial / name-of-custom-post
  • itp...

Pytanie

Co chciałbym wiedzieć - czy można dostosować strukturę URL dla wbudowanego typu postu WordPress bez wpływu na strukturę URL innych niestandardowych typów postów?

Jedynym innym sposobem, w jaki widzę rozwiązanie mojego dylematu, jest utworzenie innego niestandardowego typu postu o nazwie „Blog”. Wydaje się to marnotrawstwem, ponieważ wtedy w ogóle nie będę używać wbudowanego typu postów WordPress.

Jeśli ktoś tego potrzebuje, dlaczego

Jeśli ktoś zastanawia się, dlaczego tak bardzo potrzebuję „blogu” w adresie URL, to dlatego, że łączymy naszego bloga z tą samą instalacją co nasza witryna i chcemy zachować adresy URL bez zmian, abyśmy nie stracili cennego soku Google.

Każda pomoc jest mile widziana - dzięki!

Ryan
źródło
Właśnie zadałem to samo pytanie prawie słowo po słowie, cieszę się, że to znalazłem, dzięki
JasonDavis,

Odpowiedzi:

14

Możesz to zrobić przy niestandardowej rejestracji typu postu.

1) Ustaw domyślny bezpośredni link w adminie WordPress na pożądaną strukturę, np .:

/ blog /% postname%

2) Dodaj parametr „slug” i „with_front” do tablicy rewrite w funkcji register_post_type. „ślimak” musi być nazwą Twojego post-type.

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

Powinno to wygenerować następujące reguły przepisywania:

Domyślny post: http://example.com/blog/%postname%
Strona domyślna: http://example.com/%postname%
Niestandardowy typ postu: http://example.com/your_post_type/%postname%

EDYTOWAĆ

Parametr „ślimak” jest opcjonalny. Jeśli go nie ustawisz, zostanie użyta nazwa niestandardowego typu postu. Sprawdź odwołanie do funkcji na temat register_post_type: http://codex.wordpress.org/Function_Reference/register_post_type

rofflox
źródło
Jesteś absolutnie mężczyzną. Działa to doskonale; Dziękuję Ci!
Ryan
@rofflox. Proszę spojrzeć na to ( wordpress.stackexchange.com/questions/52471/... ) pytanie. Próbowałem twojej odpowiedzi, ale to mi nie pomogło.
Średnia Joe
0

Alternatywa - możesz skonfigurować stałe przekierowania 301. Spowoduje to wysłanie ludzi do właściwego linku i utrzymanie nienaruszonego soku Google. Jednak nie znam odpowiedzi na konkretne pytanie.

mrtsherman
źródło
Dzięki Mrtsherman. Poprosiłem o to naszego SEO i powiedziano mi, że tracisz trochę soku Google, robiąc przekierowania 301. Chciałbym ich nie stracić, ale jeśli wszystko inne zawiedzie, mogę po prostu pójść tą drogą.
Ryan
@ Ryan - +1 śmieszne, że moja firma właśnie poprosiła o zrobienie dokładnie tego samego, co to wczorajsze popołudnie. Mam nadzieję, że ktoś przejdzie.
mrtsherman