web-dev-qa-db-fra.com

Boucle sur front-page.php

J'essaie de charger les 3 derniers messages sur ma page d'accueil. Je suis un novice absolu mais je semble faire des progrès.

Ceci est mon code (ci-dessous). À la minute où chaque article a pour titre "Accueil", je comprends que c'est parce que la page d'accueil est la requête principale?

<?php
    $latest_blog_posts = new WP_Query( array( 'posts_per_page' => 3 ) );
    if ( $latest_blog_posts->have_posts() ) : while ( $latest_blog_posts->have_posts() ) : $latest_blog_posts->the_post();
        get_template_part('loop');
    endwhile; endif;
?>

Alors, comment pourrais-je modifier ce code pour qu'il affiche les 3 derniers messages du blog en utilisant loop.php?

J'ai aussi un type de message personnalisé qui utilise une page/boucle différente. Mais je suppose qu'une fois que cela fonctionne, il suffira simplement d’échanger la "boucle" contre "la boucle-2" pour que cela fonctionne avec le même code?

Esperons que quelqu'un puisse aider avec ça. C'est un pas en avant, deux pas en arrière à la minute pour moi!

MODIFIER

Contenu de loop.php comme demandé dans la réponse :)

<?php if (have_posts()): while (have_posts()) : the_post(); ?>

    <!-- article -->
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

        <!-- post thumbnail -->
        <?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="h-entry__image-link">
                <?php the_post_thumbnail(array(120,120)); // Declare pixel size you need inside the array ?>
            </a>
        <?php endif; ?>
        <!-- /post thumbnail -->

        <!-- post title -->
        <h2 class="p-name">
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
        </h2>
        <!-- /post title -->

        <!-- post details -->
        <time datetime="<?php the_time('Y-m-j'); ?>" class="dt-published"><?php the_time('jS F Y'); ?></time>
        <!-- /post details -->

        <?php html5wp_summary('html5wp_index'); // Build your custom callback length in functions.php ?>

        <p><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="arrow-link">Read the full article</a></p>

        <?php edit_post_link(); ?>

    </article>
    <!-- /article -->

<?php endwhile; ?>

<?php else: ?>

    <!-- article -->
    <article>
        <h2><?php _e( 'Sorry, nothing to display.', 'html5blank' ); ?></h2>
    </article>
    <!-- /article -->

<?php endif; ?>
1
user1406440

Voici comment vous le feriez. Votre boucle est basée sur le fait d'être dans une archive ou une page d'index. (ou à la maison)

$args = array(
    'posts_per_page'    => 3,
    'post_type'     => 'post',  //choose post type here
    'order' => 'DESC',
);
// query
$the_query = new WP_Query( $args );


if( $the_query->have_posts() ):
    while( $the_query->have_posts() ) : $the_query->the_post();
        get_template_part('loop');
    endwhile; 
else :

endif; 

code révisé exécutant la requête complète sans le contenu-part.php

// WP_Query arguments
$args = array(
    'posts_per_page'    => 3,
    'post_type'     => 'post',  //choose post type here
    'order' => 'DESC',
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
?>
        <!-- article -->
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

    <!-- post thumbnail -->
    <?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="h-entry__image-link">
            <?php the_post_thumbnail(array(120,120)); // Declare pixel size you need inside the array ?>
        </a>
    <?php endif; ?>
    <!-- /post thumbnail -->

    <!-- post title -->
    <h2 class="p-name">
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </h2>
    <!-- /post title -->

    <!-- post details -->
    <time datetime="<?php the_time('Y-m-j'); ?>" class="dt-published"><?php the_time('jS F Y'); ?></time>
    <!-- /post details -->

    <?php html5wp_summary('html5wp_index'); // Build your custom callback length in functions.php ?>

    <p><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="arrow-link">Read the full article</a></p>

    <?php edit_post_link(); ?>

</article>
<!-- /article -->
<?php
    }
} else {
    // no posts found
}

// Restore original Post Data
wp_reset_postdata();

je ne peux pas le tester complètement à cause des fonctions appelées par votre thème, mais essayez-le.

Si cela fonctionne, vous pouvez extraire le contenu de l'article. Remplacez tout le contenu de votre fichier loop.php actuel par le contenu ci-dessus mais uniquement par

<!-- article -->

à

<!-- /article -->

Comme cela serait dans votre nouveau fichier loop.php, vous le retirerez de la page principale.

4
rudtek

Essaye ça

<?php
    $latest_blog_posts = new WP_Query( array( 'posts_per_page' => 3, 'offset' => 3 ) );
    if ( $latest_blog_posts->have_posts() ) : while ( $latest_blog_posts->have_posts() ) : $latest_blog_posts->the_post();
        get_template_part('loop');
    endwhile; endif;
?>

Pour plus d'informations sur WP Query avec des paramètres personnalisés, vérifiez ceci link