• August 23, 2017

    WP Recipe
    How to: Show related posts without a plugin

    แสดงโพสต์ที่เกี่ยวข้องโดยค้นหาจาก Tag ที่เหมือนกับเรื่องที่ดูอยู่
    single.php

    <div class="related-posts">
      <?php
        $tags = wp_get_post_tags($post->ID);
        if ($tags) :
          $first_tag = $tags[0]->term_id;
          $args=array(
          'tag__in' => array($first_tag),
          'post__not_in' => array($post->ID),
          'showposts'=>5,
          'caller_get_posts'=>1
        );
    
        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) : ?>
          <h4>Related Posts (beta)</h4>
          <ul>
          <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
            <li>
            <a href="<?php the_permalink() ?>" rel="bookmark" title="
            Permanent Link to <?php the_title_attribute(); ?>">
              <?php the_title(); ?></a>
            </li>
          <?php endwhile;  ?>
          </ul>
      <?php  endif;
        endif;
        wp_reset_query();
      ?>
    </div>

    มันคือการเอา Tag แรกของโพสต์ที่แสดงอยู่ ไปค้นหาโพสต์ที่มี Tag นี้เหมือนกัน เราจะได้ Custom Loop ใน Main Loop อีกที เพราะฉะนั้นเมื่อเราวน Custom Loop เสร็จแล้ว ต้องเรียกใช้ฟังก์ชั่น wp_reset_query(); เพื่อเป็นการ Reset Custom Loop และกลับเข้าสู่ Loop หลัก
    ตรงนี้สำคัญ (และโค้ดต้นฉบับไม่ได้ใส่มาให้) เพราะถ้าเราไม่ Reset Query เวลาเรียกใช้ตัวแปร $post หลังจากนี้ มันจะเป็นของ Custom Loop แทนที่จะเป็นของ Main Loop และอาจทำให้ค่าต่างๆ เพี้ยนได้

    wp_reset_query();
    https://codex.wordpress.org/Function_Reference/wp_reset_query



เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories