2017-10-18 4 views
0

Ich habe eine Schleife, um eine Liste von Begriffen für eine Taxonomie zu erhalten.Speichern Schleife Ausgabe in eine Variable

<?php 
    $terms = get_field('modell'); 
    if($terms): 
    $total = count($terms); 
    $count = 1; 
    foreach($terms as $term): 
     ?> 
     '<?php echo $term->slug; ?>' 
     <?php 
     if ($count < $total) { 
     echo ', '; 
     } 
     $count++; 
    endforeach; 
    endif; 
?> 

Die Schleifenausgang ist dies:

'termname-one','termname-two','termname-three' 

Jetzt habe ich diese Ausgabe in Variable speichern möchten ($ termoutput) und in eine Reihe von Begriffen der folgenden Schleife einzufügen:

<?php 
query_posts(array( 
    'post_type' => 'posttypename', 
    'posts_per_page' => -1, 
    'orderby' => 'title', 
    'order' => 'ASC', 
    'tax_query' => array( 
     array( 
      'taxonomy' => 'systems', 
      'field' => 'slug', 
     'terms' => array($termoutput) 
     ) 
    ) 

)); ?> 

Gibt es eine Möglichkeit, dies zu erreichen? Vielen Dank!

+0

'$ termoutput = [];' vor dem foreach. Dann benutze in deiner Schleife anstelle von echo '$ termoutput [] = $ term-> slug;' ... das ist es buchstäblich. – naththedeveloper

Antwort

2

Sie sollten Ihre Ausgabe in ein Array wie folgt akkumulieren:

$termoutput = array(); 

... 

foreach($terms as $term) { 
    $termoutput[] = $term->slug; 
} 

Dann im zweiten Abschnitt des Codes:

... 
'terms' => $termoutput 
+0

Perfekt. Funktioniert gut für mich. Vielen Dank! – Filip

2

Try this:

<?php 
    $terms = get_field('modell'); 
    if($terms): 
    $total = count($terms); 
    $count = 1; 
    $termoutput = array(); 
    foreach($terms as $term): 

     echo "'".$term->slug."'"; 
     $termoutput[] = $term->slug; 

     if ($count < $total) { 
     echo ', '; 
     } 
     $count++; 
    endforeach; 
    endif; 
?> 


<?php 
    query_posts(array( 
     'post_type' => 'posttypename', 
     'posts_per_page' => -1, 
     'orderby' => 'title', 
     'order' => 'ASC', 
     'tax_query' => array( 
      array( 
       'taxonomy' => 'systems', 
       'field' => 'slug', 
      'terms' => $termoutput 
      ) 
     ) 

    ));  
?> 

Diese $ TERM> Slug zu $ termoutput [] als Array gespeichert werden.

+0

Dies wird in einigen Fällen eine Warnung ausgeben, weil Sie '$ termoutput' nicht als Array vor der Schleife voreingestellt haben. Füge '$ termoutput = array();' vor dem foreach hinzu. – naththedeveloper

+1

@naththedeveloper Entschuldigung, vergessen, war mit dem Bearbeiten seines Codes beschäftigt. Danke – hungrykoala

Verwandte Themen