Wenn man z.B. ein kostenpflichtiges WordPress Theme oder Plugin verkauft, möchte man umgehen, dass Nutzer diese unrechtmäßig verwenden können. Prinzipiell kann ein Theme oder Plugin beliebig oft installiert werden, ohne das jemand dafür eine Lizenz erworben hat.

Das lässt sich nur vermeiden bzw. einschränken, indem man eine Lizenzprüfung einbaut und der Nutzer einen Lizenzschlüssel eingeben muss um alle Theme- oder Plugin-Funktionalitäten freizuschalten. In der Regel hat man für 1 Installation, genau 1 Lizenzschlüssel zur Verfügung.

Soweit so gut. Doch dennoch kann das zu erhöhten Supportanfragen führen, insofern man denselben Lizenzschlüssel auf einer lokale Testinstallation sowie der produktiven WordPress Installation verwenden möchte. Bei jeder Aktivierung des Lizenzschlüssels, wird das in der Regel vom verbundenen Lizenzserver vermerkt. Die gleichzeitige Installation des Themes oder Plugins ist damit auf verschiedenen WordPress-Instanzen nicht möglich.

Das wiederum kann zu verärgerten Kunden und zu erhöhten Supportanfragen führen, da man Lizenzschlüssel auf Anfrage manuell deaktivieren muss.

Wie könnte man diese Problemchen besser lösen und eine WordPress Installation nur für lokale Testumgebungen, auch ohne die Eingabe eines Lizenzschlüssels erlauben?

Wie kann ich herausfinden ob es sich um eine lokale Entwicklungsumgebung handelt?

Grundsätzlich haben viele Entwicklungsumgebungen einiges gemeinsam. Zum Beispiel könnte die URL der Testinstallationlocalhost“ enthalten. Aber auch verschiedene Ports wie „:8080“ oder „:3306„, die am Ende der URL angehangen werden, sind oft Gemeinsamkeiten.

Eine lokale Entwicklungsumgebung einer WordPress-Installation kann stattdessen aber auch nur über eine feste IP-Adresse erreichbar sein.

Alle diese Indikatoren können wir dazu nutzen, um zu Prüfen ob es sich bei der WordPress-Installation um eine lokale Installation bzw. Testumgebung handelt. Die folgende PHP-Funktion wp_is_local_installation() tut genau das und kann für solche Zwecke sehr hilfreich sein:

Nun können wir unter Abfrage der WordPress Seiten-URL get_site_url() herausfinden, ob es sich bei der aktiven Installation um eine lokale Testumgebung oder eine produktive Webseite handelt. Unter Verwendung der oberen Funktion, können wir das nun wie folgt prüfen:

Es gibt Ausnahmen!

Dieser Weg ist ein guter Ansatz, um herauszufinden ob die aktive WordPress Installation eine lokale Entwicklungsumgebung ist. ABER … auch hier kann es Ausnahmen geben, welche nicht auf die Bedingungen der wp_is_local_installation() Funktion zutreffen. Ist das der Fall, dann kann man diese natürlich noch ergänzen.

Hinterlasse doch einfach mal dein Feedback und schreibe einen Kommentar, falls du Verbesserungsmöglichkeiten hast.