it-swarm.com.de

Wie kann ich auf meiner Startseite festlegen, dass nur die neuesten Kurznachrichten sowie die üblichen Widgets angezeigt werden?

WP 3.3.1, Suffusion 4.0.2

Ich versuche herauszufinden, wie ich auf meiner Startseite nur den zuletzt als klebrig gekennzeichneten Beitrag anzeigen kann. Wie das geht, kann ich der Dokumentation nicht entnehmen.

Was ich versuche, ist eine Kombination aus zukünftigen Veröffentlichungsdaten und Ablaufdaten (über das Atropos-Plugin), um zu steuern, was auf meiner Startseite angezeigt wird.

Irgendwelche Vorschläge? Gibt es ein Plugin mit einem Shortcode, mit dem ich den neuesten Stickpost einfügen kann?

4
O. Jones

Wenn ich Sie richtig verstehe, möchten Sie nur den neuesten Kurzbeitrag auf der Startseite anzeigen. Ich hatte das gleiche Problem vor ein oder zwei Monaten und habe von der Community hier bei WordPress Answers fantastische Hilfe bekommen. Die Lösung besteht darin, zwei Schleifen in Ihrer index.php-Datei auszuführen. Eine, um nur den neuesten Kurzbeitrag abzurufen, und die zweite, um alle anderen Arten von Beiträgen anzuzeigen.

Hier ist der Link , aber ich werde meinen Code auch für dieses Problem posten.

<?php get_header(); ?>
<?php get_sidebar( 'left' ); ?>

<?php if ( is_home() && !is_paged() ) : ?>
<div id="post-wrapper">
    <?php
        // Get IDs of sticky posts
        $sticky = get_option( 'sticky_posts' );
        // first loop to display only my single, 
        // MOST RECENT sticky post
        $most_recent_sticky_post = new WP_Query( array( 
            // Only sticky posts
            'post__in'            => $sticky, 
            // Treat them as sticky posts
            'ignore_sticky_posts' => 1, 
            // Order by date to get the most recently published sticky post
            'orderby'             => date, 
            // Get only the one most recent
            'posts_per_page'      => 1
        ) );
        ?>

    <?php while ( $most_recent_sticky_post->have_posts() ) :  $most_recent_sticky_post->the_post(); ?>
        <!-- your code to display most recent sticky -->
    <?php endwhile; wp_reset_query(); ?>

<?php endif; ?>

<?php
    $all_other_posts = array(
        'post__not_in'  => get_option( 'sticky_posts' )
    );

    global $wp_query;
    $merged_query_args = array_merge( $wp_query->query, $all_other_posts );
    query_posts( $merged_query_args );
?>

<?php if( have_posts() ) : ?>
    <?php while( have_posts() ) : the_post(); ?>
        <!-- your code to display all other posts -->
    <?php endwhile; ?>
<?php endif; ?>
</div> <!-- end #post-wrapper -->

Offensichtlich ist dieser Code nicht für jedermann geeignet. Es funktionierte für mich in der Codestruktur, die ich zu der Zeit hatte. Vergib auch die üble Formatierung: P

4
cmegown

Vielen Dank dafür! Es war sehr hilfreich. Ein Kommentar: Wenn Sie möchten, dass der neueste Beitrag als vorgestellten Beitrag angezeigt wird (dh, wenn ein Beitrag nicht fixiert wurde), und Sie möchten, dass dieser Beitrag nicht in der regulären Liste dupliziert wird, dann in der erste Schleifenänderung:

while ( $most_recent_sticky_post->have_posts() ) :  $most_recent_sticky_post->the_post(); 

zu:

while ( $most_recent_sticky_post->have_posts() ) :  $most_recent_sticky_post->the_post(); 
$do_not_duplicate = $post->ID; 

und in der zweiten Schleife ändern:

if( have_posts() ) : while( have_posts() ) : the_post();

zu

if( have_posts() ) : while( have_posts() ) : the_post();
if( $post->ID == $do_not_duplicate ) continue;

Bruce

1
Bruce