ใช้คำค้น
“get_previous_post(); and $current_post;”
“display next post from current post”
เมื่อกดบทความใดๆ มันจะแสดงโพสท์ถัดไปอีก 5 โพสท์ ด้วย
(เอามาทำเป็นหน้าปัจจุบันและ อีก 1 โพสท์ถัดไปได้ โดยใส่เปลี่ยนตัวเลขจาก 5 เป็น 1)
ดังนั้นวิธีนี้จะใช้ได้ กับ การกดโพสท์ใดๆได้ โดยใส่แทน code ใน single.php
หาก code ใน single.php มี code random อยุ่ด้วย จะต้องเอาออกไป เพราะมันจะถ่ายทอดลักษณะมาที่โค๊ดนี้ทำให้ใช้งานไม่ได้
ref. https://stackoverflow.com/questions/18141818/get-next-and-previous-5-posts-from-the-current-post
อื่นๆ(ยังไม่ทดสอบ)
https://stackoverflow.com/questions/25361996/wordpress-show-next-3-x-number-adjacent-custom-posts-from-existing (น่าจะใช้ได้)
https://wordpress.stackexchange.com/questions/71813/show-multiple-next-and-previous-posts
https://stackoverflow.com/questions/6324421/getting-next-previous-post-id-using-current-post-id-in-wordpress
https://www.forumming.com/question/13544/get-next-prev-3-posts-in-relation-to-current-post
https://wordpress.stackexchange.com/questions/14502/get-next-prev-3-posts-in-relation-to-current-post
https://stackoverflow.com/questions/40095699/wordpress-wp-query-get-next-post-with-same-category
https://stackoverflow.com/questions/40095699/wordpress-wp-query-get-next-post-with-same-category
<?php global $post;
$current_post = $post; // remember the current post
for($i = 1; $i <= 5; $i++):
$post = get_previous_post(); // this uses $post->ID
setup_postdata($post);
// do your stuff here
the_title();
the_content();
endfor;
$post = $current_post;
?>
for new 5 post use get_next_post() instead of get_previous_post()
วิธีด้านล่างนี้ ใช้กับ การกดโพสท์ใดๆ ไม่ได้ ถ้าใส่ ใน single.php มันจะดึงโพสท์ล่าสุดมาสองโพสท์
ถ้าจะใช้ได้ใกล้เคียง ต้องทำ page template มาต่างหาก แล้ว ก็เข้าไปสร้างโพสท์ ว่าง ชื่ออะไรก็ได้ เช่น 2post โดยเลือก page template ตามที่ตั้งไว้
สร้างไฟล์ page-blog.php อัพเข้าไปใน theme
<?php
/*
Template Name: Blog
*/
?>
<?php get_header(); ?>
<!--<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3">-->
<div class="row row-cols-1 row-cols-sm-2">
<?php // Display blog posts on any page @ https://m0n.co/l
$temp = $wp_query; $wp_query= null;
$wp_query = new WP_Query(); $wp_query->query('posts_per_page=2' . '&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="col mb-4">
<div class="card" style="height: 500px;overflow:scroll;padding: 10px;">
<h2><a href="<?php the_permalink(); ?>" title="Read more"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<hr>
<?php the_content();?>
</div></div>
<?php endwhile; ?>
<?php if ($paged > 1) { ?>
</div>
<div style="text-align:center;width:100%"><?php previous_posts_link('« ใหม่กว่า '); ?> || <?php next_posts_link('เก่ากว่า »'); ?></div>
<?php } else { ?><div class="prev"><?php next_posts_link('เก่ากว่า >>'); ?></div>
<?php } ?>
<?php wp_reset_postdata(); ?>
<?php get_footer(); ?>
เวลาเรียกใช้ ก็กดลิ้ง xxx.com/2post
มันจะแสดงหน้าล่าสุด 2 หน้า แล้วมีลิ้งด้านล่างกดต่อไปเรื่อยๆ โดยสังเกตุว่า url จะเป็น
https://www.insurancethai.net/2post/page/2/
https://www.insurancethai.net/2post/page/3/
https://www.insurancethai.net/2post/page/4/
ไปเรื่อยๆ
ต่างกับ วิธีแรก ที่ตรงตามต้องการคือ เมื่อกดโพสท์ใดๆ มันจะแสดงpostถัดไป ด้วย ตามจำนวนที่ตั้งไว้ ดังนั้น url จะเป็น url ของโพสท์นั้นๆเลย เพียงแต่มี post อื่นๆแสดงมาด้วยนั่นเอง
อื่นๆ
This will get you next 10 posts on single post template.
(next-10-posts-data-of-currently-viewing-post-in-blog-page/)
<?php
global $post;
$current_post = $post;
for ( $i = 1; $i <= 10; $i++ ) {
$post = get_previous_post(); // this uses $post->ID
setup_postdata($post);
get_template_part( 'content', get_post_format() );
}
$post = $current_post; // restore
?>
Show next x number of posts depending on current post in WordPress
<ul>
<?php
global $post;
$current_post = $post;
$site_url = get_site_url();
for($i = 1; $i <= 3; $i++):
$post = get_previous_post();
setup_postdata($post);
// add your own if condition
if(condition) {
echo '<li>';
echo '<a class="title" href="' . get_permalink() . '" title="' . get_the_title() . '">' . get_the_title() . '</a>';
echo '<a class="link" href="' . get_permalink() . '" title="' . get_the_title() . '"></a>';
echo '</li>';
}
else
{
echo '<li>';
echo '<a class="eg-title" href="'. $site_url .'/your-landing-page" title="">Show all</a>';
echo '</li>';
// only show once with break
break;
}
endfor;
$post = $current_post;
?>
</ul>