Reisewarnungen des Auswärtigen Amts im eigenen WordPress Blog als Seite anbieten

Darstellung der Daten des Auswärtigen Amts in WordPress
Darstellung der Daten des Auswärtigen Amts in WordPress

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 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 „PHP Everywhere“

Hier mein Beispiel, wie ich die Daten über die Schnittstelle reinlese:

PHP Everywhere Widget
PHP Everywhere Widget

Ich habe das WordPress-Plugin „PHP Everywhere installiert. Dann habe ich eine neue Seite im WordPress angelegt mit einem Titel wie etwa „Reise- und Sicherheitshinweise des Auswärtigen Amts zu Italien“. Im Edit-Modus der Seite kann man rechts am Rand in der Box „PHP Everywhere“ den PHP-Code hinterlegen und im Body der Seite den Shortcode [php_everywhere].

Mein Code im PHPEverywhere Widget: 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 } ?>

 


PHP Everywhere Shortcode
PHP Everywhere Shortcode

Dieser PHP-Code aus dem Widget wird durch den Shortcode [php_everywhere] 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):

EmbedCode Plugin HEAD code
EmbedCode Plugin HEAD code

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.

Hier die Darstellung der Daten des Auswärtigen Amts am Beispiel Belgien:

Darstellung der Daten des Auswärtigen Amts in WordPress
Darstellung der Daten des Auswärtigen Amts in WordPress