2017-10-18 17 views
0

J'ai une boucle pour obtenir une liste de termes pour une taxonomie.Enregistrer la sortie de boucle dans une 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; 
?> 

La sortie de la boucle est la suivante:

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

Maintenant, je veux enregistrer cette sortie dans la variable (termoutput $) et l'insérer dans un tableau de termes de boucle suivante:

<?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) 
     ) 
    ) 

)); ?> 

Y a-t-il un moyen de réaliser cela? Je vous remercie!

+0

'$ termoutput = [];' avant la foreach. Ensuite, dans votre boucle au lieu de l'écho, utilisez '$ termoutput [] = $ term-> slug;' ... c'est littéralement ça. – naththedeveloper

Répondre

2

Vous devez accumuler votre sortie dans un tableau comme celui-ci:

$termoutput = array(); 

... 

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

Ensuite, dans la deuxième partie de votre code:

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

Parfait. Fonctionne bien pour moi. Je vous remercie! – Filip

2

Essayez ceci:

<?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 
      ) 
     ) 

    ));  
?> 

Ce stockera $ term-> limaces à termoutput $ [] comme un tableau.

+0

Cela lancera un avertissement dans certains cas, car vous n'avez pas défini '$ termoutput' en tant que tableau avant la boucle. Ajoutez '$ termoutput = array();' avant le foreach. – naththedeveloper

+1

@naththedeveloper désolé oublié à ce sujet, était occupé à modifier son code. Merci – hungrykoala