Benutzerdefinierte Seitenvorlage erstellen

Also, auf meiner WordPress-Seite habe ich eine Seite namens “Bücher” und Unterseiten, die jeweils Informationen über ein Buch enthalten.

Es sieht ungefähr so ​​aus:

  • Bücher
    • Harry Potter, JKRowling
    • Ein anderes Buch, das schrieb
    • Ein anderes Buch, das schrieb
    • Ein anderes Buch, das schrieb

Ich möchte eine benutzerdefinierte Seitenvorlage für die Seite “Bücher” erstellen, die alle Unterseiten auflistet. Ich habe es geschafft folgendes zu finden:

 

Wich tut die Arbeit, aber wie könnte ich Vorlage erstellen, die mehr Informationen über das Buch verwenden wird. dh Buchtitel, Buchumschlagbild und einige andere Informationen, die mit benutzerdefinierten Feldern erstellt wurden.

Ich bin mir nicht sicher, ob ich das richtig erklärt habe, also werde ich versuchen, es zu skizzieren. Dies versuche ich mit der Seitenvorlage für die Seite “Bücher” zu erreichen: Skizzieren

Roter Text zeigt die Art des Inhalts an, der von Unterseiten “gezogen” werden muss.

Solutions Collecting From Web of "Benutzerdefinierte Seitenvorlage erstellen"

Angenommen, Sie befinden sich auf einer Seitenvorlage oder einer benutzerdefinierten Seitenvorlage, möchten Sie zunächst die aktuelle Seiten-ID abrufen und diese ID dann zum Abrufen der untergeordneten Elemente verwenden. Sobald Sie die Kinder haben, zeigen Sie den Inhalt für diese Kinder an.

Versuchen Sie es mit get_children (); Sie können auch get_page_children ausprobieren, aber für mein Beispiel verwende ich get_children:

 < ?php //assuming you're on a page template in the loop $this_page_id = get_the_ID(); //get this page ID $args = array( 'post_parent' => $this_page_id, //parent's ID 'post_type' => 'page', //just want pages 'post_status' => 'publish' //only pages that are published ); $children_array = get_children( $args ); //get children pages foreach( $children_array as $child_page ){ //for each child page $child_id = $child_page->ID; //get the child ID echo get_the_title( $child_id ); //get the child title echo get_post_meta( $child_id, 'custom-field-name', true ); //get the child custom field echo get_the_content( $child_id ); //get the child content } ?> 

Ersetzen Sie den “benutzerdefinierten Feldnamen” durch Ihre benutzerdefinierten Feldnamen, wenn Sie get_post_meta verwenden . Wp_list_pages ist besser geeignet, wenn Sie ein Menü Ihrer Seiten haben möchten , anstatt Informationen von den Seiten auszugeben – ähnlich wie wp_list_categories für Kategorien funktioniert. Ich hoffe, das hilft!

Wenn Sie Posts (statt Seiten) und Kategorien verwenden, können Sie dazu eine benutzerdefinierte Archivvorlage für alle Posts in den Kategorienbüchern erstellen. Dies ist zum Beispiel die Kategorieseite von “Bild der Woche” in einem Fotografie-Blog. http://blog.keithberr.com/category/image-of-the-week/ In diesem Fall kopierte ich category.php und speicherte es als category-21.php (21 ist die ID für diese bestimmte Kategorie.) Ich dann hat es geändert, um das Postdatum, das Bild und den Titel anzuzeigen. Sie könnten es weiter anpassen, um einen Auszug oder benutzerdefinierte Felder zu enthalten.

Ich bin mir nicht sicher, was Sie sonst noch auf Ihrer Seite haben. Wenn Sie anderen Seiteninhalt und einen Blog haben, können Sie besser einen benutzerdefinierten Post-Typ für Bücher erstellen. Sie könnten dann auch benutzerdefinierte Felder oder Taxonomien verwenden, um zusätzliche Informationen hinzuzufügen. Dann könnten Sie eine benutzerdefinierte Seite erstellen, um alle Bücher mithilfe einer Abfrage anzuzeigen.

Zum Beispiel habe ich eine Seite auf einer Demo-Site, die eine alphabetische Liste aller Posts in den benutzerdefinierten Beitragstyp-Monstern anzeigt. http://www.coolwebdev.com/givecamp/monsters/ . Die Vorlage ist einfach page-monsters.php. Der Code für die Abfrage lautet wie folgt:

 
    < ?php $wp_query = new WP_Query(array('showposts' => 50, 'post_type' => array('monsters'),'orderby' => 'title'));?> < ?php if (have_posts()) : ?> < ?php while (have_posts()) : the_post(); ?>
  • < ?php the_title(); ?>
  • < ?php endwhile; ?> < ?php endif; ?>

Während ich eine ungeordnete Liste benutzte und nur Titel einbrachte, konnte man das ändern, um ein Bild, einen Ausschnitt, etc. einzuschließen.