wake-up-neo.net

Erstellen Sie eine Inhalts- und Auszugsraster-Schleife mit Seitenwechsel und Optionen für die Anzahl der Beiträge

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:

index post display

paged post display

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 );
4
markratledge

Die $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 );
2
kaiser

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();
}
?>
0
Marco