Saya perlu memiliki jumlah posting yang berbeda per halaman pada halaman pertama dan halaman lainnya.
Sebagai contoh, inilah yang saya butuhkan
- Total posting: 6
- Halaman pertama: menampilkan 3 posting
- Halaman berikut: menampilkan 2 posting per halaman
Ini kode saya:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$fp_limit = 3; // first page limit
$limit = 2; // following page limit
$offset = 0; // default offset
if( $paged == 1 ) {
$limit = $fp_limit;
} else {
$offset = $fp_limit + ( ($paged - 2) * $limit );
}
$args = array(
'post_type' => 'my_post_type',
'post_status' => 'publish',
'offset' => $offset,
'posts_per_page' => $limit,
'caller_ get_ posts' => -1, // remove sticky post
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'my_taxo',
'field' => 'slug',
'terms' => array('slug1', 'slug2', 'slug3')
)
)
);
$my_query = null;
$my_query = new WP_Query($args);
// basic loop
if( $my_query->have_posts() ) :
while ($my_query->have_posts()) : $my_query->the_post();
...
endwhile; endif; // archive loop
if (function_exists('wp_pagenavi')){ wp_pagenavi( array( 'query' => $my_query ) ); }
wp_reset_query();
Pada halaman pertama dalam arsip, kode ini mengasumsikan:
Nah, total 6 posting dan 3 posting per halaman. Jadi saya perlu 2 halaman arsip dan pagination yang saya berikan kepada Anda adalah:
[1] [2]
Namun, setiap halaman lain dalam arsip kode mengasumsikan:
Nah, total 6 posting dan 2 posting per halaman. Jadi saya perlu 3 halaman arsip dan pagination yang saya berikan kepada Anda adalah:
[1] [2] [3]
Perlu sedikit bantuan untuk memperbaikinya.
custom-post-types
loop
pagination
norixxx
sumber
sumber
'caller_ get_ posts'
berisi spasi dan tidak valid. Kedua, sudah usang. Gunakanignore_sticky_posts
sebagai gantinya.Jawaban:
EDIT - JAWABAN DIREVISI
Saya sedang mengerjakan solusi lain yang sebenarnya lebih baik dari jawaban aslinya. Ini tidak melibatkan permintaan khusus dan saya pikir untuk semua tujuan, jawaban asli saya dapat dijatuhkan tetapi disimpan untuk tujuan informasi
Saya masih yakin Anda ada di beranda dan juga akan memperlakukan ini seperti itu. Jadi ini solusi baru saya
LANGKAH 1
Hapus kueri khusus dari beranda dan ganti dengan loop default
LANGKAH 2
Gunakan
pre_get_posts
untuk mengubah kueri utama untuk menambahkan taksonomi khusus Anda ke kueri utama untuk ditampilkan pada halaman beranda.LANGKAH 3
Sekarang, dapatkan
posts_per_page
opsi yang diatur dari ujung belakang (yang saya asumsikan 2) dan juga mengatur yang Andaoffset
akan gunakan. Itu akan menjadi1
karena Anda akan membutuhkan 3 posting di halaman satu dan 2 di sisanyaLANGKAH 4
Di halaman satu, Anda harus menambahkan
offset
untukposts_per_page
menambahkan hingga 3 untuk mendapatkan tiga posting Anda di halaman satu.LANGKAH 5
Anda harus menerapkannya
offset
ke semua halaman berikutnya, jika tidak, Anda akan mendapatkan pengulangan posting terakhir halaman di halaman berikutnyaLANGKAH 6
Terakhir, Anda perlu mengurangi ofset Anda dari yang
found_posts
lain pagination Anda pada halaman terakhir akan salah dan memberi Anda404
kesalahan karena posting terakhir akan hilang karena jumlah posting yang salahCATATAN: Bagian kode ini rusak pagination pada halaman pencarian. Ini sekarang sudah diperbaiki, lihat kode yang diperbarui
BERSAMA
Ini adalah bagaimana kueri lengkap Anda akan terlihat seperti itu harus masuk ke functions.php
sumber
Saya tahu ini dari 1000 tahun yang lalu, tetapi solusi lain untuk orang lain yang mencari solusi ini saat menggunakan kueri khusus, berikut adalah cara melakukannya. Dalam contoh ini halaman 1 membutuhkan 10 posting dan setiap halaman berikutnya membutuhkan 9.
dan kemudian dalam array gunakan ini:
Sekarang kamu baik untuk pergi.
sumber