CPT-Filter

Für eigene Datenquellen aus Custom Post Types (CPT) stellt das Plugin ab Version 1.5 zwei Filter zur Verfügung.

dev_null_openstreetmap_enum_map_items

Mit diesem Filter werden alle verfügbaren Kartenelement aufgelistet. Diese Liste entspricht der Auswahlliste im Kartenelement des Builders.

Die Callback-Funktion kann diese Liste mit Schlüssel-Wertepaaren entsprechend befüllen.

Im Schlüssel muss dabei die Information post_type : ID enthalten sein. Die Werte für post_type und ID müssen durch einen Doppelpunkt, ohne weiteres Trennzeichen gespeichert werden. Als Wert wird der Anzeigetext für die Auswahlliste zurückgegeben.

<?
// returns a list of all available pages
// shown in bricks map element
public function filter_callback_enum_map_items($items) {
        
    $query = array(
        'post_type'     => array( 'page' ),
        'nopaging'      => true,
        'orderby'       => 'title',
        'post_status'   => 'published',
    );
    $posts = get_posts($query);

    foreach($posts as $p) {
        $items['page:' . $p->ID] = $p->post_title . ' [page]';
    }

    return $items;       
}

add_filter(
  'dev_null_openstreetmap_enum_map_items',
  'filter_callback_enum_map_items',
  10, 1);

?>

dev_null_openstreetmap_[post_type]_marker_data

Mit diesem Filter werden die für das Rendering notwendigen Daten gesammelt.

Der Filter erhält zwei Parameter:

  • die zu ergänzende Liste. Die ergänzte Liste muss als Rückgabewert zurück gegeben werden
  • ein Wert (string/array), der eine Liste mit IDs aus der Auswahlliste enthält

Folgende verpflichtende Informationen werden erwartet:

  • title – der anzuzeigende Titel im Popup, sofern kein eigener Popup-Text angegeben wird
  • lat – geografischer Breitengrad
  • lng – geografischer Längengrad
  • ico – der Slug eines Icons, oder leer für das Standardicon
  • txt – der vollständige Text für das Popup

Optional für allfällige Erweiterungen

  • p – das Post_Item aus der Abfrage

Rückgabewert:

  • die ergänzte Liste
<?

// return geo-information for the markers
public function filter_callback_PAGE_marker_data($list, $items){

    if(is_array($items) == false)
        $items = explode(',', $items);

    // sanitize the data for safety  
    $items = array_map('intval', $items);
		
    if(count($items) == 0)
        return $list;
		
    $query = array(
        'post_type'     => [ 'page' ],
        'post__in'      => $items,
        'nopaging'      => true,
    );
    $posts = get_posts($query);

    foreach($posts as $p) {
        $i = [
            'title'     => $p->post_title,
            'lat'       => '48.2062771',     // latitude
            'lng'       => '16.3650601',     // longitude
            'ico'       => '',               // slug/empty/false
            'txt'       => '',               // popup text
            'p'         => $p,
        ];

        // prevent duplicates - insert with ID as index
        $list[$p->ID] = $i;
    }

    return $list;
}

add_filter ( 'dev_null_openstreetmap_page_marker_data', 
    'filter_callback_PAGE_marker_data',
    10, 2);

Qxj EFYl NVCT qZSJk SPg fPk

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen