Bessere Suche und „Related Posts“-Anzeige in WordPress mit ElasticPress

Bei einem Gespräch im deutschsprachigen WordPress-Slack kam vor einiger Zeit die Sprache auf Elasticsearch, womit Suchen und Analysen durchgeführt werden können. Bernhard Kau hat kurz darauf den Beitrag Einrichtung von Elasticsearch in WordPress mit ElasticPress und Heroku geschrieben und gezeigt, wie Elasticsearch relativ einfach in eine WordPress-Installation integriert werden kann. Heute habe ich mich daran gemacht, die WordPress-Suche und die Anzeige von weiteren Artikeln in der Einzelansicht von Beiträgen auf Elasticsearch umzustellen.

Elasticsearch-Server mit AWS einrichten

Um einen Elasticsearch-Server einzurichten, gibt es verschiedene Wege – mit Heroku hat Bernhard einen im oben verlinkten Beitrag beschrieben. Ich habe mich für die Amazon Web Services (AWS) entschieden, da ich dort sowieso bereits ein Konto habe. Um das einzurichten, wird in der AWS Management Console aus der langen Liste mit Diensten im Bereich Analytics der Eintrag Elasticsearch Service gewählt und ein neuer Cluster angelegt.

Bei der anschließenden Wahl der Hardware für den Cluster habe ich die kleinstmöglichen Einträge gewählt, um erst mal im kostenlosen Kontingent zu bleiben (was offensichtlich nicht wirklich funktioniert hat, wenn ich mir die aktuelle (3. Oktober) AWS-Rechnung anschaue … Ich habe nun doch auf Heroku gewechselt). Bei der Access-Policy könnt ihr dann die IP-Adresse des Servers eintragen, auf dem eure Website läuft. Anschließend dauert es ein paar Minuten bis der Cluster aktiv ist und ihr die Endpoint-URL für das ElasticPress-Plugin nutzen könnt.

ElasticPress installieren und Module aktivieren

Das ElasticPress-Plugin gibt es zwar im Plugin-Directory, ich habe aber die Version von GitHub genommen, weil hier die Module mit dabei sind (eins davon ist Related Posts). Nachdem ihr das Plugin von GitHub heruntergeladen und installiert habt, findet ihr in der Navigation einen neuen Punkt ElasticPress. Beim ersten Aufruf dieses Punktes werdet ihr darauf hingewiesen, dass es ein Konfigurationsproblem gibt – das Problem ist, dass noch keine URL zu einem Elasticsearch-Cluster eingetragen wurde.

Nachdem ihr das behoben habt, könnt ihr durch einen Klick auf den entsprechenden Button den Index befüllen und die gewünschten Module aktivieren – die Einstellungsansicht seht ihr unten im Screenshot.

Die Settings-Seite von ElasticPress. (Screenshot: eigene Installation)
Die Settings-Seite von ElasticPress. (Screenshot: eigene Installation)

Dabei müsst ihr bei keinem der Module weitere Einstellungen vornehmen, damit sie ihren Dienst verrichten. Ich habe allerdings bei dem Modul Related Posts eine Anpassung vorgenommen:

Titel des „Related Posts“-Moduls anpassen

Der Titel des „Related Posts“-Moduls ist standardmäßig Related Posts in einer h3-Headline. Wenn nur der Titel verändert werden sollte, könnte er dank der eingesetzten Übersetzungsfunktionen relativ einfach angepasst werden. Ich möchte aber statt einer h3-Überschrift eine h2 haben, weshalb ich das HTML filtern muss. Das Plugin stellt einen solchen Filter glücklicherweise bereit (wobei der $posts-Parameter, der eigentlich die Beiträge als Array enthalten soll, bei mir NULL zurückgeliefert hat).

So habe ich mir mit einem str_replace()-Aufruf geholfen und folgendes in die functions.php geschrieben:

/** * Replace h3 headline for related posts with h2 * * @param $html * * @return mixed */ function fbn_elasticpress_related_posts_markup( $html ) { $html = str_replace( "<h3>Related Posts</h3>", "<h2>Das könnte euch auch interessieren</h2>", $html ); return $html; } add_filter( 'ep_related_html', 'fbn_elasticpress_related_posts_markup' );
Code-Sprache: PHP (php)

Und das wäre es auch schon. Wie bereits Bernhard abschließend in seinem Beitrag erwähnt hat, gibt es noch viele Möglichkeiten, wie man Dinge an der Elasticsearch-Integration verändern kann, aber ganz aktuell bin ich erst mal zufrieden damit 🙂

2 Reaktionen zu »Bessere Suche und „Related Posts“-Anzeige in WordPress mit ElasticPress«

  1. Hi,
    hört sich interesant an, aber wir sind ja in Deutschland.
    Dumme Frage, welche Daten werden da an good old Restwelt transferiert. Also was sagt der deutsche Datenschutz dazu?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert