Benutzerdefinierte Suche (Google) in WP integrieren möglich?

  • Guten Abend liebe Foren Gemeinde :)

    Ich hab da ein Problem bei dem ich nicht weiter komme. Ich möchte gerne die Benutzerdefinierte Suche in WordPress einbauen.
    Auf einer einfachen HTML Seite geht es ohne Probleme, etwa hier: SASH Land - Startseite
    Ist es nun auch möglich die Suche in mein Theme zu integrieren?

    Für die einfache HTML Seite nutze ich folgenden Code:

    Code
    Das Suchfeld
    
    
    <form action="" id="cse-search-box"><input type="hidden" name="cx" value="009895945714359777247:bmpfbe9rbgm" /><input type="hidden" name="cof" value="FORID:11" /><input value="" type="text" name="q" id="q" /><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=de"></script></form>
    
    
    action="" > mit dem leer lassen drückt man aus, das die Ergebnisse auf der selben Seite angezeigt werden
    Code
    Die Ergebnisse
    
    
    <p><div id="cse-search-results" align="center"></div> <script type="text/javascript">
      var googleSearchIframeName = "cse-search-results";
      var googleSearchFormName = "cse-search-box";
      var googleSearchFrameWidth = 780;
      var googleSearchDomain = "www.google.com";
      var googleSearchPath = "/cse";
    </script> <script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script></p>

    Unter WordPress hab ich erst mal das in die searchform.php geschrieben:

    PHP
    <form method="get" action="<?php bloginfo('url'); ?>/search.php" id="cse-search-box"><input type="hidden" name="cx" value="009895945714359777247:bmpfbe9rbgm" /><input type="hidden" name="cof" value="FORID:11" /><input value="Suche nach..." type="text" name="q" id="q" onfocus="if (this.value == 'Suche nach...') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Suche nach...';}" /><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=de"></script></form>

    Das onfocus bzw. onblur läuft an dieser Stelle schon mal nicht :( In die search.php hab ich den Code für die Ergebnisse eingegeben. Wenn ich nun etwas Suchen möchte kommt nur die Meldung 404, sprich ich komme nicht auf die Seite für die Suchergebnisse.

    Wo liegt denn nun mein Denkfehler? Ich hoffe ihr könnt mir Helfen! :cry:

    EDIT: Das mit onfocus bzw. onblur hat sich gegessen. Dieses Scripts musste man einfach weglassen: <script type="text/javascript" src="http://www.google.com/coop/cse/brand…rch-box&lang=de"></script>
    Die Suche läuft auch ohne dieses Script (bei meiner HTML Seite).

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ich würde sowas auf einem Seitentemplate (<- Doku, Forensuche) einbauen. Dort kannst du alles an HTML und JavaScript etc. einbauen was du möchtest. "action" bleibt leer, wie im Codebeispiel beschrieben. Im Backend legst du dann eine Seite an (ohne Inhalt), und weist dieser dieses Seitentemplate zu. Die search.php ist für die WP-interne Suche gedacht, nicht für externe Suchen, diese hat damit also gar nichts zu tun.

  • Nun, ich habe jetzt folgendes gemacht.

    Hab die cse.php angelegt:

    Die searchform.php hat dies stehen:

    Code
    <form method="get" action="" id="cse-search-box"><input type="hidden" name="cx" value="009895945714359777247:bmpfbe9rbgm" /><input type="hidden" name="cof" value="FORID:11" /><input value="Suche nach..." type="text" name="q" id="q" onfocus="if (this.value == 'Suche nach...') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Suche nach...';}" /></form>

    Hab eine neue Seite im Backend angelegt und die "cse" zugewiesen. Wenn ich mich auf dieser neuen Seite befinde und im Suchfeld was eingebe läuft alles. Wenn ich mich auf einer anderen Seite oder in einem Beitrag befinde klappt es aber nicht. Wie könnte man das jetzt ändern?

    Ich hab in der head.php die wp_list_pages und eben das include (TEMPLATEPATH . '/searchform.php'); stehen. Ich hätte auch ganz gern das die neue Seite nicht mit in der Liste auftaucht. Weil ohne eine Suchanfrage ist die Seite nicht zu gebrauchen, weil nichts drin steht. Kann man das irgendwie noch hinkriegen?

  • Wenn ich mich auf dieser neuen Seite befinde und im Suchfeld was eingebe läuft alles. Wenn ich mich auf einer anderen Seite oder in einem Beitrag befinde klappt es aber nicht.


    Klar, eben wegen dem action-Attribut. Dort muss die URL der cse-Seite stehen. Das machst du am besten mit der get_permalink()-Funktion:
    Template Tags/get permalink WordPress Codex

    PHP
    <form method="get" action="<?php echo get_permalink(123); ?>" id="cse-search-box">

    (Auf der cse-Seite funktionierts, weil dort action="" eben auf die cse-Seite verweist ;-))

    Zitat

    Ich hätte auch ganz gern das die neue Seite nicht mit in der Liste auftaucht.


    Wie kann ich bestimmte Seiten von der Auflistung ausschließen? « WordPress Deutschland FAQ

  • Klar, eben wegen dem action-Attribut. Dort muss die URL der cse-Seite stehen. Das machst du am besten mit der get_permalink()-Funktion:
    Template Tags/get permalink WordPress Codex

    PHP
    <form method="get" action="<?php echo get_permalink(123); ?>" id="cse-search-box">

    (Auf der cse-Seite funktionierts, weil dort action="" eben auf die cse-Seite verweist ;-))

    Klar versteh ich schon, ist auch einleuchtend. Hab nur nicht weiter an das get_permalink gedacht.

    Ok, großen Dank an dich, es klappt jetzt so wie ich es mir Vorstelle!
    Schon mal Frohe Weihnachten ;)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!