Ce que j'aimerais faire: sur index.php, une boucle qui affiche un nombre sélectionnable d'articles complets en utilisant the_content
, puis un nombre sélectionnable ci-dessous qui affiche un nombre sélectionnable (le nombre d'articles en lecture peut être codé en dur dans la fonction) (en utilisant the_excerpt
) en forme de grille 2 extraits de large. Toute page paged
d'articles utilise uniquement l'affichage d'extraits sur la grille. Comme ça:
Cette boucle serait idéale si elle gérait du texte, des extraits et du contenu plutôt que des images: http://www.billerickson.net/a-better-and-eas-rer-grid-loop/
Encore une autre mise à jour 11/03/12:
Merci à Kaiser pour cela. Un dernier bug: la deuxième page montre les 2 posts complets et extraits plutôt que tous les extraits.
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
permettent "beaucoup" En réalité, ce n'est pas si difficile si vous utilisez des parties de l'objet $wp_query
comme current_post
.
Vous pouvez voir ici quelques exemples d'utilisation délicate de fonctions telles que is_paged()
, $wp_query->current_post
et $wp_query->posts_per_page
. Vous pouvez basculer MarkUp selon que vous vous trouvez sur la première ou les dernières pages, si vous avez les trois premières publications (ou un nombre quelconque) ou des publications ultérieures. Il est également agréable d’utiliser la fonction post_class()
, qui possède également un filtre nommé post_class()
, composé de trois arguments: Le $classes
(classes par défaut WP), le $class
(un tableau de classes que vous avez défini lors de son appel - voir l'exemple ci-dessous) et le $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 );
Apportez les modifications suivantes. Non testé:
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();
}
?>