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 dalam redirect_canonical()
fungsi, baris 192 dari /wp-includes/canoncial.php
.
if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
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 query false
, memanggil redirect_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 setelah do_action()
inti WordPress di dalam yang menambahkan redirect_canonical()
:
add_action('init','yoursite_init',11); //11=lower priority
function yoursite_init() {
remove_action('template_redirect','redirect_canonical');
add_action('template_redirect','yoursite_redirect_canonical');
}
add_action('template_redirect','yoursite_redirect_canonical');
function yoursite_redirect_canonical($requested_url=null, $do_redirect=true) {
$cpage = get_query_var('cpage');
set_query_var('cpage',false);
redirect_canonical($requested_url, $do_redirect);
set_query_var('cpage',$cpage);
}
Maka tentu saja Anda perlu melakukan sesuatu dengan Anda 'cpage'
. Anda dapat memeriksa nilai yang dikembalikan oleh get_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
, yaitu single[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:
add_filter('single_template','yoursite_single_template',11);
function yoursite_single_template($template) {
if (get_query_var('cpage'))
$template = str_replace('.php','[comments].php',$template);
return $template;
}
Dan inilah buktinya bahwa semuanya bekerja!
(sumber: mikeschinkel.com )