@freeman0204

Почему WP_Query{} не работает?

Сначала использовал обычный цикл.

<?php if ( have_posts() ) :  while ( have_posts() ) : the_post(); ?>
 <div class="item wow bounceInUp" data-wow-offset="10">
                    <span><i class="fa fa-briefcase"></i></span>
                    <div class="wrap-content">
                        <h2><?php the_title() ?></h2>
                        <?php the_content() ?>
                    </div>
                </div>
                <?php endwhile; ?>
                <?php endif; ?>

У меня на сайте 2 блока (секции). В первом блоке 6 постов а втором около 20. Когда делал первый блок с постами, использовал обычный цикл что выше. Но оказалось что если взять в этот же цикл посты с второй секции их будет то же количество что в первой секции.

Мне посоветовали более сложный цикл WP_Query{}.

<?php

$args = array(
    // Аргументы для запроса.
);

// Произвольный запрос.
$query = new WP_Query( $args );

// Проверка результатов запроса.
if ( $query->have_posts() ) {

   <div class="item wow bounceInUp" data-wow-offset="10">
                    <span><i class="fa fa-briefcase"></i></span>
                    <div class="wrap-content">
                        <h2><?php the_title() ?></h2>
                        <?php the_content() ?>
                    </div>
                </div>
    while ( $query->have_posts() ) {

        $query->the_post();

        // Содержимое запрошенных результатов начинается отсюда.

    }

}

// Восстановление исходных данных записи.
wp_reset_postdata();

?>


Но он почему то не работает. Выдает ошибку на этой строке.
<div class="item wow bounceInUp" data-wow-offset="10">
Что это может быть?
  • Вопрос задан
  • 646 просмотров
Решения вопроса 2
@tursumbekov
PHP, CMS, frontend
<div class="item wow bounceInUp" data-wow-offset="10">
                    <span><i class="fa fa-briefcase"></i></span>
                    <div class="wrap-content">
                        <h2><?php the_title() ?></h2>
                        <?php the_content() ?>
                    </div>
                </div>

Это должно быть после
while ( $query->have_posts() ) {

        $query->the_post(); ?>

У Вас даже комментарий есть:
"// Содержимое запрошенных результатов начинается отсюда."
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Потому что у вас мешанина из php и html, без открывающих и закрывающих php-тегов в нужных местах. Ну и сам код не там где надо.
<?php
$args = array(
    // Аргументы для запроса.
);

// Произвольный запрос.
$query = new WP_Query( $args );

// Проверка результатов запроса.
if ( $query->have_posts() ) {
    // Начало цикла
    while ( $query->have_posts() ) {
        $query->the_post();

// Перед выводом html необходимо закрыть php-тег
?>

<div class="item wow bounceInUp" data-wow-offset="10">
    <span><i class="fa fa-briefcase"></i></span>
    <div class="wrap-content">
        <h2><?php the_title() ?></h2>
        <?php the_content() ?>
    </div>
</div>
   
<?php // А если снова перешли к php - снова открываем тег
    } // А тут закрыли цикл while
} // А тут закрыли if

// Восстановление исходных данных записи.
wp_reset_postdata();
?>


В общем, мухи отдельно, котлеты отдельно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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