Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Nicht immer ist die Suche von WordPress erwünscht. Die eine oder andere Anwendung mit WordPress benötigt die Funktion nicht, auch wenn sie sicher aus meiner Sicht einen Mehrwert darstellt. In einigen Anforderungen soll sie trotzdem nicht präsent sein und so habe ich sie mit Zugriff auf zwei Hooks deaktiviert. Vorerst kann ich keine andere Stelle erkennen, wo man auf sie zugreifen könnte und in meinen Anwendungen klappt es so problemlos.
Der zweite Aufruf des Hook get_search_form ist eigentlich nur, um die Suche aus dem Frontend zu nehmen, daher sollte man die beiden Hooks nur starten, wenn man nicht im Admin ist: if ( !is_admin() ) .
Setzt man die Variable $error auf true, dann wird auf die Fehlerseite des Themes weiter geleitet, wenn nicht, dann bleibt man auf der Seite, von der aus eventuell die Suche gestartet wurde.
function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// to error
if ( $error == true )
$query->is_404 = true;
}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
Ergänzungen, Kritik oder Verbesserungen - her damit. Das Kommentarfeld steht wie immer offen und die Lösung freut sich, wenn sie verfeinert wird.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 980 Beiträge, 18722 Kommentare in 14 Kategorien und 464 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
6. April 2009 um 02:31
Super, passt, danke!
6. April 2009 um 08:35
Hatte mich immer schon gefragt, wie man das machen könnte. Das Suchformular rausnehmen ist eine Sache, aber es richtig zu deaktivieren eine andere.
6. April 2009 um 08:46
Hallo Frank,
super Tip
mehr muss man dazu nicht sagen!
6. April 2009 um 10:04
Das klingt praktisch für die Gästehaus-Seite, die ich betreue. Das ist eine recht statische Seite, wo eigentlich nie neue Inhalte kommen und die auch nur ~ fünf Seiten umfasst. Da ist eine Suche nicht ganz so sinnvoll.
Wenn ich damit die Ladezeit evtl. ein wenig herabsetzen kann, kommt mir das natürlich sehr zu gute.
Hast du sonst noch eine Idee, was man deaktivieren kann, wenn man WP als Mini-CMS und nur mit Pages nutzt? Mir fielen da z.B. RSS-Feeds ein. Diese hab ich einfach aus dem Header genommen, damit sie nicht mehr angezeigt werden. Erstellt werden sie dadurch aber trotzdem noch, oder?
Und kann man Plugins nur auf bestimmten Seiten laden lassen ohne das Plugin selbst zu verändern? Google Maps muss beispielsweise nur auf einer der Seiten geladen werden.
6. April 2009 um 10:10
Sorry, hab grade einen Beitrag gefunden, wo du genau das mit den RSS-Feeds erklärst. Danke dafür.
6. April 2009 um 11:14
Find ich auch, dass kann für manche Seiten (Portfolio ohne Blog) interessant sein, finde es super...
7. April 2009 um 08:34
Warum nicht einfach das Suchfeld aus der Oberfläche (den Templates) raus nehmen??
7. April 2009 um 08:59
@Claudia: weil die Suche dann trotzdem aktiv ist und genutzt werden kann, so zum Beispiel durch Google und Nutzer, die das System kennen.
10. April 2009 um 21:36
PERFEKT!!! Danke
13. April 2009 um 18:03
@FuNKeR: Wenn damit die Ladezeit effektiv verringert wird: Super! Ansonsten ist es doch nicht nötig, oder?
@Frank: Inwiefern nutzt denn zum Beispiel Google die in WordPress integrierte Suche? Davon have ich noch nie gehört. Klingt jedoch interessant, hast du dafür weitere Infos?
16. April 2009 um 21:35
@Frederik: WordPress nutzt Google nicht innerhalb des Systems, man kann es aber selber in das Blog integrieren, siehe Artikel.
1. Juni 2009 um 16:32
Danke, sowas hab ich gesucht
25. August 2010 um 04:30
Danke für die Anleitung. Ich habs gerade für meine Seite umgesetzt. Bei Google Analytics hatte ich gesehen, dass dort auch ohne Suchfeld auf die Suche zugegriffen wurde und auch für Crawler wollte ich den Zugang sperren, damit die nicht irgendetwas ungewollt indizieren.
15. September 2010 um 07:17
Hallo ich hatte die tage schon mal die frage gestellt wo genau ich das eintragen soll? so wie das da steht bringt das nichts
15. September 2010 um 09:06
@stefan: gehört in ein Plugin oder die functions.php des aktiven Themes.
15. September 2010 um 21:49
ok super vielen dank geht und endlich ist die suche aus..
17. Oktober 2010 um 13:10
Hi, danke für die ausführliche Anleitung!
24. Januar 2011 um 16:30
Habe ein kleines Problem...
ich bin leider ein richtiger Neuling in Sachen WordPress
Ich habe mir den Artikel einmal komplett durchgelesen, bin aber zu keiner Lösung gekommen
Ich habe hier nun einmal den Code meines Headers (dort befindet sich das Suchfeld) und der Functions-Datei eingebunden...
Ich wäre über Eure Hilfe Sehr erfreut!!!
Viele Grüße
header.php
<a href="">
at <a href=""> Search for posts
<form method="get" id="searchform" action="/">
Find results for <input type="text" value="" name="s" id="s" />
at <a href=""> Cancel search
Posts Tagged ''
at <a href=""> Search for posts
<form method="get" id="searchform" action="/">
Find results for <input type="text" value="" name="s" id="s" />
at <a href=""> Cancel search
<form method="get" id="searchform" action="/" style="display:block;">
Results for <input type="text" value="" name="s" id="s" />
at <a href="">
<a href="">
<a href=""> Search for posts
<a href="">
Search for posts
<form method="get" id="searchform" action="/">
Find results for <input type="text" value="" name="s" id="s" />
at <a href=""> Cancel search
functions.php
'',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
));
}
function dd_get_page_link_by_slug($page_slug) {
$page = get_page_by_path($page_slug);
if ($page) :
return get_permalink( $page->ID );
else :
$page = get_page_by_path($page_slug.'s');
if ($page) :
return get_permalink( $page->ID );
else :
return "#";
endif;
endif;
}
function dd_comment_link() {
global $post;
if($post->comment_count==0){
$o = "";
$o .= $post->comment_count;
$o .= " comments";
} else if($post->comment_count==1){
$o = "";
$o .= $post->comment_count;
$o .= " comment";
} else {
$o = "";
$o .= $post->comment_count;
$o .= " comments";
}
echo $o;
}
function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
// to error
if ( $error == true )
$query->is_404 = true;
}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
?>
24. Januar 2011 um 18:12
@Julian: du musst den Code aus dem Tutorial bspw. in die functions.php des Themes legen, nicht in ein Template für die Ausgabe.
29. Oktober 2011 um 15:36
hallo zusammen,
ich habe versucht, die function in functions.php von dem std. theme twenty eleven zu packen, aber das klappt nicht. das suchfeld ist immer noch da.
ich hab leider nicht so viel ahnung von solchen codes und wollte fragen, an welche stelle ich die function genau packen muss?
bitte helft mir!
gruß,
eckhard
31. Oktober 2011 um 01:56
@Eckhard: Die Suchfunktion sollte dann weg sein, die optische Suche ist natürlich noch da; dazu musst du ins Theme eingreifen oder via CSS ausblenden.
30. November 2011 um 17:30
Hallo an alle. dies ist mein erster Forum Eintrag.
mein Problem ist das ich auf wp das plugin qTranslate installiert habe und wenn ich nun auf die Suche was eingebe findet er nur was unter der Hauptsprache.
Bsp. die Seite ist zweisprachig de und en. Hauptsprache ist en.
wenn ich nun auf de klicke und da was in die suche eingebe kommt eine Meldung "Keine Seite gefunden. Etwas anderes Suchen?" obwohl dieser Begriff in dieser Sprache vorhanden ist. kann mir da bitte einer weiter helfen?