Czy posty mogą mieć rodziców?

13

Czy posty mają mieć rodziców? Jeśli tak, co to znaczy, że post ma rodzica?

Ponadto, jeśli istnieją ograniczenia dotyczące postów mających rodziców, to gdzie to jest egzekwowane? Nie w DB, tak jak ja to widzę.

Alexander Bird
źródło

Odpowiedzi:

15

Po wyjęciu z pudełka nie, posty nie mogą mieć rodziców. Można je przypisać do kategorii, które można uporządkować hierarchicznie. Strony mogą jednak mieć rodziców i można z nich zbudować strukturę menu za pomocą tej funkcji.

Jeśli chodzi o to, gdzie jest to wymuszone: element nadrzędny postu jest przechowywany w kolumnie „post_parent” w „wp_posts”. Nie jest tak naprawdę egzekwowany, tylko domyślny interfejs użytkownika nie daje możliwości ustawienia go, a domyślne kodowanie WP nie używa tej wartości dla postów. Nie byłoby jednak trudno stworzyć niestandardowy typ postu, aby mieć posty z rodzicami.

ZweiBlumen
źródło
2
Należy również pamiętać, że załączniki multimedialne korzystają z post_parentkolumny, aby zidentyfikować stronę / post (w tym niestandardowe typy postów), do których są dołączone.
David Gard
@DavidGard Masz rację. Myślę jednak, że ta funkcjonalność nie zmieni się, jeśli przypiszemy post_parentdo innego „post_id”, jak byłoby 0inaczej.
Nieznajomy
11

Wp ma wbudowane „Strony” (hierarchiczne, dozwolone dla rodziców) i „Posty” (niehierarchiczne). Istnieją również inne typy postów, ale zostawmy to.

Jeśli Q powoduje:

Czy mogę mieć hierarchiczne posty?

Odpowiedź brzmi: tak ,… możesz mieć „posty” hierarchiczne. Ponieważ jednak nie są one wbudowane, musisz zarejestrować własny niestandardowy typ postu - patrz: Argumenty »hierarchiczne.

Takie „posty” (lub artykuły, cokolwiek,…) następnie - w przypadku, gdy mają post nadrzędny - ustawią identyfikator nadrzędny wewnątrz swojego obiektu. W pętli można wykonać następujące czynności:

if ( have_posts )
{
    the_post();
    // etc.

    global $post;
    // call parent: http://codex.wordpress.org/Function_Reference/get_post
    $parent = get_post( $post->post_parent );

    echo "<h2>{$post->post_title} is a child of {$parent->post_title}";

    // etc.
} // endif;
kajzer
źródło
2
Idealnie przybity. Właśnie tego szukałem.
Paras Shah
-1

Z perspektywy wyszukiwarki dwie z tych odpowiedzi łącznie pomogą Google w śledzeniu hierarchii twoich postów oraz oczywiście użytkowników.

  1. Dodaj stronę i użyj jej do hostowania swoich postów. „Najlepszym sposobem ustawienia strony nadrzędnej za pomocą wszystkich swoich postów jest menu (Wygląd -> Dostosuj). Możesz ustawić stronę statyczną strony głównej lub strony postów. Po ustawieniu strony statycznej strona będzie być rodzicem dla każdego posta na blogu ”.

  2. Zmień strukturę łącza bezpośredniego na / blog /% postname%, jak wspomniano powyżej. „Załóżmy, że chcesz dołączyć blog przed opublikowaniem w adresie URL, a nie upewnij się, że nazwa ślimaka Twojej strony blogowej to blog.

Następnie przejdź do WP-admin-panel> ustawienia> bezpośredni link i wybierz ostatnią opcję „struktura niestandardowa” i dodaj w niej następujące elementy:

/ blog /% postname% /

i zapisz zmiany. Zostanie zastosowany tylko do strony bloga, na innej stronie blog nie będzie wyświetlany jako nadrzędny ”.

W ten sposób Google widzi hierarchię w mapach witryn jako domain.com/page/post (w tej kolejności), a także znajdzie treść w tym samym miejscu. Podobnie jak użytkownicy. Zadanie wykonane.

Rosie
źródło
-4

Załóżmy, że chcesz dołączyć blog przed opublikowaniem w adresie URL, a nie upewnij się, że nazwa ślimaka Twojej strony blogu to blog.

Następnie przejdź do WP-admin-panel> ustawienia> bezpośredni link i wybierz ostatnią opcję „struktura niestandardowa” i dodaj w niej następujące elementy:

/blog/%postname%/

i zapisz zmiany.

Zostanie zastosowany tylko do strony bloga, na innej stronie blog nie będzie wyświetlany jako nadrzędny.

Deni
źródło
-6

Wiem, że to stary post. Jednak żadna z tych odpowiedzi nie jest poprawna i chciałem opublikować rozwiązanie, którego użyłem do rozwiązania tego problemu. Najlepszym sposobem na ustawienie strony nadrzędnej we wszystkich swoich postach jest menu (Wygląd -> Dostosuj). Możesz ustawić stronę statyczną dla swojej strony głównej lub strony postów. Gdy ustawisz statyczną stronę posta, strona ta będzie nadrzędna dla każdego posta na blogu.

LateToTheParty
źródło
2
To nie jest strona nadrzędna - to szablon zawierający archiwum postów. Skonfigurowanie tego nie powoduje, że posty są hierarchiczne.
kaiser
Jak to nie jest strona nadrzędna? Jest to strona statyczna (która, nawiasem mówiąc, nie musi być archiwum, bez względu na to, jaki szablon strony przypisujesz do tej strony statycznej, może mieć wszystko, co chcesz), a kiedy to zostanie skonfigurowane, twoje adresy URL będą postępować zgodnie z tą hierarchią, a także na stronie. Jest to 1 minutowa poprawka, która pozwala przypisać statyczną stronę jako nadrzędnego postu. Jego pytanie mówi przede wszystkim o tym, że jest ono hierarchiczne. Może mógłbyś mnie oświecić na temat tego, jak to rozwiązanie byłoby złą praktyką?
LateToTheParty
„Czy posty mają mieć element nadrzędny” to to samo, co „Czy posty są hierarchiczne”. Szablon może zawierać wszystko , ale sam fakt, że zawiera pętlę, która zwraca i wyświetla pętlę archiwum, nie (a) czyni strony nadrzędną (jest to tylko miejsce, w którym pętla się znajduje) i (b) nie ustaw wbudowany typ postu jako „post” hierarchicznie lub innymi słowy, nie przypisuje elementu nadrzędnego. Ale tak, możesz przywoływać posty w pętli według określonych kryteriów (takich jak wspólna kategoria podrzędna).
kaiser
Nie daj się zwieść krytyce lub wyjaśnieniu pytania lub odpowiedzi. To miejsce jest miejscem, w którym tak naprawdę musi się zdarzyć cały czas, aby najlepsze odpowiedzi odniosły sukces i służyć jako miejsce wiki / biblioteki, do którego można się udać i od razu dowiedzieć się, jak coś zrobić lub uzyskać jak najwięcej informacji o tym, jak coś działa. Zachęcamy nawet ludzi (takich jak Ty) do komentowania innych odpowiedzi. Pamiętaj, że nigdzie nie wspomniałem, że twoja odpowiedź to zła praktyka . Jest to prawdą na wiele sposobów, po prostu stwierdzenie, że czyni hierarchię typu postu, nie jest.
kaiser