จะทราบได้อย่างไรว่าฉันอยู่ในหน้าแรกของการแบ่งหน้า?


22

ฉันจะทราบได้อย่างไรว่าฉันอยู่ในหน้าแรกของการแบ่งหน้า? ฉันใช้ WP_Pagenavi ฉันต้องการเรียกใช้ฟังก์ชั่นเฉพาะในหน้าแรกของเลขหน้า ฉันตรวจสอบ query_var 'paged' แล้วมันถูกตั้งค่าเป็น 0 ในหน้านี้และจากนั้น 2, 3 และอื่น ๆ ในหน้าถัดไป (หายไป 1 รายการ!) ... ใครรู้วิธีแก้ปัญหาที่สะอาดหรือไม่

ขอบคุณ

คำตอบ:


24
// get current page we are on. If not set we can assume we are on page 1.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// are we on page one?
if(1 == $paged) {
    //true
}

4
สิ่งนี้ถูกต้อง แต่การโทรget_query_var( 'paged' )สองครั้งนั้นซ้ำซ้อน พารามิเตอร์ตัวที่สองของฟังก์ชันนั้นเป็นค่าเริ่มต้น ดังนั้นคุณสามารถทำให้มันง่ายขึ้นไป: $paged = get_query_var( 'paged', 1 );
Linnea Huxford

ส.ค. 2560: อันนี้ไม่ทำงานสำหรับฉันมันส่งออก 1 ทุกหน้า อย่างไรก็ตามคำตอบของ Michael ทำงานได้สมบูรณ์แบบ
Surjith SM

32

หากคุณเพียงต้องการที่จะรู้ว่าคุณอยู่ในหน้าแรกของหน้าเลขหน้าลองis_paged():

if ( !is_paged() ) {
  // first page of pagination
}

อันนี้ใช้ได้สำหรับฉัน (ส.ค. 2017) คำตอบถูกทำเครื่องหมายว่าไม่ถูกต้องอย่างใดอย่างหนึ่ง
Surjith SM

ยอดเยี่ยมสะอาดและเรียบง่าย
ติดตาม DeCoy

4

ฉันกำลังมองหาวิธีง่ายๆในการพิจารณาว่าจะใช้posts_nav_link()ฟังก์ชั่นหรือไม่และโซลูชันทั้งหมดที่ฉันพบทางออนไลน์นั้นซับซ้อนเกินไปหรือไม่น่าเชื่อถือ ตัวอย่างเช่นคนจำนวนมากแนะนำให้ใช้$pagedตัวแปรโกลบอล แต่ฉันพบว่าตัวแปรนี้ส่งคืนค่าเดียวกันสำหรับหน้าแรกแม้ว่าหน้าแรกจะเป็นหน้าเดียว!

ดังนั้นฉันขุดลงในwp-includes/link-template.phpไฟล์และพบว่าposts_nav_link()ฟังก์ชั่นเพียงแค่ส่งออกค่าตอบแทนของฟังก์ชั่นอื่น:

/**
 * Display post pages link navigation for previous and next pages.
 *
 * @since 0.71
 *
 * @param string $sep Optional. Separator for posts navigation links.
 * @param string $prelabel Optional. Label for previous pages.
 * @param string $nxtlabel Optional Label for next pages.
 */
function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
    $args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
    echo get_posts_nav_link($args);
}

การใช้ความรู้นี้เราสามารถสร้างวิธีที่ง่ายและมีประสิทธิภาพในการพิจารณาว่าเราจำเป็นต้องเพิ่มลิงก์เพื่อสำรวจระหว่างหน้าหรือไม่:

$posts_nav = get_posts_nav_link();
if(empty($posts_nav)) {
    // do not use posts_nav_link()
} else {
    // use posts_nav_link()
}

โพสต์ในบล็อกของฉันที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.