• Guten Tag,

    ich hoffe ich bin hier richtig.

    Ich baue gerade ein Theme, hab allerdings nicht das beste php Wissen und auch nicht das beste WordPress Wissen. Probiere aber mir das ganze anzueignen.

    Ich habe mir eine categorie Seite zusammengebaut die nur kategorien der ID21 zeigt. Meine beiden dateien sehen wie folgt aus:

    Die news.php

    <?php
    /*
    Template Name: News Blog
    */
    ?>
    
    <?php get_header(); ?>
    <div id="vis-newspage" class="vis-newspage">
       <div id="vis-news">
            <?php if (is_home()) {
    
    		}
    		else {include "news_posts.php";}?>
        </div>
        <div class="vis-clear"></div>
     </div>
     <div class="vis-clear"></div>
    <?php get_footer(); ?>

    die news_posts.php

    <?php
    global $more;
    $more = 0;
    ?>
    
    <?php
    	$my_query = new WP_Query();
    	$my_query->query('cat=21&showposts=2&orderby=date');
    	if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();
    	$myPosts .= $post->ID . ",";
    ?>
    
    <div class="vis-newscont">
    	<div class="vis-newsimg">
    		<?php if (has_post_thumbnail()) {the_post_thumbnail();} ?>
    	</div>
    
    	<div class="vis-newsh1">
    		<h2><a class="h2" id="post-<?php the_ID(); ?>" class="vis-newsheadline" href="<?php the_permalink() ?>" rel="bookmark" title=" <?php the_title(); ?>">
    		<?php the_title(); ?></a></h2>
    		<h4><span class="time"><?php the_time('h:i') ?></span><span class="date"><?php the_time('d.F.y') ?></span><span class="author"><?php the_author() ?></span><span class="comments last"><?php comments_popup_link('0 Kommentare','1 Kommentar','% Kommentare','','Kommentare geschlossen');?><span></h4>
    	</div>
    
    	<div class="vis-newstxt">
    		<?php the_excerpt(); ?>
    	</div>
    
    	<div class="vis-newscom"><hr class="vis-newsbottom"/></div>
    
    	<div class="vis-newsfin"></div>
    </div>
       <?php endwhile; ?>
    <div class="navigation">
    			<div class="alignleft"><?php next_posts_link('&laquo; Older Entries') ?></div>
    			<div class="alignright"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
    		</div>
       <?php endif; ?>

    Meine Frage:

    Ich möchte gerne das Besucher die seiten wechseln können, sprich neuere und ätere beiträge angezeigt werden, also eine Seitenzahl.
    Auf der Seite selber sind immer 2 Beiträge.

    Wie kann ich das realisieren?

Ansicht von 2 Antworten – 1 bis 2 (von insgesamt 2)
  • Hm, ich würde aus verschiedenen Gründen etwas anders vorgehen.

    Zum einen … ist Dir der Begriff Template-Hierarchy bekannt? Kurz gefasst: Ruft ein Website-Besucher eine bestimmte Website auf, prüft WordPress, um welchen Inhalt es sich handelt und verwendet das am besten geeignet Template (z.B. archive.php für Archive, single.php für eine einzelne Seite, etc.) und fällt auf allgemeinere Templates zurück, bis es als letzte Instanz die index.php verwendet. Die möglichen Varianten werden in dieser Grafik hübsch dargestellt.

    Für die Darstellung von Kategorien dürfte in den meisten Themes category.php oder das allgemeinere archive.php verwendet werden. Möchte man hingegen die Kategorie 21 anders dargestellt haben, als dies üblicherweise der Fall ist, könnte man ein Template category-21.php erstellen. Diese Lösung entspricht aber nicht der Regel „Don’t repeat yourself“, wenn (zu einem späteren Zeitpunkt?) weitere Kategorien hinzukommen.

    Ein Template innerhalb der Template Hierarchie zu verwenden hat den Vorteil, dass die bereits vor Aufruf des Templates abgefragten Daten nicht verworfen und (wie in deinem Code-Beispiel) erneut abgefragt werden müssen. Kurz: Man kann direkt die Loop einsetzen – ohne weiteres new WP_Query()!

    Ein Template news.php ist in der Template Hierarchie nicht vorgesehen, ist also ein custom Template, dass manuell einer Seite zugewiesen werden muss. Wieso dann aber die Abfrage is_home()? Sollen damit bereits Anwenderfehler ausgeschlossen werden?

    Möchtest Du die Abfrage einer bestimmten Kategorie an verschiedenen Plätzen ermöglichen (in der Seitenleiste, auf der Seite „News“, …), wäre es vielleicht besser, die Abfrage in eine eigene Funktion zu packen, die Du dann zu einem eigenen Shortcode hinzufügst.

    Bei der Einbindung von Template-Teilen fällt mir auf, dass Du include() verwendest. Das ist mit Blick auf Child Themes nicht ratsam; besser wäre die Verwendung von get_template_part().

    Möchtest Du bei einer Abfrage Seitenzahlen verwenden, musst Du der Abfrage den Wert der Variablen $paged mitgeben. Das wird hier ganz gut beschrieben.

    Thread-Starter justpna

    (@justpna)

    Ok Danke! Ich werde mich mal morgen durch die ganze Materie lesen. Habe gerade erstmal die normale catergoy.php erstellt und es läuft soweit ganz gut. Ich probiere eine Seite für Sportteams zu erstellen, insgesamt gibt es da leider wenig Möglichkeiten wirklich effektiv das ganze dann auch im Backend zu managen.

    So benutze ich gerade die category.php für die Teams-Anischt und für eine optisch andere Newsansicht. Ich guck mir mal morgen deine Links an, möglicherweise bieten diese ja etwas andere möglichkeiten, sowas in die Hand zu nehmen.

    Gruß

Ansicht von 2 Antworten – 1 bis 2 (von insgesamt 2)
  • Das Thema „Categorie Seite neue posts bzw. ältere posts“ ist für neue Antworten geschlossen.