Code<form method="[B][COLOR=Red]get[/COLOR][/B]" id="searchform" action=""> <input type="text" value="" [COLOR=#ff0000][B]name="s"[/B][/COLOR] id="s" /> <input type="submit" id="searchsubmit" /> </form>So sieht ein übliches Formular aus (siehe auch Codex). Methode ist "Get", der Parameter "s" hält die Query. Eine Suchergebnisseite hat folgende URL:
die nächste Seite folgende URL:
bzw ohne Permalinks (vermutlich, hab grad keine Seite ohne Permalinks da)
Wenn das bei dir nicht so ist, dann teile uns bitte mit, wie es bei dir aussieht. Ein Link zum Blog wäre evtl. auch hiflreich.
Der Bestandteil "&s=Suchbegriffe" war in meinem Querystring einfach nicht vorhanden. Ich habe ihn jetzt aber selber drangehängt, damit ich die Suchbegriffe highlighten kann (Code der entsprechenden Funktion s.u.).
Nachdem die Suchergebnisse aber auch schon vorher (also ohne Übergabe ber GET) auf mehrere Ergebnisseiten verteilt angezeigt wurden, werden diese jetzt also anscheinend doppelt übergeben. Ich weiß aber nicht, woher die Datenbankabfrage diese bekommt - alle globalen Variablen waren schließlich ursprünglich leer ...
function wp_pagenavi($before = '', $after = '', $prelabel = '', $nxtlabel = '', $pages_to_show = 10, $always_show = false)
{
global $request, $posts_per_page, $wpdb, $paged, $s, $wp_rewrite;
$indicator=$wp_rewrite->using_mod_rewrite_permalinks()?'?':'&';
$searchterms=$s?$indicator.'s='.urlencode($s):'';
if(empty($prelabel))$prelabel = '«';
if(empty($nxtlabel))$nxtlabel = '»';
$half_pages_to_show = round($pages_to_show/2);
if(!is_single()) {
if(!is_category()) {
preg_match('#FROM\s(.*)\sORDER BY#siU', $request, $matches);
}
else {
preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches);
}
$fromwhere = $matches[1];
$numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");
$max_page = ceil($numposts / $posts_per_page);
if(empty($paged))$paged = 1;
if($max_page > 1 || $always_show) {
echo "$before <div class=\"Nav\"><span>Seiten ($max_page): </span>";
if($paged >= ($pages_to_show-1))echo '<a href="'.str_replace($searchterms,'',get_pagenum_link()).$searchterms.'" title="Erste von '.$max_page.' Ergebnisseiten" >« Erste</a> ... ';
echo '<b title="Vorige Ergebnisseite">';
str_replace($searchterms,'',previous_posts_link($prelabel)).$searchterms; // Label, Max number of pages (default 0)
echo '</b>';
for($i = $paged - $half_pages_to_show; $i <= $paged + $half_pages_to_show; $i++) {
if($i >= 1 && $i <= $max_page) {
if($i == $paged) {
echo "<strong class=\"on\" title=\"aktuelle Ergebnisseite\">$i</strong>";
}
else {
echo ' <a href="'.str_replace($searchterms,'',get_pagenum_link($i)).$searchterms.'" title="'.$i.'. von '.$max_page.' Ergebnisseiten">'.$i.'</a> ';
}
}
}
echo '<b title="Nächste Ergebnisseite">';
str_replace($searchterms,'',next_posts_link($nxtlabel, $max_page)).$searchterms; // Label, Max number of pages (default 0)
echo '</b>';
if(($paged+$half_pages_to_show) < ($max_page)) {
echo ' ... <a href="'.str_replace($searchterms,'',get_pagenum_link($max_page)).$searchterms.'" title="Letzte von '.$max_page.' Ergebnisseiten">Letzte »</a>';
}
echo "</div> $after";
}
}
}
Alles anzeigen