Saya ingin memiliki satu posting di halaman depan saya (selalu yang terbaru), tetapi biarkan paging biasa berfungsi. Jadi halaman depan memiliki posting 1, halaman berikutnya harus memiliki posting 2-11 (1-10 juga baik-baik saja), kemudian 12-21 atau 11-20, dan seterusnya. Saya tahu saya dapat mengubah jumlah posting tergantung pada konteksnya , tetapi mengatur ini ke "1" di beranda berarti halaman selanjutnya juga hanya menampilkan satu posting.
Masalah utama saya adalah itu /page/2/
dan seterusnya berfungsi, tetapi /page/1/
selalu dialihkan ke beranda nyata /
,. Ini berarti posting 2-10 selalu dilewati, karena halaman 2 menunjukkan 11-20. Saya saat ini menyelesaikan ini dengan menautkan ke arsip saya, tetapi ini tidak ideal ketika Anda datang ke posting pertama tahun ini dan ada lebih sedikit posting dan tidak ada cara yang jelas untuk melanjutkan.
sumber
is_front_page()
denganis_archive()
atauis_category()
, saya pikir Anda bisa mendapatkan di mana Anda harus berada.Oke, mungkin ini cara yang aneh atau rumit untuk melakukan ini, tapi saya punya masalah yang sama (saya ingin menampilkan teks sambutan dan tiga posting terbaru dari kategori tertentu di halaman depan. Jadi saya lakukan:
terlihat seperti ini: http://hinek.de (halaman dalam bahasa Jerman, maaf)
Jika ini bisa menjadi jalan bagi Anda dan Anda memerlukan lebih banyak info atau contoh kode untuk templat halaman, komentar dan saya akan mengedit posting ini.
sumber
Saya berasumsi Anda menjalankan Wordpress 3.0.x?
Untuk hanya menampilkan satu posting (dalam kategori apa pun) di halaman depan itu mudah. Gunakan
query_posts('post_per_page=1')
dalamhome.php
file Anda alih-alih memohonget_template_part('loop')
.Untuk mengikuti metode paging normal setelah itu agak sulit. Dalam
loop.php
file Anda , saya sarankan meletakkan<?php global $paged; ?>
sebelum<?php if (have_posts()) : ?>
pernyataan, dan menggunakan$paged
variabel danquery_posts()
fungsi untuk memodifikasi kueri Anda sehingga itu menunjukkan posting yang tepat.loop.php
File Anda akan terlihat seperti ini (catatan: tidak diuji):Saya menggunakan
$paged - 1
hanya karena halaman 2 akan menampilkan posting 1 - 10, dan halaman 3 akan menampilkan posting 11 - 20, dan seterusnya.sumber
paged
parameter tidak akan merusak yang lain, sepertinext_posts_link
? Mungkin lebih baik untuk memodifikasi kueri dipre_get_posts
hook, jadi saya tidak membuat kueri baru? Dan ya, ini WP 3.next_posts_link
. Satu-satunya cara untuk mengetahuinya adalah dengan mencobanya, tentu saja.paged
parameter dipre_get_posts
hook,redirect_canonical
menendang dan ingin mengganti url denganpaged
parameter baru . Saya dapat menonaktifkan pengalihan dalam kasus ini, tetapinext_posts_link
menggunakan$paged
variabel global yang akan ditetapkan ke nilai baru, tetapi saya tidak tahu kode mana, jadi itu tidak benar.pre_get_posts
kail, jadi saya tidak bisa banyak membantu di sana. Selain itu, cobalah untuk memodifikasi$paged
variabel secara langsung (mis .:)$paged = $paged - 1)
jika Anda khawatirnext_posts_link()
.Pertanyaan ini agak lama, tetapi bagi mereka yang menemukan ini di era modern, Anda seharusnya tidak pernah memanggil query_posts . Dari kodeks Wordpress:
Sebagai gantinya, Anda harus menggunakan
pre_get_posts
hook di functions.php sebagai berikut:Namun, berhati-hatilah dalam beberapa kasus, (seperti menyesuaikan offset pos), menggunakan
pre_get_posts
kail dapat memotong-motong pagination Anda. Memperbaiki ini tidak terlalu sulit, tapi itu sesuatu yang harus diperhatikan. Ada contoh cara memperbaikinya di sini .sumber