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

WP CMS 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.
27

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

  1. Kommentar Autor
    martin
    Kommentar
    http://0.gravatar.com/avatar/24e28ff3f021f900790a0e3684c66e1c?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

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

  2. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    martin
    Kommentar
    http://0.gravatar.com/avatar/24e28ff3f021f900790a0e3684c66e1c?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    martin
    Kommentar
    http://0.gravatar.com/avatar/24e28ff3f021f900790a0e3684c66e1c?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    martin
    Kommentar
    http://0.gravatar.com/avatar/24e28ff3f021f900790a0e3684c66e1c?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

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

  7. Kommentar Autor
    martin
    Kommentar
    http://0.gravatar.com/avatar/24e28ff3f021f900790a0e3684c66e1c?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Rene
    Kommentar
    http://1.gravatar.com/avatar/565ee3ee4d3387a63d337adf01caed15?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Tim
    Kommentar
    http://0.gravatar.com/avatar/aedec2985865ee79098304f9b0a04d36?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

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

    lg

  13. Kommentar Autor
    Tim
    Kommentar
    http://0.gravatar.com/avatar/aedec2985865ee79098304f9b0a04d36?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

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

  14. Kommentar Autor
    Oli
    Kommentar
    http://0.gravatar.com/avatar/e275c2fa9ceb4f19e0c097766d48a6e1?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Vitaliy, Köln
    Kommentar
    http://0.gravatar.com/avatar/4b59637928d7f6106d8603735b7562a2?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Vitaliy, Köln
    Kommentar
    http://0.gravatar.com/avatar/4b59637928d7f6106d8603735b7562a2?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Vitaliy, Köln
    Kommentar
    http://0.gravatar.com/avatar/4b59637928d7f6106d8603735b7562a2?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    Bin sprachlos.. Vielen Dank!!! :) Nun versuche ich zu verstehen warum es so funktioniert. Liegt wohl an WP selbst

  20. Kommentar Autor
    Vitaliy, Köln
    Kommentar
    http://0.gravatar.com/avatar/4b59637928d7f6106d8603735b7562a2?s=80&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    Hi Vitaly
    Weiterblättern und eigener Loop

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

    lg

  22. Kommentar Autor
    Anja
    Kommentar
    http://1.gravatar.com/avatar/d8c3c01e92a09bb0cc971525c962715e?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Monika
    Kommentar
    http://1.gravatar.com/avatar/518f2a0fb595224fa459177d9e7c786b?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Anja
    Kommentar
    http://1.gravatar.com/avatar/d8c3c01e92a09bb0cc971525c962715e?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

    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. Kommentar Autor
    Anja
    Kommentar
    http://1.gravatar.com/avatar/d8c3c01e92a09bb0cc971525c962715e?s=80&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D80&r=G

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

    jetzt bin ich zufrieden.