searchform.php / get_search_form

  • Hallo Zusammen!

    Ich würde gern eine eigene searchform.php-Datei anlegen, damit ich den Code besser kontrollieren kann. Im codex ist leider noch nicht viel dazu findbar. Daher meine Frage an die Profis :mrgreen: O.K., mein Problem:

    Aus der Datei wp-includes/general-template.php wird folgender Code eingefügt:

    PHP
    $form = '<form method="get" id="searchform" action="' . get_option('home') . '/" >
    	<label class="hidden" for="s">' . __('Search for:') . '</label>
    	<div><input type="text" value="' . attribute_escape(apply_filters('the_search_query', get_search_query())) . '" name="s" id="s" />
    	<input type="submit" id="searchsubmit" value="'.attribute_escape(__('Search')).'" />
    	</div>
    	</form>';


    Um die Funktionalität zu prüfen habe ich genau das genommen und in eine searchform.php gelegt.

    Leider werden bei der Ausgabe die wp-Tags nicht gefüllt. Was mache ich da falsch?
    Anzeige WP-Standard (ohne searchform.php):

    HTML
    <form method="get" id="searchform" action="http://localhost:8888/testblog/" >
      <label class="hidden" for="s">Search for:</label>
      <div><input type="text" value="" name="s" id="s" />
         <input type="submit" id="searchsubmit" value="Search" />
      </div>
    </form>

    »Meine« Ausgabe:

    HTML
    <h2>Suche</h2>
    <form method="get" id="searchform" action="" >
      <label class="hidden" for="s"></label>
      <div>
         <input type="text" value="" name="s" id="s" />
         <input type="submit" id="searchsubmit" value="" />
      </div>
    </form>

    Ich freue mich auf Hinweise und bedanke mich bereits jetzt schon für eine evtl. Hilfe!

    Andreas

    Einmal editiert, zuletzt von formspiel (5. Januar 2009 um 16:59)

    • 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

  • Na gut, dann antworte ich mir mal selber:

    PHP
    <form method="get" class="searchform" action="<?php bloginfo('home'); ?>/">
    <fieldset>
        <legend>fsp_Search</legend>
        <input type="text" value="<?php echo $search_text; ?>" name="s" id="s"  />
        <input type="hidden" id="searchsubmit" />
    </fieldset>
    </form>

    Sollte funktionieren.

  • Hallo formspiel, danke das du dir selbst geantwortet hast:-D
    Dabei habe ich auch gleich etwas gelernt. Das mit der extra searchform ist wirklich praktisch, dann bleibt der Code auch strict, was in der "original" Fassung leider nicht ist.
    Da sag noch mal jemand das Selbstgepräche die ersten Anzeichen von Vereinsamung wären... ts
    Gruß

    Was mir noch aufgefallen ist, das du vielleicht escape filter drin lassen solltest, zwecks Sicherheit und so...
    Ach ja, um die Sprachdatei zu nutzen kannst du in dem legend tag folgendes eintragen <?php _e('Search for:'); ?>

    Einmal editiert, zuletzt von Frika (14. Februar 2009 um 16:49)

  • Hallo Frika,

    eben, dass mit dem strict war auch der Hintergrund. Ich finde den HTML-Output von WP grausam.

    Danke für die Anmerkungen, das werde ich bei Gelegenheit noch übernehmen.


    Viele Grüße Andreas

  • Späte Antwort, aber vielleicht hilfts ja noch dem einen oder anderen: in deinem Code benutzt du ausnahmslos Funktionen ohne direkte Ausgabe und es fehlen sämtliche echo-Anweisungen. Also PHP wird ausgeführt, aber die Inhalte der Variablen verschwinden im Nirvana. ;-)

  • Hi MarX,

    Danke für die Antwort. Ich bastle an meinem ersten WP-Template. Leider fehlt (noch) die Erfahrung für alle Details.

    Was müsste ich denn konkret noch ändern? Hier nochmals der Code, der aktuell zum Einsatz kommt:

    PHP
    <?php $search_text = "Type and hit enter..."; ?>
    <form method="get" class="searchform" action="<?php bloginfo('home'); ?>/">
    <fieldset>
    	<input type="text" value="<?php echo $search_text; ?>" name="s" id="s" onblur="if (this.value == '') {this.value = '<?php echo $search_text; ?>';}" onfocus="if (this.value == '<?php echo $search_text; ?>') {this.value = '';}" />
    	<input type="hidden" id="searchsubmit" />
    </fieldset>
    </form>

    Änderungen von Frika: <?php _e('Search for:'); ?> und attribute_escape einfügen.

    Vielen Dank für die Anregungen!

    Andreas

  • Ich nehm nochmal den Code aus deinem anderen posting:

    PHP
    <h2>Suche</h2>
    <form method="get" id="searchform" action="<?php [COLOR="Red"]echo [/COLOR]get_option('home'); ?>" >
        <label class="hidden" for="s"><?php _[B][COLOR="#ff0000"]e[/COLOR][/B]('Search for:'); ?></label>
        <div>
            <input type="text" value="<?php [COLOR="Red"]echo [/COLOR]attribute_escape(apply_filters('the_search_query', get_search_query())); ?>" name="s" id="s" />
            <input type="submit" id="searchsubmit" value="<?php[COLOR="Red"]echo [/COLOR] attribute_escape(__('Search')); ?>" />
        </div>
    </form>


    Im PHP-Code ist das echo nciht nötig, da du eine Stringverkettung machst und den ganzen String in eine Variable schreibst.

Jetzt mitmachen!

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