ثبت‌نام دوره🔸متخصص اتوماسیون با N8N🔸سون‌لرن شروع شد 🔥🤖 مشاهده دوره ←
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ فاطمه آبرومند
حلقه have_posts
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۹ آبان ۱۴۰۴

سلام و وقت بخیر 

وقتی از دستور زیر استفاده میکنم فقط یک پست رو نمایش میده در واقع اخرین پستی که منتشر شده رونمایش میده  و بقیه پست‌های قدیمی نمایش داده نمیشوند لطفا راهنمایی بفرمایید

<div class="container">    <div class="row"> <!--         Cource Grid 1 -->        <?php if(have_posts()): ?>            <?php while (have_posts()) : the_post();?>

<div class="col-lg-4 col-md-6">            <div class="education_block_grid">                <div class="education_block_thumb">                    <a href="course-detail.html">                        <?php echo dwt_post_thumbnail();?>                    </a>                    <div class="topic_level bg-warning text-white"><?php echo get_the_category_by_ID(get_post_meta(get_the_ID(),'_dwt_post_cat',true));?></div>                </div>                <div class="education_block_body">                    <h4 class="bl-title"><a href="<?php the_permalink();?>"><?php echo get_the_title();?></a></h4>                    <p><?php echo PostExcerpt::excerpt_limit();?></p>                </div>                <div class="education_block_footer">                    <div class="education_block_author">                        <div class="path-img"><a href="instructor-detail.html">                                <?php echo get_avatar(get_the_author_meta('user_email'),38);?>                            </a></div>                        <h5><a href="instructor-detail.html"><?php echo get_the_author();?></a></h5>                    </div>                    <span class="education_block_time">

</span>                </div>            </div>        </div>            <?php endwhile;?>         <?php else:?>         <div class="alert alert-info">مطلبی برای نمایش پیدا نشد !!</div>        <?php endif;?>        <?php wp_reset_postdata();?>    </div> </div>

سلام. وقتتون بخیر

دو مشکل رایج هست که باعث میشه فقط آخرین پست نمایش داده بشه، یا کوئری اصلی محدود شده (posts_per_page = 1 یا query_posts/ pre_get_posts که نتایج رو تغییر داده)، یا شما دارید داخل یک کوئری سفارشی اشتباه استفاده می‌کنید.

این موارد رو تست کنید:

--- از یک WP_Query مستقل با posts_per_page مناسب و the_post() داخل حلقه استفاده کنید.
--- تو تنظیمات وردپرس خواندن (Reading) مقدار «تعداد نوشته‌ها در هر برگه» رو چک کنید 1 نباشه.
--- در قالب دنبال query_posts() یا فیلتر pre_get_posts بگردید؛ ممکنه جایی کوئری اصلی رو به 1 محدود کرده باشن.
--- این کد رو تست کنید:

<div class="container">
  <div class="row">
    <?php
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $args = array(
      'post_type'      => 'post',
      'posts_per_page' => 6,            // تعداد پست‌هایی که می‌خوای نمایش بدی
      'paged'          => $paged,
      'post_status'    => 'publish'
    );
    $the_query = new WP_Query($args);
    if ($the_query->have_posts()) :
      while ($the_query->have_posts()) : $the_query->the_post();
    ?>
      <div class="col-lg-4 col-md-6">
        <div class="education_block_grid">
          <div class="education_block_thumb">
            <a href="<?php the_permalink(); ?>">
              <?php echo dwt_post_thumbnail(); ?>
            </a>
            <div class="topic_level bg-warning text-white">
              <?php echo get_the_category_by_ID(get_post_meta(get_the_ID(),'_dwt_post_cat',true)); ?>
            </div>
          </div>
          <div class="education_block_body">
            <h4 class="bl-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
            <p><?php echo PostExcerpt::excerpt_limit(); ?></p>
          </div>
          <div class="education_block_footer">
            <div class="education_block_author">
              <div class="path-img">
                <a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>">
                  <?php echo get_avatar(get_the_author_meta('user_email'),38); ?>
                </a>
              </div>
              <h5><a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"><?php the_author(); ?></a></h5>
            </div>
            <span class="education_block_time"><?php echo get_the_date(); ?></span>
          </div>
        </div>
      </div>
    <?php
      endwhile;
      // صفحه‌بندی ساده
      $big = 999999999;
      echo '<div class="col-12">';
      echo paginate_links(array(
        'base'      => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format'    => '?paged=%#%',
        'current'   => max(1, $paged),
        'total'     => $the_query->max_num_pages
      ));
      echo '</div>';
    else:
      echo '<div class="alert alert-info">مطلبی برای نمایش پیدا نشد !!</div>';
    endif;
    wp_reset_postdata();
    ?>
  </div>
</div>

اگر این کد رو داخل یک template part یا صفحه خاص قرار دادید و همچنان فقط یک پست می‌بینید، خطای caching یا پلاگین‌های صفحه‌ساز/کوئری رو بررسی کنید.

سحر پاشائی ۰۹ آذر ۱۴۰۴، ۰۹:۱۲