GPX Daten mit Bildern versehen
Nextgen Gallery + WP-GPX-Maps
WP-GPX-Maps ist ein schönes Script um GPX Daten in einer Karte zu zeigen und auch noch Bilder einer Nextgen Gallery einzufügen. Ärgerlich ist, dass die nötigen Scripte und Styles auf jeder Seite geladen werden, unabhängig davon, ob der jeweilige Post überhaupt solche Daten enthält.

Dieses Verhalten lässt sich aber mit ein paar Änderungen anpassen. Hier bezogen auf Version WP-GPX-Maps 1.3.12 – die Zeilen können sich in Zukunft natürlich ändern.:

Zeile 21 entfernen / die Styles sollen erst im Fall der Fälle hinzugefügt werden:

add_action('wp_print_styles', 'print_WP_GPX_Maps_styles' );

ab Zeile 52 ändern / die Scripte also schon mal bekannt machen, aber nicht einhängen:

wp_register_script( 'googlemaps', '//maps.googleapis.com/maps/api/js?sensor=false', null, null);
wp_register_script( 'highcharts', "//code.highcharts.com/3.0.10/highcharts.js", array('jquery'), "3.0.10", true);
wp_register_script( 'WP-GPX-Maps', plugins_url('/WP-GPX-Maps.js', __FILE__), array('jquery',’googlemaps',’highcharts'), "1.3.8");

ab Zeile 198 einfügen / die Function handle_WP_GPX_Maps_Shortcodes(), also die eigentlich Shortcode Funktion, ruft reiht dann die Scripte ein und fügt die Styles hinzu:

add_action('wp_print_styles', 'print_WP_GPX_Maps_styles' );
wp_enqueue_script('googlemaps');
wp_enqueue_script('highcharts');
wp_enqueue_script('WP-GPX-Maps');

Wenn jQuery nicht rechtzeitig geladen ist, weil es beispielsweise im Footer sitzt, hilft es den Output (Zeile 639) wie folgt anzupassen:

<script type="text/javascript">
function defer(method) {
 if (window.jQuery)
  method();
 else
  setTimeout(function() { defer(method) }, 50);
}
function drawMap(){
 jQuery(document).ready(function() {
  jQuery("#wpgpxmaps_'.$r.'").wpgpxmaps({
   …
  });
 });
};
defer(function () {drawMap();});
</script>