Hallo zusammen,
ich habe mich hier angemeldet, da ich an einem Problem angelangt bin, dass ich nach tagelangem auprobieren von duzenden verschiedenen Codes nicht lösen konnte. Ich habe erst vor einigen Wochen angefangen mich mit Wordpress zu beschäftigen, nachdem kein Theme das konnte, was ich wollte, habe ich komplett bei null angefangen. Ich habe keine Ahnung von PHP und ich finde es recht schwierig etwas zu finden, wenn man nicht weiß wonach man suchen muss. Zusätzlich verwirren mich zahllose unterschiedliche Schreibweisen, die offenbar manchmal nicht kompatibel sind. Naja, evtl kann mir ja jemand helfen.
Folgendes habe ich vor: Ich habe 3 Hauptkategorien und etliche Unterkategorien. Ich möchte aber nicht etliche Templates, sondern nur die index.php für alles nutzen. Ich habe 3 Loops. Der erste soll für jeden Kategorie einen Post zeigen, den ich für "Zitate" nutze, eine Art featured-Artikel ganze oben. Der zweite Loop zeigt Artikel die über die volle breite der Seite gehen. Danach im dritten Loop sollen Artikel in zwei Spalten gezeigt werden. Die Unterscheidung der Post erfolgt über Custon-Fields. Das Anordnen und das Design sind kein Problem. Die Technik streikt aber. Ich zeige mal verschiede Ansatzpunkte auf, die den Ergebnis am nähesten kommen.
Eigentlich geht hier alles auch die Pagination, aber die Kategorien funktionieren nicht mehr. Und ich möchte nicht für jede cat ein Template bauen.
<!-- LOOP 1 - QUOTE Anzeige 1 Post -->
<?php
$var_do_not_duplicate = array();
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts( array(
'meta_key' => artikeltyp,
'meta_value' => quote,
'showposts' => 1,
'orderby' => date,
'order' => ASC,
'paged' => $paged
) );
if (have_posts()) : while ( have_posts() ) : the_post(); array_push($var_do_not_duplicate, $post->ID); ?>
<!-- Quote Post -->
<?php ?>
<?php endwhile; ?>
<?php else : ?>
<p>Not Found</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<div id="container">
<?php get_sidebar(); ?>
<div id="main">
<!-- LOOP 2 - WIDE Post -->
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts( array(
'post__not_in' => $var_do_not_duplicate,
'meta_key' => artikeltyp,
'meta_value' => wide,
'showposts' => 5,
'paged' => $paged
) );
if (have_posts()) : while ( have_posts() ) : the_post(); array_push($var_do_not_duplicate, $post->ID); ?>
<!-- BREITE POSTS -->
<?php ?>
<?php endwhile; ?>
<?php else : ?>
<p>Not Found</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts( array(
'post__not_in' => $var_do_not_duplicate,
'showposts' => 4,
'paged' => $paged
) );
if (have_posts()) : while ( have_posts() ) : the_post(); array_push($var_do_not_duplicate, $post->ID); ?>
<?php if ( get_post_meta($post->ID,'artikeltyp', true) == 'wide' || get_post_meta($post->ID,'artikeltyp', true) == 'quote' ) : ?>
<?php else : ?>
<!-- Restliche Posts -->
<?php endif; ?>
<?php ?>
<?php endwhile; ?>
<?php getpagenavi(); ?>
<?php else : ?>
<p>Not Found</p>
<?php endif; ?>
<?php wp_reset_query(); ?>
</div><!-- /main -->
</div><!-- /container -->
Alles anzeigen
Hier habe ich mit dem Query Objekt gearbeitet. Welches wohl alle Parameter beibehält, habe ich gelesen :-) Die Kategorien funktionieren super. Nur die Pagination ist hinüber. Ab Seite 2 wird nichts angezeigt. Schwierigkeiten machte es mir auch die Anzahl der Artikel in den Einstellungen festzulegen und die Angaben im Code überein zu bringen.
Hierbei habe ich außerdem einen Counter eingebaut. Es sollen immer (wenn verfügbar) 6 breite Artikel angezigt werden. Sind es nur 5, dann haben unten noch 2 kleine Artikel Platz. Sind es 4 große dann passen noch 4 kleine hin usw. usw. Die Schreibweise könnte man sicherlich noch optimieren, aber ich war erstmal froh dass es funktioniert.
Beim letzten Loop nicht über die Schreibweise wundern, ich habe keine andere Möglichkeit gefunden die Artikeltypen "Quote" und "Wide" auszuschließen.
<!-- LOOP 1 - QUOTE Anzeige 1 Post -->
<?php
$my_query = new WP_Query($query_string . 'meta_key=artikeltyp&meta_compare==&meta_value=quote&posts_per_page=1&paged='.!$paged);
if ( $my_query->have_posts() ) :
while ( $my_query->have_posts() ) : $my_query->the_post();
?>
<!-- Quote Post -->
<?php endwhile; else: ?>
<p><?php _e('KEINE ZITATE'); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<div id="container">
<?php get_sidebar(); ?>
<div id="main">
<!-- LOOP 2 - WIDE Anzeige Post -->
<?php $my_query = new WP_Query($query_string . 'meta_key=artikeltyp&meta_compare==&meta_value=wide&paged='.$paged); ?>
<?php if ( $my_query->have_posts() ) : ?>
breite ARTIKEL
<?php $counter = 1; while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
<!-- Breite Artikel -->
<?php $counter++; endwhile; $counter--; else: ?>
<p><?php _e('KEINE breiten ARTIKEL.'); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php if ( $counter == 6 ) : ?>
<?php $counter2 = 0; ?>
<?php endif; ?>
<?php if ( $counter == 5 ) : ?>
<?php $counter2 = 2; ?>
<?php endif; ?>
<?php if ( $counter == 4 ) : ?>
<?php $counter2 = 4; ?>
<?php endif; ?>
<?php if ( $counter == 3 ) : ?>
<?php $counter2 = 6; ?>
<?php endif; ?>
<?php if ( $counter == 2 ) : ?>
<?php $counter2 = 8; ?>
<?php endif; ?>
<?php if ( $counter == 1 ) : ?>
<?php $counter2 = 10; ?>
<?php endif; ?>
<?php if ( $counter == 0 ) : ?>
<?php $counter2 = 12; ?>
<?php endif; ?>
<?php if ( $my_query->have_posts() ) : ?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php $my_query = new WP_Query($query_string . '&paged='.$paged); ?>
Kleine Artikel
<?php $counter3 = 0; while ( $my_query->have_posts() && $counter3 < $counter2 ) : $my_query->the_post();
?>
<?php if ( get_post_meta($post->ID,'artikeltyp', true) == 'wide' || get_post_meta($post->ID,'artikeltyp', true) == 'quote' ) { ?>
<?php } else { ?>
<?php $counter3++; ?>
<!-- kleine Artikel -->
<?php } ?>
<?php endwhile; ?>
<?php getpagenavi(); ?>
<?php else : ?>
<p><?php _e('KEINE kleinen Artikel.'); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
</div><!-- /main -->
</div><!-- /container -->
Alles anzeigen
In den zahllosen beispielen über multiple Loops sieht das immer so einfach aus. Aber ich bekomms einfach nicht hin. Wäre für jeden Tipp dankbar.
gruß
Alex