Startseite → Plugins → Filialfinder für OpenStreetMap

Eigenes Plugin · WordPress + Bricks

Eine Standortkarte ohne Google-Maps-Schlüssel.

Ein Finder für Filialen, Showrooms oder Abholpunkte — gebaut auf Leaflet und OpenStreetMap, also ohne Google-Cloud-Konto, ohne hinterlegte Kreditkarte und ohne Abrechnung pro Kartenaufruf.

Version 1.0.2 GPL-2.0-or-later WordPress 6.0+ PHP 8.0+ Leaflet + OpenStreetMap Bricks-Element
eigenes Element

Ein eingebautes Bricks-Builder-Element

Der Finder ist kein Shortcode, den man in einen Container legt. Er ist ein vollwertiges Bricks-Element: ein eigener Platz in der Elementliste mit eigenem Symbol, dreizehn Bedienelemente im Panel und eine Karte, die live im Editor dargestellt und bei jeder Änderung neu gezeichnet wird. Für ein Team, das in Bricks arbeitet, ist das der Unterschied zwischen blindem Konfigurieren und sofort sichtbarem Ergebnis.

Wie so ein Element geschrieben wird — Fallstudie →

Was es tut

Ein Finder, den Sie selbst betreiben.

✓

Karte mit Markern, Adresssuche und „in meiner Nähe" — dazu ein Kategoriefilter und Clustering, sobald es viele Punkte werden.

✓

Funktioniert auch außerhalb von Bricks — derselbe Finder lässt sich per Shortcode in jedes Theme einbauen, und ein Generator stellt ihn zusammen.

✓

Standorte sind gewöhnliche Beiträge mit eigener Kategorie, die Website-Betreuerin legt sie also an wie alles andere — mit einer Karte direkt im Bearbeitungsfenster.

✓

Geokodierung im Stapel für auf einmal importierte Listen, plus eine Standortübersicht mit den ermittelten Koordinaten.

✓

Einstellungen in vier Reitern und ein Shortcode-Generator — eine geschlossene Liste von Optionen statt eines Felds für beliebigen Code.

Was ich vorher sage

Der öffentliche Geocoder von OpenStreetMap erlaubt eine Anfrage pro Sekunde und untersagt intensive Nutzung. Ein stark besuchter Shop braucht eine eigene Instanz oder einen bezahlten Anbieter — das sage ich vor dem Start, nicht nach der ersten Sperre.

Leaflet liegt im Plugin, statt von einem fremden CDN geladen zu werden. Die Seite geht nicht kaputt, weil jemand anderes einen Server abgeschaltet hat.
Wie es gebaut ist

So gebaut, dass es sich pflegen lässt.

Die Idee stammt aus einem Projekt für ein Unternehmen in den Niederlanden, bei dem eine Standortkarte ohne Google Maps funktionieren musste. Was ich dort über einen Betrieb mit vielen Standorten gelernt habe, kam hier als von Grund auf geschriebenes Plugin zurück.

Code, den ich vollständig kenne

Architektur, Benennung und Struktur sind hier entstanden, jede Änderung passiert also an der Quelle — eine neue Funktion oder eine Korrektur erfordert kein Raten, was jemand anderes gemeint hat. Bei einer dringenden Korrektur ist das der Unterschied zwischen einer Stunde und einer Woche.

Kein jQuery, kein npm, kein Build-Schritt

Das Frontend ist reines JavaScript, die Daten laufen über die REST-API statt über admin-ajax, und im Repository liegen genau die Dateien, die auf den Server kommen. Für eine Korrektur muss nichts kompiliert werden.

Alle Lesezugriffe hinter einer Klasse

Jede Abfrage läuft über ein Repository. Der Umstieg auf eine eigene Tabelle bei einigen tausend Standorten ist deshalb ein Klassentausch plus Migration — und kein Neuschreiben des Plugins.

Ein Geocoder mit Cache und Bremse

Koordinatenabfragen laufen über einen eigenen Proxy mit Cache und einer Begrenzung auf eine Anfrage pro Sekunde, genau wie es die Nutzungsbedingungen des Dienstes verlangen.

Gestaltung, die sich nicht mit dem Theme streitet

Das Stylesheet ist geteilt in eine Layout-Ebene, die immer gilt, und eine Optik, die sich mit einer Einstellung abschalten lässt. Die Bedienelemente erben die Typografie der Seite, und die Schaltflächen nehmen eine Klasse aus dem Theme an.

Was der Bau gelehrt hat

Drei Fallen, die am meisten Zeit gekostet haben.

Für jede oben beschriebene Entscheidung gibt es einen eigenen Test — die PHP- und JavaScript-Suiten laufen mit einem Befehl, ohne Datenbank und ohne WordPress-Installation. Keine davon hat die folgenden drei Dinge gefunden.

Das Element verschwand spurlos. Auf einer Seite, die aus einer Bricks-Inhaltsvorlage gerendert wurde, erschien es überhaupt nicht — kein HTML, kein PHP-Fehler, nichts in der Konsole. Das findet kein Unit-Test; gefunden hat es der Einsatz auf einer echten Website.

Eine Karte, die kaputt aussieht, aber nur leer ist. Ein Standardmittelpunkt nahe null landet im Golf von Guinea — flaches Blau, das jede und jeder als nicht geladene Kacheln liest. Eine Kleinigkeit, die mit einem Anruf endet, die Karte sei kaputt.

Mehrere hundert Tests ersetzen keinen einzigen Klick. Vier Bedienelemente im Builder waren tot, obwohl die komplette JavaScript-Suite durchlief. Deshalb gehört eine Liste manueller Prüfungen zum Release-Plan und bleibt kein guter Vorsatz.

Legen wir los

Brauchen Sie eine Standortkarte auf Ihrer Website?

Ich richte diesen Finder für Sie ein oder schreibe ein Bricks-Element für Ihren konkreten Fall. Schreiben Sie, wie viele Punkte es sind und woher die Liste kommt.

Ihren Fall beschreiben →

Oder per E-Mail: info@asymetria.com.pl