Ein guter Tipp für alle Blogger zum Thema Reisen und Tourismus: wer möchte nicht auch die jeweils aktuellen Reisewarnungen zum jeweiligen Reiseland anbieten?
Update 13.01.2022: Das WordPress Plugin „PHP Everywhere“ funktioniert nach dem Update auf Version 3.0 nicht mehr wie zuvor. Die Seite zeigt lediglich noch den Shortcode [php_everywhere] an, der Code wird nicht mehr ausgeführt. Wir haben stattdessen das WordPress Plugin „Insert PHP Code Snippet“ installiert. Damit läßt sich der Code dann wieder einbetten über einen neuen Shortcode, den das Plugin bereitstellt.
Update 30.7.2021: Änderungen an der Open Data Schnittstelle ab voraussichtlich Ende September 2021 angekündigt.
Update 22.4.2021: ich habe den Code etwas abgeändert, da die Performance nicht so optimal war. Das Select-Feld der Länder habe ich nun statisch als HTML-Formular eingebaut anstatt diese Select-Options auch dynamisch aus dem REST Call zu laden. Diese Länder-IDs und die Länder-Bezeichnungen ändern sich ja praktisch nie. Also werden nun lediglich nach der Auswahl eines Landes im Formular per REST Call die Daten dieses Landes eingelesen aus der Schnittstelle des Auswärtigen Amts. So ist das nun wesentlich schneller.
Open Data Schnittstelle des Auswärtigen Amts
Das Auswärtige Amt bietet eine Open Data Schnittstelle an, mit der man ohne großen Aufwand die zum Reiseland passenden Reise- und Sicherheitshinweise darstellen kann.
Wichtiger Hinweis: Das Auswärtige Amt gestattet die Übernahme der Daten durch die Schnittstelle unter bestimmten Nutzungsbedingungen, die einzuhalten sind. Wendet euch zunächst mit eurer Anfrage and www.diplo.de/kontakt. Ihr erhaltet dann Instruktionen wie die Technische Dokumentation.
WordPress-Plugin „Insert PHP Code Snippet“
Hier mein Beispiel, wie ich die Daten über die Schnittstelle reinlese:
Ich habe das WordPress-Plugin „Insert PHP Code Snippet„ installiert. Im Plugin habe ich ein neues PHP Snippet „Reisewarnungen“ angelegt. Der Snippet Short Code hierzu lautet dann so: [xyz-ips snippet=“Reisewarnungen“]
Dann habe ich eine neue Seite im WordPress angelegt mit einem Titel wie etwa „Reise- und Sicherheitshinweise des Auswärtigen Amts zu Italien“. In der Seite wird der Shortcode [xyz-ips snippet=“Reisewarnungen“] eingesetzt.
Mein Code in Insert PHP Code Snippet: hiermit lese ich die Reise- und Sicherheitshinweise des Auswärtigen Amts aus:
<style> html {scroll-behavior: smooth;} #aktuelles { background-color:#faeeeb; } #aktuelles * { font-size:110% !important; } h2 #Aktuelles { font-size:x-large !important; color:red; background-color:#faeeeb; display:block; } </style> <form id="reisewarnungSelector"> <select id="countrySelect" name="country" style="font-size:125%;"> <option value="204692">Afghanistan</option><option value="216248">Albanien</option><option value="219044">Algerien</option><option value="224898">Andorra</option><option value="208118">Angola</option><option value="227042">Antigua und Barbuda</option><option value="201326">Argentinien</option><option value="201872">Armenien</option><option value="201888">Aserbaidschan</option><option value="213920">Australien</option><option value="220268">Bahamas</option><option value="204112">Bahrain</option><option value="206292">Bangladesch</option><option value="226424">Barbados</option><option value="201904">Belarus</option><option value="200382">Belgien</option><option value="220284">Belize</option><option value="208984">Benin</option><option value="226702">Bhutan</option><option value="213428">Bolivien</option><option value="207694">Bosnien und Herzegowina</option><option value="219522">Botsuana</option><option value="201092">Brasilien</option><option value="224526">Brunei Darussalam</option><option value="211834">Bulgarien</option><option value="212336">Burkina Faso</option><option value="222614">Burundi</option><option value="208824">Cabo Verde</option><option value="201230">Chile</option><option value="200466">China</option><option value="226552">Cookinseln</option><option value="224816">Costa Rica</option><option value="209460">Côte d'Ivoire</option><option value="203202">Demokratische Republik Kongo</option><option value="220300">Dominica</option><option value="206146">Dominikanische Republik</option><option value="212168">Dschibuti</option><option value="211724">Dänemark</option><option value="223232">Ecuador</option><option value="221864">El Salvador</option><option value="226176">Eritrea</option><option value="200754">Estland</option><option value="226240">Eswatini</option><option value="226626">Fidschi</option><option value="211624">Finnland</option><option value="209524">Frankreich</option><option value="226324">Gabun</option><option value="213624">Gambia</option><option value="201918">Georgien</option><option value="203372">Ghana</option><option value="220316">Grenada</option><option value="211534">Griechenland</option><option value="206408">Großbritannien und Nordirland/Vereinigtes Königreich</option><option value="221882">Guatemala</option><option value="206098">Guinea</option><option value="220332">Guinea-Bissau</option><option value="220348">Guyana</option><option value="205048">Haiti</option><option value="226808">Heiliger Stuhl / Vatikan</option><option value="221078">Honduras</option><option value="200854">Hongkong</option><option value="205998">Indien</option><option value="212396">Indonesien</option><option value="202738">Irak</option><option value="202396">Iran</option><option value="211460">Irland</option><option value="223400">Island</option><option value="203814">Israel</option><option value="211322">Italien</option><option value="226490">Jamaika</option><option value="213032">Japan</option><option value="202260">Jemen</option><option value="218008">Jordanien</option><option value="220008">Kambodscha</option><option value="208874">Kamerun</option><option value="204874">Kanada</option><option value="206342">Kasachstan</option><option value="202280">Katar</option><option value="208058">Kenia</option><option value="206738">Kirgisistan</option><option value="220364">Kiribati</option><option value="201516">Kolumbien</option><option value="226660">Komoren</option><option value="208542">Kongo (Republik Kongo)</option><option value="216104">Korea (Demokratische Volksrepublik, Nordkorea)</option><option value="207442">Kosovo</option><option value="210072">Kroatien</option><option value="212208">Kuba</option><option value="204130">Kuwait</option><option value="201048">Laos</option><option value="226974">Lesotho</option><option value="200674">Lettland</option><option value="204048">Libanon</option><option value="222378">Liberia</option><option value="219624">Libyen</option><option value="222960">Liechtenstein</option><option value="200620">Litauen</option><option value="211256">Luxemburg</option><option value="200872">Macau</option><option value="207960">Madagaskar</option><option value="208508">Malawi</option><option value="223616">Malaysia</option><option value="220382">Malediven</option><option value="208258">Mali</option><option value="211188">Malta</option><option value="224080">Marokko</option><option value="220400">Marshallinseln</option><option value="219190">Mauretanien</option><option value="206994">Mauritius</option><option value="213648">Mexiko</option><option value="220678">Mikronesien</option><option value="201932">Moldau, Republik</option><option value="226868">Monaco</option><option value="222842">Mongolei</option><option value="216330">Montenegro</option><option value="221782">Mosambik</option><option value="212100">Myanmar</option><option value="208314">Namibia</option><option value="220416">Nauru</option><option value="221216">Nepal</option><option value="220146">Neuseeland</option><option value="223316">Nicaragua</option><option value="211084">Niederlande</option><option value="226384">Niger</option><option value="205788">Nigeria</option><option value="205878">Norwegen</option><option value="204160">Oman</option><option value="204974">Pakistan</option><option value="220958">Palau</option><option value="203674">Palästinensische Gebiete</option><option value="206378">Panama</option><option value="220698">Papua-Neuguinea</option><option value="224964">Paraguay</option><option value="211938">Peru</option><option value="212492">Philippinen</option><option value="199124">Polen</option><option value="210900">Portugal</option><option value="216132">Republik Korea (Südkorea)</option><option value="207612">Republik Nordmazedonien</option><option value="212026">Ruanda</option><option value="210822">Rumänien</option><option value="201536">Russische Föderation</option><option value="220650">Salomonen</option><option value="208606">Sambia</option><option value="213758">Samoa</option><option value="227014">San Marino</option><option value="202298">Saudi-Arabien</option><option value="210708">Schweden</option><option value="206208">Schweiz</option><option value="208190">Senegal</option><option value="207502">Serbien</option><option value="226912">Seychellen</option><option value="203500">Sierra Leone</option><option value="208948">Simbabwe</option><option value="225412">Singapur</option><option value="206360">Slowakei</option><option value="210644">Slowenien</option><option value="203132">Somalia</option><option value="210534">Spanien</option><option value="212254">Sri Lanka</option><option value="226596">St. Kitts und Nevis</option><option value="226750">St. Lucia</option><option value="226268">St. Vincent und die Grenadinen</option><option value="203266">Sudan</option><option value="220450">Suriname</option><option value="204278">Syrien</option><option value="220434">São Tomé und Príncipe</option><option value="208400">Südafrika</option><option value="244250">Südsudan</option><option value="206756">Tadschikistan</option><option value="200896">Taiwan*</option><option value="208662">Tansania</option><option value="201558">Thailand</option><option value="221388">Timor-Leste</option><option value="213850">Togo</option><option value="213790">Tonga</option><option value="220466">Trinidad und Tobago</option><option value="225774">Tschad</option><option value="210456">Tschechische Republik</option><option value="219024">Tunesien</option><option value="206774">Turkmenistan</option><option value="220666">Tuvalu</option><option value="201962">Türkei</option><option value="201382">USA / Vereinigte Staaten</option><option value="208752">Uganda</option><option value="201946">Ukraine</option><option value="210332">Ungarn</option><option value="201138">Uruguay</option><option value="206790">Usbekistan</option><option value="220498">Vanuatu</option><option value="224982">Venezuela</option><option value="202332">Vereinigte Arabische Emirate</option><option value="217274">Vietnam</option><option value="226450">Zentralafrikanische Republik</option><option value="210258">Zypern</option><option value="212622">Ägypten</option><option value="226768">Äquatorialguinea</option><option value="209504">Äthiopien</option><option value="210962">Österreich</option> </select> <input type="submit" value="Weiter" style="border:1px solid #ccc; font-size:125%;"> </form> <?php if( isset($_GET['country']) && $_GET['country'] != "" ){ $countryId = $_GET['country']; $_external_source = "https://www.auswaertiges-amt.de/opendata/travelwarning/$countryId/"; $jsonobj = file_get_contents($_external_source); $arr = json_decode($jsonobj, true); echo("<h2>".$arr["response"][$countryId]["title"]."</h2>"); echo("<img src='".$arr["response"][$countryId]["flagUrl"]."' style='width:100px; float:left; margin:0 2em 0 0'>"); echo $arr["response"][$countryId]["content"]; ?> <script> $(document).ready(function(){ var elmnt = document.getElementById("aabox"); elmnt.scrollIntoView(); $("#countrySelect option[value=<?php echo $countryId; ?>]").attr('selected', 'selected'); $("h2:contains('Aktuelles')" ).nextUntil("h2").wrapAll( "<div id='aktuelles'></div>" ); }); </script> <?php } ?>
Dieser PHP-Code aus dem Snippet wird durch den Shortcode in den Body der Seite eingesetzt und dort gerendert.
WordPress Plugin „Embed Code“ für jQuery lib im Head
Für den Fall das jQuery in WordPress nicht korrekt geladen ist (Theme-abhängig):
Ich habe dazu das WordPress Plugin „Embed Code“ installiert. Damit kannst du für einzelne Seiten oder Beiträge individuellen Code für den Head-Bereich (vor dem </head> Tag) und im Footer (also nach dem Content, vor dem </body> Tag) definieren. Ich habe für die Seite in dem Feld „Head Code“ (zu finden in den Elementen unter dem Inhalts-Editor) die jQuery-Bibliothek eingebunden.
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
Beispiel: der Link zeigt LIVE eine Darstellung der Daten zu Italien
Hier sieht man im Beispiel, wie die Seite dann gerendert dargestellt wird: https://www.urlaubs-reisetipps.de/reise-und-sicherheitshinweise?country=211322
Der URL-Parameter ?country=211322 übergibt dem Script die ID zum Land Italien und somit wird gleich die Info zu Italien aufgerufen.