ทำไมคุณต้องมีจำนวนเต็มในการคำนวณเลข?


17

การpaginate_linksอ้างอิงฟังก์ชัน Codexมีรหัสตัวอย่างบางส่วนที่ถูกโพสต์ใหม่ทั่วเน็ต

มันมีส่วนที่ใช้ตัวแปรที่เรียกว่า$big = 999999999; // need an unlikely integer:

echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );

และใช้ในการstr_replaceในecho paginate_linksฟังก์ชั่น

นี่เป็นรูปแบบของการห่อหุ้มหรือไม่?

คำตอบ:


16

หมายเหตุget_pagenum_link( $big ): สิ่งนี้จะสร้าง URL ( ไม่ใช่ลิงค์) ตามหมายเลขที่ระบุในพารามิเตอร์แรก

ฟังก์ชันนั้นใช้เพื่อรับรูปแบบพื้นฐานสำหรับ URL และใช้จำนวนเต็มสูงเพราะ:

  1. คุณต้องระบุจำนวนเต็มเป็นอาร์กิวเมนต์
  2. URL ผลลัพธ์ถูกกรองด้วยapply_filters('get_pagenum_link', $result)และอาจมีการเปลี่ยนแปลงโดยปลั๊กอิน ความเสี่ยงนี้จะสูงขึ้นเล็กน้อยสำหรับตัวเลขที่ตรงกับหน้าที่มีอยู่ตัวอย่างเช่นเมื่อปลั๊กอินใช้หัวเรื่องแยกต่างหากสำหรับเพจย่อย

ดังนั้นนี่เป็นเพียง…การประชุมที่สกปรกสัญญาณไปยังปลั๊กอินอื่น ๆ : อย่าเปลี่ยนที่โปรด! ฉันคิดว่าPHP_INT_MAXน่าจะดีกว่านี้ แต่ก็ยังน่าเกลียด และฉันสงสัยว่าหลายนักพัฒนาปลั๊กอินรู้ว่า

paginate_links()จำนวนจะถูกแทนที่แล้วกับตัวยึดที่จำเป็นใน

สิ่งที่คุณเห็นนี่เป็นAPI ที่ไม่สมบูรณ์ พยายามที่จะเรียนรู้บางอย่างจากตัวอย่างนี้ - อย่าปล่อย API ที่ไม่สมบูรณ์ไม่เช่นนั้นเอกสารของคุณจะดูน่าอับอาย :)


ฉันยอมรับ PHP_INT_MAX น่าจะดีกว่า IMO แต่จะทำให้ฉันสับสนมากขึ้นในเวลานั้น ฉันชอบคำอธิบายของคุณมากมันเป็นการยืนยันว่าฉันกำลังคิดตามบรรทัดที่ถูกต้อง ฉันไม่ต้องการตั้งสมมติฐานใด ๆ
Jason Green

ดังนั้นจะใช้เฉพาะในกรณีของตัวกรองที่get_pagenum_linkมีผลต่อหมายเลขหน้าปัจจุบัน ? (เนื่องจากการpaginate_links()ใช้งานget_pagenum_link()โดยค่าเริ่มต้นอยู่แล้ว) ดูเหมือนว่าจะเป็นเรื่องล้ำลึกสำหรับฉันถ้าฉันไม่ได้ทำอะไร
Cai

@Cai ดูเหมือนว่าจะมีปัญหาจริงครั้งหนึ่ง การบำรุงรักษาฐานรหัสเป็นเวลานานมักจะเต็มไปด้วยวิธีแก้ไขปัญหาสำหรับกรณีขอบ
fuxia

มันดูเหมือนว่า paginate_links()ไม่เคยใช้get_pagenum_link()ไปโดยปริยายดังนั้นฉันสงสัยว่านี้คือการประชุมจากก่อนหน้านั้นและถ้า 'จำนวนเต็มน่า' มีความจำเป็นจริงๆ (หรือถ้าการแก้ปัญหาที่แท้จริงเป็นเพียงget_pagenum_link())?
Cai
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.