Как я получил бы 1 последнее сообщение от запроса для 5 сообщений?

Таким образом, у меня есть a wp_query который получает 5 новых сообщений от моего сайта Wordpress. То, что я хочу сделать, из этого запроса, захватите новое сообщение и покажите это своего рода сообщением 'героя' и затем займите другие 4 поста (могли быть больше чем 4, если я изменяю запрос позднее), и покажите в списке или сетке ниже этого сообщения героя.

Вот мой код запроса до сих пор (очевидно, упрощен):

<?php 

$query_args = array(
    "posts_per_page" => "5"
);

$listedPosts = new WP_Query($query_args);

// the loop

if ( $listedPosts->have_posts() ) {
    while ( $listedPosts->have_posts() ) {
        $listedPosts->the_post();
        // loop content for hero post goes here (I need to get the most recent post).
    } 
}

// how would I show the other remaining posts in the query?

?>
1
18.12.2013, 15:18
3 ответа

Можно использовать $current_post свойство WP_Query

$query_args = array(
    "posts_per_page" => "5"
);

$listedPosts = new WP_Query($query_args);

// the loop

if ( $listedPosts->have_posts() ) {
    while ( $listedPosts->have_posts() ) {
        $listedPosts->the_post();
        if ( (int) $listedPosts->current_post === 0 ) {
          // loop content for hero post
        } else {
          // loop content for remaining posts
        }
    } 
}
6
19.02.2020, 22:42

Простое boolean триггер сделает задание.

<?php 

$query_args = array(
    "posts_per_page" => "5"
);

$listedPosts = new WP_Query($query_args);

// the loop

if ( $listedPosts->have_posts() ) {
    $first_post = true;
    while ( $listedPosts->have_posts() ) {
        $listedPosts->the_post();
        if( $first_post ) {
            $first_post = false;
            echo '<div class="post first">';
                // loop content for hero post goes here (I need to get the most recent post).
            echo '</div>';
        } else {
            echo '<div class="post">';
                // Rest of the posts.
            echo '</div>';
        }
    } 
}
?>

Затем используйте .post.first класс для моделирования вещей по-другому. Можно также загрузиться в довольном различном, другой порядок/классы на довольное, различные размеры изображения и т.д.

0
19.02.2020, 22:42

Изменение Вашего запроса args к чему-то как ниже закажет Ваши сообщения измененной датой.

$query_args = array(
    "posts_per_page" => "5",
    "orderby" => "modified",
    "order" => "DESC"
);

Можно затем использовать простое, если еще условие в цикле и печатает первое сообщение как героя и остающееся ниже его.

1
19.02.2020, 22:42

Теги

Похожие вопросы