Suchergebnis erweitern

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 15 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

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.

Suchergebnis Beispiel

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(' &mdash; ');
	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(); ?>

Vielen Dank für den Kommentar von fym.

Von Frank Bültge

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.