¿Cómo hacer que mi página principal muestre solo las publicaciones adhesivas más recientes, más los widgets habituales?

4

WP 3.3.1, Suffusion 4.0.2

Estoy tratando de averiguar cómo hacer que mi página principal muestre solo la publicación más reciente marcada como pegajosa. No puedo encontrar cómo hacer esto en la documentación.

Lo que estoy tratando de hacer es usar una combinación de fechas de publicación futuras y vencimientos (a través del complemento Atropos) para controlar lo que aparece en mi página principal.

¿Alguna sugerencia? ¿Hay algún complemento que tenga un código corto que me permita insertar la publicación más reciente del stick?

    
pregunta O. Jones 27.02.2012 - 20:53

2 respuestas

4

Si te estoy entendiendo correctamente, solo quieres mostrar la publicación reciente más reciente en la página principal. Tuve el mismo problema hace uno o dos meses, y recibí una ayuda fantástica de la comunidad aquí en WordPress Answers. La solución es ejecutar dos bucles en su archivo index.php. Uno para extraer solo las publicaciones adhesivas más recientes, y el segundo para mostrar todos los demás tipos de publicaciones.

Aquí está el enlace , pero también publicaré mi código para este problema .

<?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 -->

Obviamente, este código no es copiar y pegar para todos. Me funcionó en la estructura de código que tenía en ese momento. Además, perdona el formato desagradable: P

    
respondido por el cmegown 27.02.2012 - 21:22
1

Muchas gracias por esto! Fue muy útil. Un comentario: si desea que la publicación más reciente se muestre como una publicación destacada (es decir, si una publicación no se ha hecho pegajosa), y no desea que esta publicación se duplique en la lista normal, entonces en la primer cambio de bucle:

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

a:

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

y en el segundo bucle, cambiar:

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

a

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

Bruce

    
respondido por el Bruce 10.05.2012 - 04:41

Lea otras preguntas en las etiquetas