2017-09-11 1 views
1

J'ai créé un colophon pour mon site Web dans lequel je poste tous les logos des différents sponsors que j'ai. J'ajoute tous les sponsors via un type de publication personnalisé. J'ai également ajouté une taxonomie personnalisée spécifique pour distinguer les différentes typologies de parrainages.wordpress get_terms et WP_Query ne fonctionnent pas comme prévu

J'utilise ce code dans le footer.php pour les afficher:

<?php $terms = get_terms('sponsor_tipology'); 
$count = count($terms); 
if ($count > 0) { 
    foreach ($terms as $term) { ?> 
     <div class="col-xs-12 <?php echo $term->slug ;?>">  
     <h3><?php echo $term->name;?></h3> 
     <?php $arg = array (
       'post_type' => 'colophone', 
       'post_per_page' => -1, 
       'sponsor_edition' => 'current', 
       'sponsor_tipology' => $term->slug, 
       ); 

     $pesca_post = new WP_Query ($arg); 
     $quanti_post = $pesca_post->post_count; 

     if(have_posts()){ 
      while ($pesca_post->have_posts()) : $pesca_post->the_post(); 
       $featured = get_the_post_thumbnail_url(get_the_ID(),'large'); 

       if ($quanti_post == 5){ 
        $classe_bootstrap = 15; 
       }elseif ($quanti_post > 5){ 
        $classe_bootstrap = "2 text-center"; 
       }elseif($quanti_post < 5){ 
        $classe_bootstrap = 12/$quanti_post; 
       } 

       echo '<div class="col-md-' . $classe_bootstrap . '">'; 
       if (isset($featured)){ 
        $img = $featured; 
       }else{ 
        $img = get_template_directory_uri() . '/img/placeholder.png'; 
       } ?> 
       <a href="<?php echo esc_attr(get_permalink($msd_settings['partner_page'])); ?>" title="<?php echo get_the_title($post->ID);?>" > 
        <div class="col-xs-12" style="background-image:url(<?php echo esc_url($img); ?>); height:100px;background-size:contain;background-repeat:no-repeat;background-position:center center;"></div> 
       </a> 
       <?php echo '</div>'; 
     endwhile; 
    }?> 
    </div> 
<?php } 
}?> 

mon problème est que ce code fonctionne complètement juste sur certaines pages, sur d'autres il montre le contenu en évitant ceux appartenant au premier mandat, peu importe lequel.

J'ai remarqué que cela fonctionne dans les pagaes où j'utilise d'autres requêtes.

Qu'est-ce que je fais de mal?

+0

Avez-vous essayé 'wp_reset_query()' ou 'wp_reset_postdata()' juste avant? –

Répondre

0

Je l'ai changé de cette façon et maintenant ça marche!

$terms = get_terms('sponsor_tipology'); 
    $count = count($terms); 
     if ($count > 0) { 
      foreach ($terms as $term) { //per ogni termine presente 
      $nome = $term->slug;?> 
      <div class="col-xs-12 <?php echo $term->slug ;?>">  
       <h3><?php echo $term->name;?></h3> 
       <?php $arg = array (
        'post_type' => 'colophone', 
        'post_per_page' => -1, 
        'sponsor_edition' => 'current', 
        'sponsor_tipology' => $nome, 
        ); 

        $elementi = get_posts($arg); 
        $quanti_post = count($elementi); 

        if ($quanti_post == 5){ 
         $classe_bootstrap = 15; 
        } 
        elseif ($quanti_post > 5){ 
         $classe_bootstrap = "2 text-center"; 
        } 
        elseif($quanti_post < 5){ 
         $classe_bootstrap = 12/$quanti_post; 
        } 

        foreach($elementi as $elemento){ 
         $featured = get_the_post_thumbnail_url($elemento->ID,'large'); 
         if (isset($featured)){ 
          $img = $featured; 
         } 
         else{ 
          $img = get_template_directory_uri() . '/img/placeholder.png'; 
         } ?> 
         <div class="col-md-<?php echo $classe_bootstrap; ?>"> 
          <a href="<?php echo esc_attr(get_permalink($msd_settings['partner_page'])); ?>" title="<?php echo get_the_title($elemento->ID);?>" > 
          <div class="col-xs-12" style="background-image:url(<?php echo esc_url($img); ?>); height:100px;background-size:contain;background-repeat:no-repeat;background-position:center center;"></div> 
          </a> 
         </div> 
      <?php }?> 
     </div> 
    <?php } 
}?>