Gehen Sie durch eine foreach-Schleife – fügen Sie am Ende +1 hinzu, damit das nächste Mal, wenn Sie es durchlaufen, mit Punkt 2 beginnt

Ich erstelle eine benutzerdefinierte Google-Karte, auf der mehrere Markierungen angezeigt werden.

Sehen Sie sich den Link an, damit Sie leichter erklären können, was passiert und was ich möchte

Wenn Sie auf jeden Marker klicken, werden Unternehmensnamen angezeigt, die von den untergeordneten Seiten erfasst wurden. Im Moment zeigt es ALLE Firmennamen auf jedem Marker. Wie kann ich nur einen Firmennamen pro Marker anzeigen?

Hier ist der Code, der das kleine Popup steuert:

$pages = get_pages(array('child_of' => 1873, 'sort_column' => 'menu_order')); $counter = 1; foreach($pages as $post) { setup_postdata($post); $fields = get_fields(); ?> 

company_name;?>

<?php } wp_reset_query();

Wenn es einmal durchgeschleift ist, muss es beim nächsten Durchlaufen beim nächsten Kind beginnen und nicht das erste zeigen.

Solutions Collecting From Web of "Gehen Sie durch eine foreach-Schleife – fügen Sie am Ende +1 hinzu, damit das nächste Mal, wenn Sie es durchlaufen, mit Punkt 2 beginnt"

Verwenden Sie das offset Argument und erhalten Sie nur 1 Ergebnis:

 global $my_page_offset; if(!isset($my_page_offset)) $my_page_offset = 0; $pages = get_pages(array( 'child_of' => $post->ID, 'sort_column' => 'menu_order', 'offset' => $my_page_offset, 'number' => 1, )); $my_page_offset++; ... 

Ich gehe hier davon aus, dass Sie nicht viel Kontrolle über diese Schleifen haben, weil Sie sie mehrmals tun. Deshalb ist die globale Variable …


Letzter Versuch:

Nach var infowindow; füge das hinzu:

 < ?php $pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order')); $data = array(); foreach($pages as $post){ setup_postdata($post); $fields = get_fields(); $data[] = '

'.$fields->company_name.'

'; } wp_reset_query(); // the js array echo 'var marker_data = ["'.implode('","', $data).'"];'; ?>

Jetzt sollte infowindow.setContent sein:

 infowindow.setContent(marker_data[i]); 

Es stellte sich heraus, dass das PHP innerhalb des JS JSON-kodiert sein musste:

 echo 'var marker_data = ' . json_encode($data) . ';';