it-swarm.com.de

Entfernen Sie doppelte Werte aus einer Schleife

Ich habe eine Schleife, die <option> Felder für eine <select> Gruppe ausgibt. Es enthält die Namen vieler Städte für viele Reisepakete, die ich veröffentliche. Der Trick ist, dass ich wiederholte Werte vermeiden muss.

Zum Beispiel: Ich habe 4 Reisepakete ab Chicago, 5 aus Orlando, 3 aus Los Angeles und 2 aus New York.

So gibt es aus:
Wähle deine Stadt
Chicago
Chicago
Chicago
Chicago
Orlando
Orlando
Orlando
Orlando
Orlando
Los Angeles
Los Angeles
Los Angeles
New York
New York

Ich müsste nur einen davon drucken!

<select name="nDep" id="iDep" onchange="this.form.submit();">
<option selected disabled>Outras saídas disponíveis</option>
  <?php
    $args = array(
      'post_type'     => 'packs',
      'order'         => 'ASC'
    );
    $the_query = new WP_Query( $args );
    if(have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
  ?>

<option value="<?php the_field('departures'); ?>"><?php the_field('departures'); ?></option>

  <?php endwhile; endif; ?>
</select>
1
user3301994

Ich kenne keine WordPress-spezifische Methode, um Beiträge mit doppelten Titeln von einer Abfrage auszuschließen, und ich bin mir sicher, dass es mehrere Möglichkeiten gibt, dies zu beheben. Die Lösung, die Ihnen in den Sinn kommt, besteht darin, jeden Beitragstitel in einem Array zu speichern und dann zu prüfen, ob dieser Titel bereits vorhanden ist, bevor Sie den Beitrag ausgeben.

Ein paar schnelle ungetestete Codes:

<?php
    $args = array(
      'post_type'     => 'packs',
      'order'         => 'ASC',
      'orderby'       => 'title'
    );
    $the_query = new WP_Query( $args );
    // array to store cities
    $unique_cities = array();
    if( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
        $city = get_the_field('departures');
        // only create option if city hasn't been added yet
        if( ! in_array( $city, $unique_cities ) ) :
            // add city to array so it doesn't repeat
            $unique_cities[] = $city;
    ?>

            <option value="<?php echo $city; ?>"><?php echo $city; ?></option>

  <?php
    endif;
  endwhile; endif; ?>

Beachten Sie auch zwei weitere geringfügige Änderungen, die Sie beabsichtigt haben:

  • der Parameter orderby wurde zu WP_Query hinzugefügt, sodass die Städte von A bis Z aufgelistet werden.
  • behoben zuerst have_posts(), so dass es Ihre benutzerdefinierte Abfrage testet
3
mrwweb