Как показать три последних пользовательских типа записей в Wordpress - PullRequest
1 голос
/ 11 марта 2020

Мне очень хорошо известно, что этот вопрос уже задавался миллион раз, но мне очень нужна ваша помощь с ним, потому что, несмотря на то, что я выполнил все рекомендации, я не могу ограничить количество пользовательских тип записи, который будет показан числом 3. Это означает, что каждый раз, когда я создаю новый пользовательский тип записи (новый марафон), l oop добавляет его к другим. Что я хочу, так это чтобы мой l oop показал только последние 3 марафона. Я думал, что этого достаточно, чтобы указать 'posts_per_page' => 3, но это не так.

Пожалуйста, помогите! Спасибо!

Вот мой код:

<?php
$the_query = new WP_Query( 'post_type=kinsta_marathon' );
array(
    'post_type'   => 'kinsta_marathon',
    'post_status' => 'publish',
    'posts_per_page' => 3,
    'tax_query'   => array(
        array(
            'taxonomy' => 'slider',
            'field'    => 'slug',
            'terms'    => 'slider'
        )
    )
   );
// The Loop!
if ($queryObject->have_posts()) {
    ?>

    <?php
    while ($queryObject->have_posts()) {
        $queryObject->the_post();

        ?>


    <div class="container mb-3 py-3">
        <div class="row h-100 pl-3 rowcalendartop ">
            <div class="container h-100">
                <div class="row h-100">
                <div class="col-1  py-0"><img class="logomarathoncalendar" src="<?php the_field('logo_marathon'); ?>" alt="logo-marathon"></div>
                <div class="col-10 py-0 align-self-center"><h5 class="mb-0 align self-center"> <?php the_title(); ?></h5></div>
                </div>

            </div>
        </div>
            <div class="row rowcalendarbottom h-100 greysection py-3">



                <div class="col-2 align-self-center"><h6 class="mb-0"><i class="fas fa-map-marker-alt iconslidermarathon mr-3"></i> <?php the_field('where_marathon'); ?></h6></div>
                <div class="col-2 align-self-center"><h6 class="mb-0"><i class="fas fa-calendar iconslidermarathon mr-3"></i> <?php the_field('when_marathon'); ?></h6></div>
                <div class="col-2 align-self-center"><h6 class="mb-0"><i class="fas fa-running iconslidermarathon mr-3"></i> <?php the_field('km_marathon'); ?></h6></div>
                <div class="col-2 align-self-center"><h6 class="mb-0"><i class="fas fa-euro-sign iconslidermarathon mr-3 "></i> <?php the_field('marathon_price'); ?></h6></div>
                <a href="<?php the_permalink(); ?>" target="_blank"><div class="col-2 align-self-center"><h5 class="mb-0 text-center"><i class="fas fa-arrow-right iconslidermarathon mr-3"></i></h6></div></a>


            </div>

    </div>

    <?php
    }
    ?>


    <?php
}
?>  

<!--end loop--> 

1 Ответ

1 голос
/ 11 марта 2020

Вы не передаете параметры в WP_Query, просто post_type. Включите массив в качестве параметра в WP_Query, и он будет работать.

$the_query = new WP_Query( array(
    'post_type'   => 'kinsta_marathon',
    'post_status' => 'publish',
    'posts_per_page' => 3,
    'tax_query'   => array(
        array(
            'taxonomy' => 'slider',
            'field'    => 'slug',
            'terms'    => 'slider'
        )
    )

));

Кроме того, вам не нужно if, оборачивая l oop. Если список пуст, он не будет обрабатывать l oop, и вы не будете отображать никаких сообщений, указывающих на отсутствие записей, если он пуст.

Еще одно изменение - убедиться, что ваши переменные одинаковы для запроса и l oop. Вы назвали свою переменную запроса $the_query, но просматриваете $queryObject.

// The Loop!
<?php
while ($the_query->have_posts()) {
    $the_query->the_post();

    ?>

Обратитесь к странице WordPress WP_Query для полезных примеров.

...