WordPress CMS – Homeseite gestalten – Praxisbeispiel

mamph hat ein Problem und außerdem trennen uns simple Sprachschwierigkeiten. Da ein Bild im Kommentar gepostet wurde kann ich antworten. Das Problem: Oben soll nur aus der Kategorie mit der ID 1 ein Beitrag stehen und darunter nur die Titeln der anderen Kategorien ohne die Kategorie 1. Dies wird auch oft gebraucht, wenn man aus dem Blog WordPress ein WordPress CMS machen mag. Daher hier eine von vielen Lösungen.

Homeseite gestalten – so soll sie aussehen 
 oben aus einer Kat unten aus den anderen

Dieser Artikel ist lang, weil viele Code darin ist, also langsam lesen und nicht verzweifeln. ;-)
Mamph hat mir seine derzeitige index.php² per Email geschickt. In dieser sah ich, dass die Kommentarfunktion eingebaut ist, daher weiß ich, dass sein WordPress Theme die index.php auch als single.php nutzt, so muss er als erster folgendes machen.

1. Schritt: Aus der index.php wird eine single.php

  1. öffne die index.php mit einem Editor (WordPad) speichere sie als single.php ab.
  2. lade die neue single.php in den Themeordner: wp-content/themes/deintheme.

Nur ein Beitrag aus der Kategorie mit der ID 1

Statt:

<?php if (have_posts()) : ?>
			<?php while (have_posts()) : the_post(); ?>

Sagt man WordPress jetzt: Ich schaffe WordPress was neues an: ( new WP_Query).
Weiter:Liebes nettes WordPress hole mir aus der Kategorie 1 einen einzigen Beitrag. Dies macht man so:

<?php $top_query = new WP_Query('cat=1&showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post();
$do_not_duplicate = $post->ID; ?>

all das was man anzeigen lassen mag
<?php endwhile; ?>

Die überschriften aus all den anderen Kategorien aber nicht die aus der Kategorie 1

Möglichkeit 1: Zeigt einfach 6 Beiträge aus den anderen Kategorien an, ohne die Kategorie 1. Völlig egal,ob mal aus einer der Kategorien ein oder zwei Beiträge da stehen.

<?php  $top_query = new WP_Query('cat=-1showposts=6'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
all das was man anzeigen lassen mag
<?php endwhile; ?>

Möglichkeit 2: Für jede Kategorie einzeln aufrufen, dann hat man ganz sicher immer einen Beitrag aus einer Kategorie.

<?php  $top_query = new WP_Query('cat=2showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
all das was man anzeigen lassen mag
<?php endwhile; ?>

<?php  $top_query = new WP_Query('cat=3showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
all das was man anzeigen lassen mag
<?php endwhile; ?>

<?php  $top_query = new WP_Query('cat=5showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
all das was man anzeigen lassen mag
<?php endwhile; ?>

usw. Ich weiß, dass man dafür auch extra eine Abfrage machen kann. Nur wer Programmierer ist, kann dies sowieso und hat dies Frage nicht. ;)

Wer kein Programmierer ist, nutzt sicher gerne eine Möglichkeit, die er zumindest halbwegs durchblickt. ;)

Jetzt all dies in die index.php einbauen die Gestaltung der Homeseite beginnt.

Nochmal:Vorher die index.php als single.php abspeichern!

Möglichkeit 1 zuerst:

<?php get_header(); ?>
	<div class="main">		
		
		<div class="content">
	
			<?php $top_query = new WP_Query('category=1&showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post();
$do_not_duplicate = $post->ID; ?>
			<div class="post" id="post-<?php the_ID(); ?>">

		<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h1>
		<div class="descr"><?php the_time('F jS, Y') ?> from<?php the_author() ?></div>

		<div class="entry">

		<?php the_content('read more &raquo;'); ?>
	<?php if(function_exists('wp_print')) { print_link(); } ?>
		</div>

		<p class="info"> Category <?php the_category(', ') ?> <strong>|</strong> <?php edit_post_link('edit','','<strong>|</strong>'); ?> <?php comments_popup_link('no com &raquo;', 'one com &raquo;', '% com &raquo;'); ?></p>

		</div>

		<?php endwhile; ?>


<?php  $top_query = new WP_Query('cat=-1showposts=6'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>

<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h3>

<?php endwhile; ?>

		<?php get_sidebar(); ?>	

		<div class="clearer"><span></span></div>

	</div>
<?php get_footer(); ?>
	
</div>

</body>

</html>

Möglichkeit 2 garantiert aus jeder Kategorie außer der ersten eine überschrift:

<?php get_header(); ?>
	<div class="main">		
		
		<div class="content">
	
			<?php $top_query = new WP_Query('category=1&showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post();
$do_not_duplicate = $post->ID; ?>
			<div class="post" id="post-<?php the_ID(); ?>">

		<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h1>
		<div class="descr"><?php the_time('F jS, Y') ?> from<?php the_author() ?></div>

		<div class="entry">

		<?php the_content('read more &raquo;'); ?>
	<?php if(function_exists('wp_print')) { print_link(); } ?>
		</div>

		<p class="info"> Category <?php the_category(', ') ?> <strong>|</strong> <?php edit_post_link('edit','','<strong>|</strong>'); ?> <?php comments_popup_link('no com &raquo;', 'one com &raquo;', '% com &raquo;'); ?></p>

		</div>

		<?php endwhile; ?>


<?php  $top_query = new WP_Query('cat=2showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php endwhile; ?>
<?php  $top_query = new WP_Query('cat=3showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php endwhile; ?>
<?php  $top_query = new WP_Query('cat=5showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php endwhile; ?>
<?php  $top_query = new WP_Query('cat=6showposts=1'); ?>
<?php while($top_query->have_posts()) : $top_query->the_post(); ?>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php endwhile; ?>

		<?php get_sidebar(); ?>	

		<div class="clearer"><span></span></div>

	</div>
<?php get_footer(); ?>
	
</div>

</body>

</html>

Es ist erkennbar, um aus dem Blog WordPress das individuelle CMS WordPress zu machen ist keine Hexerei. Eher eine Spielerei mit den Loop Möglichkeiten.
Ich habe bei diesem Beispiel das HTML nicht kontrolliert oder verbessert, sondern mich nur auf die Anzeige der Kategorien konzentriert.

Damit jeder von Euch sehen kann wie der Ausgangspunkt aussah, hier die Original index.php von mamph.

²

Die Original index.php von mamph

<?php get_header(); ?>
	<div class="main">		
		
		<div class="content">
	
			<?php if (have_posts()) : ?>
			<?php while (have_posts()) : the_post(); ?>
			<div class="post" id="post-<?php the_ID(); ?>">

		<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="link <?php the_title(); ?>"><?php the_title(); ?></a></h1>
		<div class="descr"><?php the_time('F jS, Y') ?> from<?php the_author() ?></div>

		<div class="entry">

		<?php the_content('read more &raquo;'); ?>
	<?php if(function_exists('wp_print')) { print_link(); } ?>
		</div>

		<p class="info"> Category <?php the_category(', ') ?> <strong>|</strong> <?php edit_post_link('edit','','<strong>|</strong>'); ?> <?php comments_popup_link('no com &raquo;', 'one com &raquo;', '% com &raquo;'); ?></p>

		</div>

		<?php comments_template(); ?>

		<?php endwhile; ?>

		<p align="center"><?php next_posts_link('&laquo; vorher') ?> <?php previous_posts_link('next &raquo;') ?></p>

		<?php else : ?>

		<h2 align="center">?sorry baby</h2>

		<p align="center">no page</p>

		<?php endif; ?>
		</div>

		<?php get_sidebar(); ?>
		

		<div class="clearer"><span></span></div>

	</div>
<?php get_footer(); ?>
	
</div>

</body>

</html>

viel Spaß, bei Fragen fragen ;) mein Loop heißt jetzt
31

31 Beiträge zu “WordPress CMS – Homeseite gestalten – Praxisbeispiel

  1. Kommentar Autor
    mamphp
    Kommentar

    danke viel mals
    ich hab es probiert leider functioniert nicht :(
    sol ich mein bisherige index.php noch als single.php speichern alle andren aendrungen in index.php machen? und sngle.php wie das orginal index.php in mein themes speichern?

    Danke

  2. Kommentar Autor
    mamphp
    Kommentar

    danke dass problem ist geloest war CSS fehler.aber ich hab 12 category ich will nur cat (1) oben zeigt aber der zeigt mir aus Cat(4)!?
    und will ich in 2 loop staat nur die titel sondern short story auch zeigt wie oben.?

    Danke

  3. Kommentar Autor
    Monika
    Kommentar

    ist der Artikel aus der Kat 4 auch in der Kat 1?

    und den Auszug

    
    <?php while($top_query->have_posts()) : $top_query->the_post(); ?>
    <h3>...was auch immer da steht </h3>
    
    <p><?php echo  get_the_excerpt();?</p>
    <?php endwhile; ?>
    
    

    ;)

    oder die short story

    statt

    <p><?php echo  get_the_excerpt();?</p>
    <?php the_content('read more &raquo;'); ?>
  4. Kommentar Autor
    mamphp
    Kommentar

    noch gibt zwei fehler.
    1. oben zeigt posten aus Cat(4) staat (1).
    2. wenn man in side bar auf category links klickt passiert nicht die link aendert aber der page bleibt.

    Danke

  5. Kommentar Autor
    Monika
    Kommentar

    hat Dein Theme eine archive.php oder eine category.php?

    wenn nein, öffne die single.php speichere als archive.php und lösche dann

    <?php comments_template(); ?>

    dann:
    wp-content/themes/deinetheme/ hochladen.

    oben: ist der Beitrag auch in der Kategorie 4 abgespeichert?

    lg

  6. Kommentar Autor
    mamphp
    Kommentar

    mach ich das sofort hoffe klapt.

    aber ich will oben nur post von cat 1 zeigt und dort bleibt bis die naechste post aus cat 1 komt. unten wie normals index.php bei wordpress blog die posten veroffentlich werde.

    wenn du mehr erklaerung brauchst dann sag nur :)

    danke

  7. Kommentar Autor
    mamphp
    Kommentar

    hi
    ich wollte dich bedanken in deine website, sagte dein Kommentar ist als
    Spam gestuft :-) .
    ist hat alles geklappt und das wollte ich.

    Danke viel mal

  8. Kommentar Autor
    erfi
    Kommentar

    Hi Monika,

    I dont speak German nor I understand it. But if my guess is right, you’re talking about making wordpress as CMS, is that right? If so, I really like to know the how-to as I’m planning to create a website that based on wordpress.

    Can I get the English translation of this post?

    Thanks in advance :)

  9. Kommentar Autor
    Monika
    Kommentar

    Hi erfi
    if you would like to use wordpress as cms I’m sure you need an indivuall homepage. „Here two posts from category 1 ..there three posts from other categories without category1 .. and so on. Or you would like to have columns on frontpage..“

    Would you like to read this loop examples or would you like to read an overview :What are „must haves“ to use wordpress as cms and what are goodies .. and so on.

    And you read and see I can write english but my knowledge about your language isn’t the best ;)

    regards
    Monika

  10. Kommentar Autor
    erfi
    Kommentar

    That’s right, I need one page for each category to displays its posts and on the sidebar will list all available post of that category.

    I’m planning to put the latest articles (its excerption) from different categories in the frontpage. Currently I have no clue on how to do this with WordPress.

    So, I would love to read both the overview and the loop example if you dont mind :D

    Btw just like you, english is not my native language as well. I’m Indonesian ;)

    Thanks Monika for the quick reply :)

  11. Kommentar Autor
    Monika
    Kommentar

    Hi erfi
    „I need one page for each category to displays its posts …“

    WordPress does this per default.

    „… on the sidebar will list all available post of that category.“

    Both the same – why?

    „I’m planning to put the latest articles (its excerption) from different categories in the frontpage. “

    In different boxes?

    language:

    I’m from Austria /Europe. Indonesian and Austria enter wordpress as cms in english. :-)

    But I need time – four or five days -ok.

    regards
    Monika

  12. Kommentar Autor
    erfi
    Kommentar

    Wow, thanks Monika :)

    btw, can I have your email address so I can explain what I mean by displaying available post for the sidebar with pictures? As I have created the layout by photoshop and it’s easier explaining things by pictures :D

    regards
    erfi

  13. Kommentar Autor
    mamphp
    Kommentar

    klingt interessant wenn fertig ist kannst die tutorial hier veröffentlichen?
    ob das möglich ist..?

    Danke

  14. Kommentar Autor
    Sven Weitz
    Kommentar

    Monika,

    ich habe auf euren Seiten schon einige hilfreiche Tipps und Anregungen im Umgang mit WP als CMS gefunden. Danke dafür.

    Nun habe ich aber ein difiziles Problem: Ich möchte gerne eine Art statischen Beitrag innehalb einer Artikelkategorie anbringen.

    Beim Klick auf die Kategorie werden alle Beiträge der Kategorie angezeigt und oberhalb davon steht ein einführender Text.

    Hast du oder jemand anderes eine Idee?

    ~Sven

  15. Kommentar Autor
    Monika
    Kommentar

    Hi Sven
    wenn es pro Kategorie ein anderer Text sein soll, dann nutze die category description. Oder brauchst Du dort weniger Zeilen, weil Du die schon benutzt.

    Reicht Dir das nicht, dann gibts da noch das Sticky post pro Kategorie.

    lg

  16. Kommentar Autor
    Sven Weitz
    Kommentar

    Hallo Monika,

    wow, vielen Dank, ich bin begeistert! Ich hatte hier auch schon danach gesucht, aber vor lauter Bäumen scheinbar den Wald nicht gesehen.

    ~Sven

  17. Kommentar Autor
    EgloMann
    Kommentar

    hi
    ich habe mir überlegt dass ich in index.php ober drei Button habenz.B (English, Persisch, Turkish) wenn man auf eine von dennen klickt index.php auf diese sprache zeigen. natürlich hab auch gedach Category 1,2,3 für english und 4,5,6 für persich und 7,8,9 für Turkisch erstellen zuerst.
    obe das möglich ist?

    Danke

  18. Kommentar Autor
    Monika
    Kommentar

    Hallo EgloMann

    Du magst ja auch, dass Dein Blog in den Suchmaschinen gefunden wird.
    Daher folgende Lösung:

    Du zeigst auf der Index.php aus Category 1,2,3 je einen Beitrag an,
    ebenso aus Category 4,5,6 und dann aus Category 7,8,9

    Machst eine überschrift: News in English , News in Türkisch etc.

    Dann setzt Du html Anker.
    Klickt jetzt wer auf English springt er zu den drei Beiträgen in Englisch, Klickt wer auf Türkisch dann dorthin.

    HTML Anker findest Du in selfhtml.
    Hilft das ?

    lg

  19. Kommentar Autor
    EgloMann
    Kommentar

    danke
    ehrlich gesagt das kennte ich schon. sondern ich will z.B drei index.php haben.ein en(orginal index.php) und ein pe und ein tu. wenn mann obenn andere button klick ganze site zu diese sprache wechselt.

    oder haben sia Andere meinung?

  20. Kommentar Autor
    Monika
    Kommentar

    EgloMann dann mache drei Blogs…

    ein englisches ein türkisches ein persisches,

    englisch ist das erste,
    türkisches ist im Ordner domain.tld/tu persisches domain.tld/per

    und dann linke dorthin,

    weil die Texte muss man sowieso eigens tippen

    alles andere ist gepfuscht, nicht professionell

    lg

  21. Kommentar Autor
    Egloman
    Kommentar

    wenn man in index.php nicht posten aus cat1,2,3 sehen will dann macht so:

    have_posts()) : $top_query->the_post(); ?>
    all das was man anzeigen lassen mag
    

    so ist das richtig ?

  22. Kommentar Autor
    Henri
    Kommentar

    Hallo,

    folgende Frage habe ich mal. Wie macht man dass, dass der erste Beitrag ganz normal angezeigt wird, aber die anderen Beiträge in einem anderen Layout innerhalb der Seite gezeigt werden, aber dann beginnend bei dem zweiten Beitrag?

    lg und vielen Dank im Voraus!

  23. Kommentar Autor
    Henri
    Kommentar

    Dann sag ich mal vielen Dank!!! Klasse, klappt sehr gut! Danke. =)

  24. Kommentar Autor
    Frau Braun
    Kommentar

    Hallo, Monika, das ist mal wieder ein guter Tip, danke. Ich habe auch noch diese Scheibweise für Kategorieabfragen gefunden:

    Keine News vorhanden!

    Für mich ist die Frage aus dem ersten Kommentar noch nicht beantwortet: Was steht jetzt wo? Stehen die Angeben der alten index.php jetzt in der single.php? Dann ruft diese jetzt unter Umständen mehr als einen Beitrag auf, je nachdem wie die ursprüngliche index.php (jetzt single.php) gecodet war, oder? Und die neue index.php sorgt jetzt dafür, dass standardmäßig immer diese Kategorieabfrage gestartet wird, es sei denn man gibt für jede neue Seite ein anderes Template an? Oder ist es genau umgekehrt? Die alte index.php bleibt und liefert wie bisher für alle Seiten die Grundlage, während die Startseite auf die single.php zugreift?

    Ist es nicht sinnvoll, diese ganzen neuen Angaben in die home.php zu schreiben?

    Fragt ganz blöd
    Frau Braun

  25. Kommentar Autor
    Frau Braun
    Kommentar

    Oh, das mit dem Code posten hat nicht geklappt…

    ?php query_posts(‚category_name=News&showposts=1‘); ?

    Und so weiter.

  26. Kommentar Autor
    Monika
    Kommentar

    Hallo Frau Braun

    man speichert die Original index.php als single.php ab, nicht die danach modifizierte und dies ja auch nur, weil der ursprüngliche Frager noch gar keine single.php in seinem Theme hatte,

    ob man dies alles in die home.php gibt oder in die index.php oder in eine statische Seite und die als Startseite wählt, hängt vom Gesamtkonzept ab und meist auch wie man das System am ehesten durchblickt ;)

    lg

  27. Kommentar Autor
    karlkoch
    Kommentar

    Hi!

    Ich hab eine kleine Frage zu dem Code, ich bekomme es nicht hin die Posts eine bestimmter Kategorien (10-13) nur als überschrift und den rest als Full post anzuzeigen. Jemand einen tip wie es gehen könnte?
    Kategorien 10-13 habe ich schon erfolgreich aus dem Feed verbannt.

    Gruß und Dank, kk

  28. Kommentar Autor
    Monika
    Kommentar

    hi karlkoch

    da brauch ich ein wenig mehr input – die Artikel aus diesen beiden Kategorien oder mehr Kategorien extra wo als Überschrift und wiederum woanders die anderen Kategorien?

    lg