Saya menggunakan pre_get_posts
untuk menyesuaikan jumlah posting yang ditampilkan di beranda saya.
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 12 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
Tapi saya mengalami masalah dengan posting yang lengket. Pada dasarnya, jika saya memiliki posting yang lengket, kueri akan menampilkan lebih dari 12 posting yang telah saya tentukan, karena akan menampilkan 12 ditambah setiap posting yang lengket. Tentu saja saya bisa mengabaikan posting yang lengket:
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' );
Tapi saya rasa ini tidak ideal. Saya pikir posting lengket harus dimasukkan dalam batas 12 posting, dan tidak ditambahkan ke batas. Itulah yang paling masuk akal bagi saya. Apakah ada cara untuk mencapainya? Sudahkah saya membuat kesalahan yang layak pada wajah?
Cukup banyak duplikat: Tulisan Tempel & Posting Per Halaman tetapi anehnya ditutup karena terlalu terlokalisasi. Saya tidak setuju, jelas karena saya sedang mencari jawaban, tetapi juga karena itu adalah pertanyaan mengapa WordPress tampaknya tidak menghormati posts_per_page
batas jika Anda menggunakan posting yang lengket. Jika Anda ingin 12 posting per halaman Anda harus mendapatkan 12, bukan 13, yang adalah apa yang akan Anda dapatkan jika Anda memiliki satu posting lengket.
sumber
$sticky_count + (12 - $sticky_count)
ke12- $sticky_count
sekalipun. Sebagai contoh jika saya memiliki 1 sticky, maka matematika Anda masih bekerja sampai 12, dan kemudian WP menambahkan sticky post menjadi 13. Oh, dan jikaif ($sticky_count > $posts_per_page)
dan kami menetapkan ke 12, bukankah itu berarti kami akan menampilkan 24+?$posts_per_page
akan sama dengan$sticky_count
, dan di sini saya menetapkan parameter posts_per_page menjadi 1, dan saya pikir akan baik-baik saja karena kasus ini mungkin langka dan hanya akan ada di halaman pertama ($sticky_count + 1
).Ada masalah jika posting yang lengket ada di halaman pertama.
Solusinya adalah dengan mengurangi jumlah posting sticky untuk posting sticky yang merupakan bagian dari halaman pertama.
Saya harap ini akan membantu
sumber
Saya membersihkan kedua jawaban di atas menjadi satu sehingga tidak memuat WP_Query yang tidak perlu, memperbaiki jika lengket pada halaman pertama, mengurangi waktu untuk memproses informasi dengan kode lebih cepat bersih.
sumber