Gute Frage! WordPress weist Ihre Abfrageseitennummer der Abfragevariablen zu, 'cpage'
die festgelegt wird, wenn Ihre URL /comment-page-1/
am Ende steht. Ihr Schuldiger liegt also in der redirect_canonical()
Funktion, Zeile 192 von /wp-includes/canoncial.php
.
if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
Da die redirect_canonical()
Funktion als Aktion festgelegt wird, können wir stattdessen unsere eigene Funktion einfügen, die aufgerufen werden soll. Lassen Sie unsere Funktion die 'cpage'
Abfrage var auf setzen false
, aufrufen redirect_canonical()
und dann auf das 'cpage'
zurücksetzen, was sie war. Dadurch wird verhindert, dass WordPress auf Sie umleitet.
Um Ihre eigene Funktion einzufügen, müssen Sie die beiden Hooks aufrufen 'init'
und 'template_redirect'
so den 'init'
Hook einstellen, der nach dem do_action()
WordPress-Kern aufgerufen werden soll, der Folgendes hinzufügt 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);
}
Dann müssen Sie natürlich etwas mit Ihrem tun 'cpage'
. Sie können entweder nach dem von zurückgegebenen Wert suchen get_query_var('cpage')
oder einen weiteren Hook hinzufügen, um eine kommentarspezifische Vorlage zu erstellen, wie ich es getan habe. Es wird eine Suche nach einer Designvorlagendatei hinzugefügt, die dieselbe enthält, wie sie normalerweise geladen wird, jedoch mit [comments].php
am Ende des Namens anstelle von .php
, dh single[comments].php
. Beachten Sie, dass ich für diesen Filter die Priorität 11 festgelegt habe. Möglicherweise müssen Sie eine noch größere Zahl festlegen, wenn sich ein von Ihnen verwendetes Plugin nach Ihrem Hook selbst hinzufügt:
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;
}
Und hier ist der Beweis, dass alles funktioniert!
(Quelle: mikeschinkel.com )