Was ich gerne machen würde: auf index.php eine Schleife, die eine wählbare Anzahl von vollständigen Beiträgen mit the_content
und darunter eine wählbare Anzahl (die Anzahl der Beiträge kann in der Funktion fest codiert werden) von Auszügen (mit the_excerpt
) anzeigt ) in einem Rastermuster 2 Ausschnitte breit. Jede paged
Seite von Beiträgen verwendet nur die Gitteranzeige von Auszügen. So was:
Diese Schleife wäre ideal, wenn sie Text und Auszüge und Inhalt anstelle von Bildern handhaben würde: http://www.billerickson.net/a-better-and-easier-grid-loop/
Noch ein Update 11/03/12:
Danke an kaiser dafür. Ein letzter Fehler: Die zweite Seite zeigt die 2 vollständigen Beiträge und Auszüge anstatt aller Auszüge.
global $wp_query;
if ( have_posts() )
{
while( have_posts() )
{
the_post();
// Add Class: "post-number-X"
$current_post = "post-number-{$wp_query->current_post}";
// Add Class: "home" (for index page) or "post-number-X-of-total";
$current_in_total = 'home';
if ( is_paged() )
{
$current_in_total = "post-number-";
$current_in_total .= get_query_var( 'paged' ) * get_query_var( 'posts_per_page' ) - $wp_query->current_post;
$current_in_total .= "-of-total";
}
// Add Class: Even/Odd
$even_odd = ( 0 === $GLOBALS['wp_query']->current_post % 2 ) ? ' even' : ' odd';
// Avoid even/odd class for excerpts (everything after the 2nd post)
2 > $wp_query->current_post AND $even_odd = '';
// MarkUp: Uses `post_class()` to add classes
?>
<article <?php post_class( "{$current_post}{$even_odd} {$current_in_total}" ); ?>>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php
// Home/Index/Front-Page/Archive first page
if ( ! is_paged() )
{
// Display the_content(); for the first 2 posts, then the_excerpt();
2<= $wp_query->current_post ? the_excerpt() : the_content();
}
// Paged archives (starts at second page)
else
{
the_excerpt();
}
?>
</article>
<?php
}
// Add navigation ...
twentyeleven_content_nav( 'nav-below' );
} // endif;
unset( $current_post, $current_in_total, $even_odd );
$wp_query
Eigenschaften erlauben "viel" Tatsächlich ist es nicht so schwer, wenn Sie Teile des $wp_query
-Objekts wie current_post
verwenden.
Hier sehen Sie einige Beispiele, die Dinge wie is_paged()
, $wp_query->current_post
und $wp_query->posts_per_page
knifflig einsetzen. Sie können MarkUp wechseln, je nachdem, ob Sie sich auf der ersten oder der späteren Seite befinden, ob Sie die ersten drei (oder eine beliebige Anzahl) oder spätere Posts erhalten haben. Es ist auch schön, die Funktion post_class()
zu verwenden, die auch einen Filter mit dem Namen post_class()
hat - sie hat drei Argumente: Die Kernklassen $classes
(Standard WP), den $class
(ein Array von Klassen, die Sie beim Aufruf definiert haben - siehe Beispiel unten) und den $post_ID
.
global $wp_query;
if ( have_posts() )
{
// Add navigation ... TOP
twentyeleven_content_nav( 'nav-above' );
while( have_posts() )
{
the_post();
// Add Class: "post-number-X"
$current_post = "post-number-{$wp_query->current_post}";
// Add Class: "home" (for index page) or "post-number-X-of-total";
$current_in_total = 'home';
if ( is_paged() )
{
$current_in_total = "post-number-";
$current_in_total .= get_query_var( 'paged' ) * get_query_var( 'posts_per_page' ) - $wp_query->current_post;
$current_in_total .= "-of-total";
}
// Add Class: Even/Odd
$even_odd = ( 0 === $GLOBALS['wp_query']->current_post % 2 ) ? ' even' : ' odd';
// Avoid even/odd class for excerpts (everything after the 3rd post)
3 > $wp_query->current_post AND $even_odd = '';
// MarkUp: Uses `post_class()` to add classes
?>
<article <?php post_class( "{$current_post}{$even_odd} {$current_in_total}" ); ?>>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php
// Home/Index/Front-Page/Archive first page
if ( ! is_paged() )
{
// Display the_content(); for the first 3 posts, then the_excerpt();
3 <= $wp_query->current_post ? the_excerpt() : the_content();
}
// Paged archives (starts at second page)
else
{
the_excerpt();
}
?>
</article>
<?php
}
// Add navigation ... BELOW
twentyeleven_content_nav( 'nav-below' );
} // endif;
unset( $current_post, $current_in_total, $even_odd );
Nehmen Sie die folgenden Änderungen vor. Ungetestet:
global $wp_query, $paged;
parse_str( $query_string, $query_args );
// Home/Index/Front-Page/Archive first page
if ( 0 == $paged )
{
// Display the_content(); for the first 2 posts, then the_excerpt();
2<= $wp_query->current_post ? the_excerpt() : the_content();
}
// Paged archives (starts at second page)
else
{
the_excerpt();
}
?>