WordPress als CMS: Kapitel eines Buches als Printausgabe anbieten – alle Beiträge auf einer statischen Seite

[]

Alle Beiträge auf einer statischen Seite anzeigen braucht man oft, wenn man WP als CMS einsetzt. Entweder, um diese Posts als Printausgabe anzubieten oder weil man ganz was anderes damit gestalten mag. Wie auch immer. Beiträge auf der statischen Seite kann man anzeigen lassen. Sowohl als ganzen Beitrag oder nur bis zum more oder als excerpt oder mit einem benutzerdefiniertem Feld

WP CMS komplexe Projekte
WP CMS einfache Lösungen für komplexe Projekte

Jede Menge Anfragen gibt es derzeit im Supportforum, ob man und wenn wie Beiträge auf einer statischen Seite anzeigen lassen kann. Der eine braucht alle Beiträge /Posts , weil er für ein Buch eine einfache Printausgabe anbieten mag.

Der andere brauchte eine Auflistung von Reiseberichten nach benutzerdefinierten Feldern, der dritte mag – aus welchem Grund auch immer alle Beiträge anhand eines benutzerdefinierten Feldes – aber die ganzen Beiträge nicht nur den Auszug.

Der vierte mag alle Beiträge auf der statischen Seite anzeigen lassen, aber nur bis zum “more” – also bis zum “weiterlesen. Mancher braucht einfach alle Beiträge, andere wiederum nur von bestimmten Kategorien.

»» Article in English.

Wie immer:Code nicht einfach kopieren, kann sein, dass es dann nicht funktioniert. Ich zeige hier nur meine Lösung, vielleicht gibt es andere. Code kann weder in meinen Kommentaren noch per Email gesandt werden.

»» War dieser Beitrag für Dich hilfreich freu ich mich über einen Link oder ein Bookmark bei Mr.Wong, Yigg.de oder einem anderen Social Dienst.

Wer WordPress als CMS nutzt braucht oft statische Seiten mit einer Auflistung von Beiträgen aus dem normalen Loop. Mag man nur die Links zu den Beiträgen haben, dann ist dies leicht möglich (meine Sitemap hier ) braucht man jedoch den ganzen Inhalt oder nur den Inhalt bis zum “Weiterlesen” also dem “More” wird es nicht mehr so einfach.

Ob man dann die Beiträge nach einem benutzerdefinierten Feld aus der Datenbank holt oder nur von einer oder mehreren Kategorien ist dann fast Nebensache.

Alle Beiträge auf einer statischen Seite aufgelistet. Ganzer Inhalt. Zeitliche Ordnung umgedreht.

<?php
/*
Template Name: Alles
*/
?>

<?php get_header(); ?>

<?php rewind_posts();


	$my_query = new WP_Query('order=asc&showposts=500');
         while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;
 ?>

<div class="post" id="post-<?php the_ID(); ?>">
				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title=" <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

				<div class="entry">
					<?php global $more; $more = 1; the_content('Read the rest of this entry &raquo;'); ?>
				</div>

				
			</div>


 <?php endwhile; wp_reset_query();?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Erklärung:


<?php
/*
Template Name: Alles
*/
?>

<?php get_header(); ?>

Liebes WordPress mein Template heißt: Alles.

Admincenter==>Schreiben==>Seite schreiben==>Titel vergeben==>Rechts das Template “Alles” aussuchen.


<?php rewind_posts();

Liebes WordPress fang von Vorne an und durchsuche die Datenbank neu.

Vielleicht gar nicht nötig, aber vielleicht steht oberhalb ein anderer Loop in Deinem Template, dann braucht man dies.


global $more;
$more = 1;

Liebes WordPress irgendwo steht in einigen oder allen Beiträgen der more template tag, ignoriere den und zeige den ganzen Beitrag.


$my_query = new WP_Query('order=asc&showposts=500');
         while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; ?>

Liebes WordPress das ist mein individueller Loop. Ordne die Beiträge Absteigend also “asc” und zeige mir 500.

Klar wird man kaum 500 Beiträge auf einer statischen Seite anzeigen lassen, das ist ja irre zu lesen. Aber eventuell hast Du eingestellt, dass WordPress nur 10 pro Seite anzeigen darf. Dann ist dies ganz gut, damit mehr als 10 erscheinen oder eben alle . Ein bisschen Tricky, aber mir erschien es am einfachsten.

Jetzt kommt dann die Ausgabe. Achte darauf, dass dort *Dein* Html steht und darunter das Ende des Loops.

<?php endwhile; ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Liebes WordPress jetzt höre auf- endwhile- und hole die Sidebar und den Footer.

Anschauen:In der Mitte auf meiner Testseite. Ich zeige allerdings weniger Beiträge als 500 an, ist mir zu heavy-nur so als Beispiel doppelten Content zu riskieren.

Alle Beiträge aus der Kategorie [mit der ID=25] auf einer statischen Seite. Zeitliche Ordnung wie immer. Aber nur bis zum “Weiterlesen”…


<?php
/*
Template Name: Egoshooting
*/
?>

<?php get_header(); ?>

<?php rewind_posts();


	$my_query = new WP_Query('cat=25&showposts=500');
         while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;
?>

<div class="post" id="post-<?php the_ID(); ?>">
				<h2><a href="<?php the_permalink() ?>" rel="bookmark" title=" <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

				<div class="entry">
					<?php global $more; $more = 0;  the_content('Read the rest of this entry &raquo;'); ?>
				</div>

				
			</div>


 <?php endwhile; ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Erklärung:

Prinzipiell steht es oben hier nur die Änderungen:

global $more;
$more = 0;

statt 1 auf 0

Angabe der Kategorie mit cat und dann die ID der Kategorie, mehrere Kategorien IDs mit Komata trennen.

$my_query = new WP_Query('cat=25&showposts=500');

Anschauen: Ganz ganz unten auf meiner Testseite. Ich zeige nur einen Beitrag, man sieht aber, dass der *weiterlesen* Link da ist.

wenn dieser Artikel für Dich hilfreich war freue ich mich wirklich über ein Bookmark oder einen Link.

Ich bin Buch-Autorin, WordPress-Fachfrau, Beraterin für SEO und online Marketing; Lösungen lieb ich genauso wie html5 und css3.
Außerdem bin ich WordPress Enthusiastin, bevorzuge Espresso und gute Schokolade,
Mit WordPress ist fast alles möglich, aber nicht immer sinnvoll. Dies pro Projekt herauszuarbeiten, das ist meine Passion.


27 Gedanken zu “WordPress als CMS: Kapitel eines Buches als Printausgabe anbieten – alle Beiträge auf einer statischen Seite”

  1. hiho,
    vielen dank, sehr hilfreich :)
    kannst du auf die schnelle erklären, wie ich den aktuellsten beitrag als erstes anzeige?

  2. Hi martin ja kann ich

    den code zweimal tippseln
    aber einmal..ganz oben..

    $my_query = new WP_Query('cat=25&showposts=1&order=DESC');..
    

    das zweite mal

    $my_query = new WP_Query('cat=25&showposts=500&offset=1');
    

    also das 1. Mal nur einen Beitrag anzeigen lassen und zwar in zeitlich Reihenfolge absteigend (DESC)

    das 2. Mal alle anzeigen lassen -den 1. offset=1)

    ungetestet aber müßte funktionieren

    lg

  3. vielen dank, aber ich müsste nochmal nachhacken:
    wenn ich dies für mehr als ein seite machen will, sprich mehrere statische seiten habe, dann müsste ich ja jeder seite ein eigenes template zuordnen, oder?! wie kann ich das aber steuern?

    wäre für hilfe überschwänglichst dankbar …

  4. hi Du kannst es steuern indem Du dem Template dann oben einen anderen Namen gibst und dieses neue Template beim Seiten schreiben rechts für diese neue statische Seite auswählst

    lg

  5. sorry, ich bin ganz neu mit wordpress unterwegs. deswegen verstehe ich das nicht so ganz. muss ich dann für jede statische seite eine eigens template anlegen?

  6. sorry unklar ausgedrückt: brauch ich für jede statische seite eine eigene php datei?

  7. jetzt bin ich schon als spammer eingestuft …
    lösch doch bitte das von mir verursachte chaos … hi hi … ich hab mir einfach für jede statische seite eine php datei angelegt usw.
    ist also weitgehend geklärt.
    ich wollte es nur irgendwie geschickter über ne abfrage machen, is aber auch egal. vielen dank trotzdem :)

  8. hi martin ich musste das *Chaos* zuerst genehmigen, sonst meint SpamKarma2 wirklich Du bist ein Spammer,

    weißt klar geht es über Abfragen- doch-
    ich habe auch für vieles ein eigenes template-ich behalt so einfach besser den überblick- meine Tutorial Seite -also die mit den über 100 Links hat an die 12templates oder so..

    ;)

    lg

  9. Hallo!

    Ich habe das zweite Code-Beispiel ausprobiert, allerdings werden die Beiträge bei mir mittig platziert, was natürlich nicht so gut zu lesen ist. Wie kann ich denn WordPress vorschreiben das der Text definitiv linksbündig ausgerichtet ist?

    Ansonsten super Tipp,
    Danke!

  10. Hi Rene

    Du hast da sicher eine css class bei dem div, das den Twext umgibt und dieser class gibst du in der style.css

    .wasweißich {text-align:left;}#
    [/php]
    
    
    wasweißich mit dem Namen ersetzen, den die css class dort hat ;) 
    
    
    lg
  11. Hallo! wirklich interessanter Beitrag!
    Vielleicht hast Du ja noch eine spontane Eingebung für folgende Problematik: in der index.php schließe ich mit:
    “” die Kategorie 3 aus (um sie in einer statischen Seite zu zeigen). Was auch funktioniert, nur listet “Home” bei mehr als 10 Beiträgen, dann auf der Seite “nächste Einträge” nicht den theoretisch folgenden Eintrag, sondern fängt wieder mit dem zuletzt veröffentlichten an. Die Chronologie der Einträge geht also nicht mehr. Verdammt, das ist wirklich kompliziert beschrieben, aber vielleicht weißt Du ja, was ich meine und zusätzlich noch Rat… Danke und beste Grüße!

  12. ja ich kenne das Tim, suche am besten im deutschen WordPress Forum nach *page is paged* da gibts einige Lösungen dazu

    lg

  13. Vielen Dank! im englischen Forum bin ich fündig geworden und jetzt geht es wieder…
    lg

  14. Vielen Dank für den interessanten Beitrag!
    Gibt es eine Möglichkeit, einen x-beliebigen Post der Kategory Y (z.B. aus einer Postliste in der Sidebar) nicht über die single.php sondern über die Category-Page “Y” anzeigen zu lassen, damit z.B. in der Navigation auch die Schaltfläche zu dieser Category-Page richtig gehighlighted wird?

  15. ah…also Beitrag X ist offen in seiner ganzen Ansicht und die dazugehörige Cat soll hervorgehoben sein … habe ich das richtig verstanden?

    lg

  16. Hallo, liebes Texto-Team!
    Ich habe den Beitrag über forum.wordpress-deutschland gefunden (forum.wordpress-deutschland.org/konfiguration/38539-wordpress-als-cms-blog.html) und es funktioniert alles fast perfekt, dafür möchte ich mich bedanken!

    Es gibt bei mir (WordPress 2.6) ein kleines Problem –

    
    	<?php rewind_posts();
    global $more;
    $more = 0;
    	$my_query = new WP_Query('order=asc&showposts=500');
             while ($my_query->have_posts()) : $my_query->the_post();
    $do_not_duplicate = $post->ID; ?>
    
    <div class="post" id="post-<?php the_ID(); ?>">
    				<h2>" rel="bookmark" title=" <?php the_title_attribute(); ?>"><?php the_title(); ?></h2>
    				<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
    				<div class="entry">
    					<?php the_content('Read the rest of this entry &raquo;'); ?>
    				</div>				
    			</div>
    <?php endwhile; ?>
    
    

    Das mit dem “nur bis zum Weiterlesen” funktioniert bei mir in einer statischen Seite nicht – es werden die ganzen Texte ausgegeben. Hat sich vielleicht etwas verändert? Gibt es etwas neues oder ein Fehler in diesem Code? Danke!

  17. Wollte noch hinzufügen, also da, wo bei mir im Artikel

    <!--more-->
    

    steht, entsteht dann doch folgendes:

    [/php] oder

    [/php] aber kein Link zu dem Artikel. Und der Artikel selbst wird nicht "getrennt" sondern vollkommen angezeigt! Vielen Dank im Voraus!
  18. Hi Vitaliy
    So ist es besser, wenn der Artikel mittels more gekürzt sein sollte

    <?php rewind_posts();
    
    	$my_query = new WP_Query('order=asc&showposts=500');
             while ($my_query->have_posts()) : $my_query->the_post();
    $do_not_duplicate = $post->ID;
    global $more;
    $more = 0; ?>
    
  19. Bin sprachlos.. Vielen Dank!!! :) Nun versuche ich zu verstehen warum es so funktioniert. Liegt wohl an WP selbst

  20. Hallo, Monika, ich hätte noch eine Frage. Ich hab wirklich viel hier auf texto und überhaupt gesucht, aber keine Lösung gefunden.
    Das hier:

    “Klar wird man kaum 500 Beiträge auf einer statischen Seite anzeigen lassen, das ist ja irre zu lesen. Aber eventuell hast Du eingestellt, dass WordPress nur 10 pro Seite anzeigen darf.”

    scheint bei mir nicht zu funktionieren, es werden also alle Beiträge ausgegeben. Kennst du vielleicht eine Lösung wie ich doch 10 auf einer Seite anzeigen kann und dann mit Hilfe von sowas wie next_post_link(); die anderen?
    Ich habe auch die Möglichkeit nicht gefunden, hier

    
    new WP_Query('order=asc&showposts=500');
    

    anstatt von 500 alle auszugeben. Kann man in WP irgendwie herausfinden wie viele Artikel es überhaupt gibt? Dann könnte man vielleicht in einer Schleife jeweils die gesamte Anzahl / 10 gleich Seiten erstellen usw.

    Kennst du vielleicht die Lösung? Danke!

  21. Hi Vitaly
    Weiterblättern und eigener Loop

    habe es in einem Artikel erklärt. So ist es hier ein wenig *aufgeräumter* ;)

    lg

  22. hi danke für dein Code !!! Ich habe mal für meinen Blog folgende Seite eingerichtet:

    und wie man sieht, hab ich ein “Darstellungsproblem” .
    Kannst du mir vielleicht ein tip geben, wie ich das anpasse damit das in die seite passt?

    LG
    Anja

  23. Hi Anja

    http://validator.w3.org/
    lass da mal diese Seite durch . Du hast wo h1news stehen
    ich nehm an, dies sollt heißen h1 class=news mit den Anführungszeichen logischerweise

    bloß ich bin ehrlich soviele h1 sind sinnlos, ;) 1x h1 pro Seite –Google kennt das und wertet es als sicher sehr spamig, ;)

    lg und vielFreud mit dem Projekt

  24. oh danke ! ja ich hab einfach die h1 kopiert und diese in h1news umbenannt ohne Bezug das alles h1 ist. Aber gute idee! Ich werde das gleich mal umbennen!

    Jetzt hab ich aber das Problem, dass die Liste im Internet Explorer falsch und im Firefox richtig dargestellt wird!

    LG und Danke !!

  25. das problem lag am align=”left” im tabellenkopf^^

    jetzt bin ich zufrieden.