(uwaga: pierwotnie to pytanie dotyczyło pól niestandardowych, ale @MikeSchinkel ma lepsze rozwiązanie z niestandardowymi typami postów)
Na mojej stronie mam kilka stron, które chcę wyświetlać te same dane na pasku bocznym. Na przykład w takiej strukturze:
-Home
-Cars
-Volvo 850 overview
-Volvo 850 tech spec
-Volvo 850 pictures
-Porsche 911 overview
-Porsche 911 tech spec
-Porsche 911 pictures
-Roads
-Route 66 overview
-Route 66 history
-Route 66 pictures
-Pan-American Highway overview
-Pan-American Highway history
-Pan-American Highway pictures
Chciałbym, aby wszystkie strony Volvo 850 pokazywały te same dane na pasku bocznym, wszystkie strony Porsche pokazywały inny zestaw danych (na przykład Speed, Maker itp.).
Strony Drogi miałyby własny zestaw danych dla każdej drogi. Samochody i drogi również miałyby tam własny szablon strony, a sposób, w jaki myślę, że uzyskałby prawy pasek boczny, jest mniej więcej taki w obrębie sidebar.php:
if ( is_page_template('car-profile-template.php') ) :
// show car widgets
Oto przykładowa strona, strona Volvo 850 Pictures. Ten sam (lewy) pasek boczny powinien pojawić się na innych stronach Volvo 850, a elementy po prawej to tylko treść strony.
| Home •Cars Roads |
--------------------------------------------------------
| Overview | Volvo 840 Pictures |
| Tech Spec | (some pics) |
| •Pictures | |
------------------ |
| -Specs- | |
| Volvo 850 | |
| Speed:150mph | |
| Maker:Volvo | |
| Download PDF | |
------------------ |
| -Rating- | |
| Style:3 | |
| Safety:5 | |
| Reliablity:4 | |
------------------ |
W tym przykładzie dwa widżety paska bocznego, specyfikacje i ocena powinny otrzymywać swoje informacje z niestandardowego typu postu. Czy istnieje metoda, którą użytkownik końcowy mógłby łatwo edytować, co oznacza, że musiałby wprowadzić te dane niestandardowe tylko raz? Może nie być konieczne, aby każde z pól było oddzielne (tj. Cała specyfikacja może być wprowadzona w polu edytora, a cała ocena może być umieszczona w polu fragmentu ... może)
źródło
Odpowiedzi:
AKTUALIZACJA:
W oparciu o aktualizację pytania myślę, że muszę wyraźnie stwierdzić, że to, co jest zadane w pytaniu, można zrobić z odpowiedzią poniżej, po prostu użyłem niestandardowych pól w niestandardowym typie postu „Samochód” dla każdego elementu, który chcesz wyświetlić wszystkie strony dla danego samochodu.
Jeśli chcesz to zrobić, po prostu zakoduj pasek boczny w
single-car.php
pliku szablonu, który zamieściłem poniżej, a następnie użyj swojegoif
oświadczenia, aby określić, która zawartość ma być wyświetlana dla różnych adresów URL. Możesz podjąć wysiłek, aby widgetizować pasek boczny i opracować niestandardowy widget, w którym widżet pobierałby informacje o bieżącym identyfikatorze postu, ale dlaczego oba, chyba że budujesz to jako motyw dla innych osób?W rzeczywistości istnieje wiele subtelnie różnych sposobów na osiągnięcie tego, ale ten, który sugeruję, powinien cudownie zastanowić się nad twoimi potrzebami.
Cześć @cannyboy:
Właściwie nie wiem, jaki byłby najlepszy sposób udostępniania niestandardowych pól między postami. Ale może to być czerwona flaga, której potrzebujesz. Jeśli coś wydaje się zbyt trudne, może ...
Alternatywne podejście?
... mógłbyś przemyśleć to inaczej ? Myślę, że będziesz o wiele lepiej tworząc niestandardowy typu Post z „samochód”, a następnie można przechowywać wszystko dla każdej „strony” do jednego samochodu typu post. Oto kilka przykładowych adresów URL:
Informacje o niestandardowych typach postów
Więcej informacji na temat niestandardowych typów postów można znaleźć w odpowiedziach na następujące pytania:
Niestandardowy typ postu i reguła przepisywania
Aby zaimplementować niestandardowe typy postów i wiele stron, użyj kodu takiego jak poniżej, który rejestruje niestandardowy typ postu „Samochód”, a następnie ustawia regułę przepisywania dla twoich stron samochodowych . Umieść ten kod w
functions.php
pliku motywu lub we wtyczce, w zależności od tego, co wolisz:Samochodów -specyficznych Theme Template File
Następnie potrzebujesz motywu specyficznego dla samochodu w szablonie ; domyślna nazwa to
single-car.php
. Zakodowałem dla ciebie szablon startowy, który renderuje wszystkie trzy adresy URL ( (przegląd) , „specyfikacje techniczne” i „zdjęcia” ) w jednym szablonie, używając instrukcji if do określenia, która treść ma być renderowana:Zauważ, że w powyższym przykładzie jestem bardzo uproszczony przy użyciu
get_post_meta()
; prawdziwa strona musiałaby mieć tam znacznie większą złożoność.Tagi szablonu aka Funkcje pomocnicze
Oczywiście użyłem niektórych tagów szablonów, czyli funkcji pomocniczych, aby zminimalizować złożoność pliku szablonu w warunkach instrukcji if . Oto one i możesz je również umieścić w
functions.php
pliku motywu :Zrzuty ekranu wypełnione niestandardowym typem postu Love
Po wprowadzeniu całego kodu i dodaniu postu samochodowego, takiego jak Volvo 850 , możesz uruchomić go tak, jak na poniższych zrzutach ekranu:
Strona przeglądowa
(źródło: mikeschinkel.com )
Dane techniczne
Strona ze zdjęciami
źródło
Myślę, że ktoś mógł już odpowiedzieć na to pytanie na inne przesłane przez ciebie pytanie (o stronach nadrzędnych / stronach pośrednich), ale oto, moim zdaniem, najlepszym sposobem na uporządkowanie danych w oparciu o to, co opisałeś:
W ten sposób wystarczy wpisać pola meta tylko raz - na stronie nadrzędnej - a na stronach podrzędnych możesz pobrać te metadane z obiektu nadrzędnego:
Oczywiście, jeszcze lepszym sposobem na zorganizowanie tego byłoby posiadanie jednego niestandardowego typu posta dla każdego modelu samochodu, który przechowuje wszystkie informacje o samochodzie i wyświetla różne podstrony na podstawie żądania GET, które jest przekazywane do strony i używane w szablon strony jako przełącznik określający, który szablon ma zostać wyświetlony. W ten sposób możesz całkowicie uniknąć powielania danych i ułatwić późniejsze dodawanie dodatkowych informacji do szablonu ...
Więcej szczegółów...
Zrobiłem to na kilka różnych sposobów. W jednej witrynie, w której miałem agentów (przedstawicieli firmy) jako niestandardowy typ postów, użyłem ich postów do przechowywania wszystkich danych związanych z tą osobą, ale nigdy nie wyświetlałem tej strony. Zamiast tego miałem stronę „Lista agentów”, „Rekord wydajności agenta” i stronę „Skontaktuj się z tym agentem”, które zawsze były wywoływane zmienną GET i wyświetlały informacje z odpowiedniego wpisu. Permalink wyglądałby więc jak site.com/agent-listing/?agent=john-smith .
W innej witrynie skonfigurowałem wszystkie informacje na jednej stronie i wbudowałem wszystkie trzy widoki tej strony w szablon strony. W twoim przypadku wyglądałoby to jak site.com/cars/volvo-850/?pictures .
A w szablonie strony umieścisz sprawdzenie tej zmiennej u góry treści:
źródło
Jeśli nie chcesz tworzyć niestandardowych typów postów, a po prostu chcesz dołączyć niestandardowy pasek boczny dla każdej strony lub postu, możesz użyć wtyczki Graceful Sidebar. Umożliwia to tworzenie niestandardowych treści paska bocznego bezpośrednio z poziomu ekranu edycji posta lub strony przy użyciu dodatkowych pól zwanych wdziękiem tytułem i wdziękiem treści. Są one następnie wyświetlane w obszarze paska bocznego jako widżet, gdy ten post lub strona jest wyświetlana na blogu. Więcej informacji na temat tej wtyczki można znaleźć na stronie http://www.mlynn.org/graceful-sidebar-plugin
źródło