すばらしい質問です。WordPress 'cpage'
は、URLが/comment-page-1/
最後にあるときに設定されるクエリ変数にコメントページ番号を割り当てます。したがって、原因はredirect_canonical()
関数の192行目です/wp-includes/canoncial.php
。
if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
以来redirect_canonical()
、私たちは何ができるか、アクションが、代わりに呼ばれるように私たち自身の関数を挿入たちの機能が設定されていることですとしての機能が設定されます'cpage'
に問い合わせVARをfalse
呼び出し、redirect_canonical()
した後、セット'cpage'
、それが何だったかに背中を。WordPressがリダイレクトするのを防ぎます。
独自の関数を挿入するには、2つのフック'init'
などを呼び出す必要がある'template_redirect'
ため'init'
、次のdo_action()
コードを追加する内部のWordPressコアの後に呼び出されるようにフックを設定します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);
}
そしてもちろん、あなたはあなたの何かで何かをする必要があります'cpage'
。によって返された値を確認するかget_query_var('cpage')
、別のフックを追加して、私が行ったコメント固有のテンプレートを作成できます。これは、通常ロードされるのと同じ[comments].php
であるが、名前の最後にの代わりに.php
、つまりを使用して、テーマテンプレートファイルの外観を追加しますsingle[comments].php
。このフィルターの優先順位を11に設定していることに注意してください。使用するプラグインがフックの後に自分自身を追加する場合は、さらに大きな数に設定する必要がある場合があります。
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;
}
そして、それがすべてうまくいく証拠です!
(ソース:mikeschinkel.com)