Inhalt:
- more-Tag
- Archive Query und Reset WP-Query
- the_title Tag zerlegen
- content filtern für CSS-Erweiterung
- Brotkrumen-Navigation ohne Plugin
- Widgets erweitern/einfach
- Suchergebnis bereichern
Die Suche von WordPress lässt sich mit einer Vielzahl von Plugins aufwerten, in der Performance stören oder bunter gestalten. Für jeden Wunsch findet sich sicher etwas. Ich möchte aber im folgenden einen kleinen Codeschnipsel vorstellen, der nicht derartige Aufgaben erfüllt, sondern er gibt dem Anwender lediglich die Information, wie viele Beiträge hat die Suche gefunden. Mit dieser kleinen aber feinen Hilfe, wie ich finde, bekommt der Suchende einen Mehrwert.
Wie so ein Ergebnis aussehen kann, das zeigt der folgende Screenshot. Der Code gibt lediglich die Zahl der gefundenen Artikel aus und kann natürlich beliebig angepasst und formatiert werden.
Um Das Ergebnis dem Suchenden zu präsentieren nutze ich als Lösung einfach einen Query von WordPress, quasi einen extra Loop. Diesen Loop definiere ich neu und gebe vor, dass alle (-1
) Einträge genutzt werden sollen. Wird der Parameter showposts
nicht mit -1
übergeben, so nutzt WordPress den Wert, der in den Einstellungen für die Ausgabe im Frontend genutzt wird.
Die Funktion wp_specialchars
nutze ich nur zum Filtern, so dass keine XSS-Lücke entsteht und trotzdem der Suchbegriff mit in die Ausgabe einbezogen werden kann. Der Code ist einfach und überschaubar – experimentiert damit. Ich freue mich auch über Verbesserungen und bessere Nutzwerte.
<h2>Ergebnisse der Suche<br /><small>
<?php /* Search Count */
$allsearch =& new WP_Query("s=$s&showposts=-1");
$key = wp_specialchars($s, 1);
$count = $allsearch->post_count;
_e('Begriff: ');
echo $key;
_e(' — ');
echo $count . ' ';
_e('Artikel'); wp_reset_query(); ?></small></h2>
Der Code gehört am besten in die search.php
des verwendeten Themes. Sollte die Datei nicht vorhanden sein, dann wird in der Regel die Suche über die index.php
mitbehandelt. Um die Suche aber für Nutzer extra und zielsicherer zu gestalten, empfiehlt sich das eigene Template.
Im Loop mit $wp_query->found_posts
Das obige Beispiel soll die Funktion verdeutlichen, soll aber nicht dafür sorgen, dass man mehrere Loops im Template nutzt. Im folgenden ein einfaches Beispiel für das Template search.php, um die Anzahl der Suchergebnisse auszugeben und nur einen Loop im Template zu haben.
<?php get_header();?>
<h2>Ergebnisse der Suche<br /><small><?php echo $wp_query->found_posts; ?> Artikel</small></h2>
<?php if (have_posts()) { while (have_posts()) : the_post(); ?>
<div class="post" id="post-<?php the_ID(); ?>">
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_excerpt(); ?>
</div>
<?php endwhile; } else { ?>
<p><?php _e('Nichts gefunden, was den Suchkriterien entspricht.', 'basis'); ?></p>
<?php } ?>
<?php get_footer(); ?>