Als nächstes wollen wir eine kleine Suche für unseren Blog bauen. Dazu werden wir als erstes ein Suchformular in unserer sidebar.php einbauen:
<h2>Suche</h2> <p> <form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s" /> <input type="submit" id="search_submit" value="Suchen" /> </form> </p> <h2>Über diesen Blog</h2> <p class="mini_about"> Hallo, mein Name ist Christian und du siehst hier das Tutorial Template aus dem <a href="http://wordpress.lernenhoch2.de/handbuch/">Wordpress Template Tutorial</a> auf <a href="http://lernenhoch2.de/">Lernen²</a> </p> <h2>Kategorien</h2> <ul> <?php wp_list_categories('orderby=name&order=ASC&title_li='); ?> </ul> <h2>Archiv</h2> <ul> <?php wp_get_archives('type=monthly'); ?> </ul> <h2>Blogroll</h2> <ul> <?php wp_list_bookmarks(); ?> </ul>
Dieses Suchformular reicht theoretisch schon aus, um die Ergebnisse anzuzeigen, denn WordPress nutzt dafür einfach die Fallback-Template-Datei index.php. Aber wir wollen dem Besucher auch anzeigen, dass seine Suche ausgeführt wurde (und für welche Eingabe die Suche war). Deshalb legen wir jetzt die Datei search.php an:
search.php
<?php get_header(); ?> <div id="main"> <?php if (have_posts()) : ?> <p class="info">Deine Suchergebnisse für <strong><?php echo $s ?></strong></p> <?php while (have_posts()) : the_post(); ?> <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> <div class="entry"> <?php the_content(); ?> </div> <?php endwhile; ?> <p align="center"><?php next_posts_link('« Ältere Einträge') ?> | <?php previous_posts_link('Neuere Einträge »') ?></p> <?php else : ?> <h2>Leider nichts gefunden</h2> <?php endif; ?> </div><!-- main --> <div id="sidebar"> <?php get_sidebar(); ?> </div><!-- sidebar --> <?php get_footer(); ?>
Erklärung:
Die Search.php unterscheidet sich nicht sonderlich von der index.php mit einer entscheidenden Ausnahme: Wir prüfen ob für die Suchphrase überhaupt Artikel gefunden wurden (Zeile 4), ist das nicht der Fall wird der Besucher in Zeile 17 darauf hingewiesen. Ausserdem geben wir in Zeile 5 die Suchphrase aus, die wir in der Variable „$s“ abgelegt haben. Zeile 14 ist dazu da, einen „Vor-“ und „Zurück“-Link auszugeben, damit man mehr als 10 Artikel (oder wieviele im Backend eingetragen wurden) anschauen kann.
Natürlich kann man mit der Suchergebnisseite noch viel mehr anstellen, z.b. häufige oder ähnliche Suchen anzeigen (nur über Plugins) oder Tags ausgeben, die der Suchphrase entsprechen. Doch für die meisten Blogger dürfte unsere Funktionalität ausreichen.