ฉันใช้pre_get_posts
เพื่อปรับจำนวนโพสต์ที่แสดงบนหน้าแรกของฉัน
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 12 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
แต่ฉันพบปัญหากับการโพสต์เหนียว โดยทั่วไปถ้าฉันมีโพสต์ใด ๆ เหนียวแบบสอบถามจะแสดงมากขึ้นกว่า 12 โพสต์ผมได้ระบุไว้เพราะมันจะแสดง 12 บวกยังโพสต์ใด ๆ แน่นอนฉันไม่สนใจโพสต์เหนียว:
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 1 );
set_query_var( 'ignore_sticky_posts', 1 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
แต่ฉันไม่คิดว่านี่จะเหมาะ ฉันคิดว่าโพสต์เหนียวควรรวมอยู่ในขีด จำกัด ของ 12 โพสต์และไม่ได้เพิ่มไว้ในขีด จำกัด นั่นคือสิ่งที่สมเหตุสมผลที่สุดสำหรับฉัน มีวิธีการที่จะบรรลุเป้าหมายนั้นหรือไม่? ฉันทำข้อผิดพลาดที่ควรค่าแก่การเผชิญหน้าหรือไม่?
ค่อนข้างซ้ำซ้อนของ: โพสต์เหนียว & โพสต์ต่อหน้าแต่นั่นก็ปิดอย่างแปลกประหลาดที่มีการแปลเกินไป ฉันไม่เห็นด้วยอย่างชัดเจนเพราะฉันกำลังมองหาคำตอบ แต่ก็เป็นเพราะมันเป็นคำถามว่าทำไม WordPress จึงไม่เคารพposts_per_page
ขีด จำกัดถ้าคุณใช้ข้อความติดหนึบ ถ้าคุณต้องการ 12 โพสต์ต่อหน้าคุณควรได้ 12 ไม่ใช่ 13 ซึ่งเป็นสิ่งที่คุณจะได้รับถ้าคุณมีโพสต์เหนียว ๆ
$sticky_count + (12 - $sticky_count)
ไป12- $sticky_count
แม้ว่า ตัวอย่างเช่นถ้าฉันมี 1 หนืดคณิตศาสตร์ของคุณยังคงทำงานได้ถึง 12 และจากนั้น WP เพิ่มโพสต์ติดหนึบที่ทำให้เป็น 13 โอ้และถ้าif ($sticky_count > $posts_per_page)
และเราตั้งค่าเป็น 12 นั่นหมายความว่าเราจะแสดง 24+ หรือไม่