it-swarm.com.de

Inhalt der Seitenvorlage anzeigen (get_page)

Mein Problem ist, dass ich Inhalt von 3 Seiten auf index.php mit get_page () angezeigt habe. Das Problem ist, dass jede dieser Seiten eine eigene Seitenvorlage hat

/*
Template Name: another page template
*/

welches die Schleife mit 3 Beiträgen in der Kategorie enthält.

Auf diese Weise kann ich nur den Inhalt einer Seite sehen, die im WP Editor eingegeben wurde, aber keine Spur von abgefragten Beiträgen auf Seiten.

Wie zeige ich drei Beiträge aus der Seitenvorlage auf index.php an?

Zum Anzeigen von Seiten auf index.php verwende ich:

<?php
 $id = 1;
 $post = get_page($id);
 $content = apply_filters('the_content', $post->post_content);
 echo $content;
?>

und Seiten haben eine eigene Vorlage mit the_loop:

<?php query_posts( array( 'category_name' => 'name', 'posts_per_page' => 3 ));
  while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
1
cachaito

Sie scheinen das Datenbankobjekt , das ein Beitrag/eine Seite ist, und das gerenderte Ergebnis , das ein Beitrag/eine Seite ist, zu verwirren. Die in den Tabellen wp_posts und wp_post_meta enthaltenen Daten definieren den Beitrag Objekt . Eine Vorlagendatei definiert die gerenderte Ausgabe , wenn ein bestimmtes Datenbankobjekt abgefragt wird.

Es gibt drei Arten von Abfragen: die Abfrage default, main für einen bestimmten Kontext, secondary von core definierte Abfragen (wie das Navigationsmenü) und custom Abfragen, die an anderer Stelle definiert sind (entweder durch das Theme oder durch ein Plugin).

Die Standardabfrage main für einen bestimmten Kontext wird nie von benutzerdefinierten Abfragen beeinflusst, auch wenn sie geändert werden kann, entweder durch Filtern von pre_get_posts oder durch Verschieben mit query_posts().

Wenn Sie get_page() aufrufen, fragt WordPress den Beitrag object ab, der mit einer bestimmten ID verknüpft ist, nicht die Vorlagendatei , mit der das Objekt im normalen Kontext gerendert wird.

Um es kurz zu machen: Wenn Sie in einem anderen Kontext dieselben benutzerdefinierten Abfragen in jeder Ihrer drei benutzerdefinierten Seitenvorlagen ausführen möchten, müssen Sie denselben Code ausführen, den Sie für diese drei benutzerdefinierten Seitenvorlagen verwenden.

(Außerdem: Bitte sagen Sie, dass Sie die index.php-Datei Ihres Themas nicht für diesen Zweck geändert haben. Auf diese Weise können Sie die Vorlagenhierarchie für Ihr Thema vollständig auflösen.)

Die sauberste Lösung wäre, den benutzerdefinierten Abfragecode in template-part Dateien aufzuteilen, eine für jede benutzerdefinierte Seitenvorlage. vielleicht:

  • loop-three-latest-category-x.php
  • loop-three-latest-category-y.php
  • loop-three-latest-category-z.php

So sieht eine Ihrer benutzerdefinierten Seitenvorlagen aus:

/**
 * Template Name: another page template
 * 
 * Category X custom page template
 * 
 * Used to display the three latest posts in 
 * category x.
 */

get_header();

get_template_part( 'loop-three-latest-category-x' );

get_footer();

Erstellen Sie anschließend eine Vorlagendatei mit dem Namen front-page.php und rufen Sie alle drei Vorlagenteiledateien von oben auf, um alle drei benutzerdefinierte Abfragen auf der Website-Startseite auszugeben:

<?php
/**
 * Front-page template
 * 
 * Used to render the site front page
 */

get_header();

get_template_part( 'loop-three-latest-category-x' );
get_template_part( 'loop-three-latest-category-y' );
get_template_part( 'loop-three-latest-category-z' );

get_footer();
2
Chip Bennett