2010-06-08 8 views
1

J'essaie d'afficher les messages associés basés sur une taxonomie custum. J'ai trouvé une requête à wordpress.org ce genre de travaux. Cependant, la publication originale est dupliquée dans les résultats plusieurs fois. (Les mots sont le nom de la taxonomie personnalisée que j'utilise) Ce qui semble arriver, c'est que le message unique est dupliqué en fonction du montant de showpost. Une idée est ce qui pourrait causer cela?Postes liés à Wordpress par problème de taxonomie personnalisée

Le code:

<?php 
//for in the loop, display all "content", regardless of post_type, 
//that have the same custom taxonomy (e.g. words) terms as the current post 
$backup = $post; // backup the current object 
$found_none = '<h2>No related posts found!</h2>'; 
$taxonomy = 'words';// e.g. post_tag, category, custom taxonomy 
$param_type = 'words'; // e.g. tag__in, category__in, but genre__in will NOT work 
$post_types = get_post_types(array('public' => true), 'names'); 
$tax_args=array('orderby' => 'none'); 
$tags = wp_get_post_terms($post->ID , $taxonomy, $tax_args); 
if ($tags) { 
    foreach ($tags as $tag) { 
    $args=array(
     "$param_type" => $tag->slug, 
     'post__not_in' => array($post->ID), 
     'post_type' => $post_types, 
     'showposts'=>5, 
     'caller_get_posts'=>1 
    ); 
    $my_query = null; 
    $my_query = new WP_Query($args); 
    if($my_query->have_posts()) { 
     while ($my_query->have_posts()) : $my_query->the_post(); ?> 
     <h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3> 
     <?php $found_none = ''; 
     endwhile; 
    } 
    } 
} 
if ($found_none) { 
echo $found_none; 
} 
$post = $backup; // copy it back 
wp_reset_query(); // to use the original query again 
?> 

Répondre

0

Il est dans la boucle foreach que vous obtenez duplications. Ce code dit effectivement;

  1. obtenir tous les termes pour le type de taxonomie $param_type
  2. Pour chaque terme, obtenez 5 messages qui sont marqués avec ce terme

Donc, si vous avez un poste qui est marqué avec plus de un terme de la même taxonomie, il est probable qu'il apparaîtra plus d'une fois.

Vous pouvez ajouter des publications interrogées de façon itérative dans le tableau post__not_in pour vous assurer qu'elles n'apparaissent plus;

  1. Ajouter $post_not_in = array($post->ID); juste au-dessus if ($tags) {

  2. Remplacez ensuite la ligne post__not_in' => array($post->ID), avec post__not_in' => $post_not_in,.

  3. Enfin, laissez tomber $post_not_in[] = get_the_ID(); dans votre boucle while, après $found_none = '';

+0

Salut DeadMedic, Merci pour votre réponse. J'ai fait les ajustements, mais malheureusement, je reçois toujours des doublons. Il semble en fait ignorer complètement le code $ post_not_in = array ($ post-> ID); Peu importe si je le mets ou non, les résultats sont les mêmes. C'est probablement quelque chose qui ne va pas, mais je n'arrive pas à comprendre ce que c'est .. – Nordin

+0

Avec quelle version de WordPress travaillez-vous? – TheDeadMedic

+0

Je travaille avec 2.9.2 – Nordin

0

Quant à moi j'utilise this plugin pour la taxonomie personnalisée raconterai après. J'espère que ce plugin aidera votre problème.

Questions connexes