web-dev-qa-db-fra.com

interroger les publications liées dans un type de publication personnalisé par une taxonomie personnalisée

J'essaie d'afficher les publications associées selon une taxonomie personnalisée et je n'ai la solution que pour les publications connexes utilisant une catégorie.

    $orig_post = $post;
    global $post;
    $categories = get_the_category($post->ID);
    if ($categories) {
    $category_ids = array();
    foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;

    $args=array(
    'category__in' => $category_ids,
    'post__not_in' => array($post->ID),
    'posts_per_page'=> 4, // Number of related posts that will be shown.
    'caller_get_posts'=>1
    ); 

    $my_query = new wp_query($args);  
    if( $my_query->have_posts() ) {  
    echo '<div id="relatedposts" class="clearfix"><h4>Related Posts</h4><ul>';  
    while ($my_query->have_posts()) {  
    $my_query->the_post();  
    ?>  

    <?php  
    if ( has_post_thumbnail() ) { ?>  
    <li><div class="relatedthumb"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
    <?php echo the_post_thumbnail(); ?></a>
    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><div class="title"><?php the_title(); ?></div></a>
    </div>
    </li> 
    <?php }  
    ?>  

<?
}
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query();

Le code suivant ne fonctionne que pour les types d'article avec la catégorie enregistrée, pas les types de taxonomie personnalisés.

3
chris_r

ok maintenant j'ai trouvé le code qui le rend capable d'utiliser une taxonomie personnalisée pour afficher les publications connexes pour un type de publication personnalisée.

  1. $ terms = get_the_terms ($ post-> ID, 'product_tags', 'string'); est la taxonomie personnalisée dans laquelle vous devez interroger toutes les balises de votre type de message personnalisé
  2. 'post_type' => 'produits' est le type de publication personnalisé dans lequel toutes les balises personnalisées créées dans la taxonomie personnalisée sont appelées product_tags.

Entrez ce code n'importe où dans votre boucle ou requête pour afficher toutes les publications de votre type de publication personnalisée. Cela ne filtre pas votre type de message personnalisé basé sur différentes balises. Cela affiche toutes les balises de votre type d'article personnalisé, qui dans ce cas est un produit.

//Get array of terms
$terms = get_the_terms( $post->ID , 'product_tags', 'string');
//Pluck out the IDs to get an array of IDS
$term_ids = wp_list_pluck($terms,'term_id');

//Query posts with tax_query. Choose in 'IN' if want to query posts with any of the terms
//Chose 'AND' if you want to query for posts with all terms
  $second_query = new WP_Query( array(
      'post_type' => 'products',
      'tax_query' => array(
                    array(
                        'taxonomy' => 'product_tags',
                        'field' => 'id',
                        'terms' => $term_ids,
                        'operator'=> 'IN' //Or 'AND' or 'NOT IN'
                     )),
      'posts_per_page' => 3,
      'ignore_sticky_posts' => 1,
      'orderby' => 'Rand',
      'post__not_in'=>array($post->ID)
   ) );

//Loop through posts and display...
    if($second_query->have_posts()) {
     while ($second_query->have_posts() ) : $second_query->the_post(); ?>
      <div class="single_related">
           <?php if (has_post_thumbnail()) { ?>
            <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <?php the_post_thumbnail( 'related_sm', array('alt' => get_the_title()) ); ?> </a>
            <?php } else { ?>
                 <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
            <?php } ?>
       </div>
   <?php endwhile; wp_reset_query();
   }

d'accord, ce code aide à résoudre le problème d'utilisation de types de publication personnalisés pour filtrer dans une taxonomie personnalisée. Par exemple, j'avais le projet comme taxonomie et comme type de message personnalisé. Lorsque j'ajoute des balises différentes à chaque projet, ils créent une taxonomie tagportfolio dans laquelle ajouter toutes les taxonomies et les interroger.

5
chris_r