Saya ingin memiliki halaman terpisah untuk komentar pada sebuah posting, sehingga halaman ini: /2011/02/post-name/
hanya menunjukkan posting dan kemudian Anda mengklik tautan untuk melihat komentar, membawa Anda ke halaman seperti ini:/2011/02/post-name/comment-page-1/
Saya kemudian akan memeriksa URL untuk melihat apakah "comment-page-x" ada di dalamnya, dan menampilkan halaman secara berbeda jika demikian (hapus posting, jadi orang tidak perlu menggulir melewati itu setiap waktu, dan juga gaya hal-hal yang agak berbeda).
Ini akan berhasil, tetapi WordPress mengalihkan comment-page-1
ke halaman posting - saya perlu tetap comment-page-1
di URL.
Apakah ini mungkin? Bagaimana saya bisa melakukannya? Terima kasih!
Jawaban:
Pertanyaan bagus! WordPress memberikan nomor halaman komentar Anda ke kueri var
'cpage'
yang ditetapkan ketika URL Anda ada/comment-page-1/
di akhir. Jadi pelakunya adalah dalamredirect_canonical()
fungsi, baris 192 dari/wp-includes/canoncial.php
.Karena
redirect_canonical()
fungsi akan ditetapkan sebagai tindakan yang dapat kita lakukan adalah memasukkan fungsi kita sendiri untuk dipanggil, minta fungsi kita mengatur'cpage'
var queryfalse
, memanggilredirect_canonical()
, dan kemudian mengatur'cpage'
kembali ke apa itu sebelumnya; yang akan membuat WordPress tidak mengarahkan Anda.Untuk memasukkan fungsi Anda sendiri, Anda perlu memanggil dua hook
'init'
dan'template_redirect'
seperti itu jadi pastikan untuk mengatur'init'
hook untuk dipanggil setelahdo_action()
inti WordPress di dalam yang menambahkanredirect_canonical()
:Maka tentu saja Anda perlu melakukan sesuatu dengan Anda
'cpage'
. Anda dapat memeriksa nilai yang dikembalikan olehget_query_var('cpage')
atau Anda dapat menambahkan kait lain untuk memungkinkan Anda membuat templat khusus komentar yang merupakan apa yang saya lakukan. Ini akan menambahkan tampilan untuk file templat tema dengan yang sama seperti yang biasanya dimuat tetapi dengan[comments].php
di akhir nama bukan.php
, yaitusingle[comments].php
. Perhatikan bahwa saya menetapkan prioritas untuk filter ini menjadi 11; Anda mungkin perlu mengatur ke jumlah yang lebih besar jika plugin yang Anda gunakan menambah sendiri setelah hook Anda:Dan inilah buktinya bahwa semuanya bekerja!
(sumber: mikeschinkel.com )
sumber
functions.php
file tema Anda atau dalam.php
file plugin yang mungkin Anda tulis." Tapi Anda mengatakan itu tidak berhasil? Apa sebenarnya yang tidak dilakukannya? Sudahkah Anda meletakkanecho "Test"; exit;
pernyataan di masing-masing fungsi untuk memastikan kaitnya menyala? Apakah Anda memiliki plugin yang mungkin bertentangan? Apakah Anda mencoba mengubah11
di dua tempat menjadi100?
Apakah Anda memasukkan semua kode? Apakah Anda membuat file templat tema yang disebutsingle[comments].php
?