web-dev-qa-db-fra.com

Comment puis-je afficher les publications récentes de la même taxonomie que la publication en cours de visualisation?

Je me demande comment je peux afficher les publications récentes de la même taxonomie que celle actuellement affichée (utilisation de types de publication personnalisés et de taxonomies personnalisées).

S'il s'agissait simplement d'une catégorie de poste régulière, cela ressemblerait à ceci:

<?php global $post;
$categories = get_the_category();
foreach ($categories as $category) :
?>
<h3>More News From This Category</h3>
<ul>
<?php
$posts = get_posts('numberposts=20&category='. $category->term_id);
foreach($posts as $post) :
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<li><strong><a href="<?php echo get_category_link($category->term_id);?>" title="View all posts filed under <?php echo $category->name; ?>">ARCHIVE FOR '<?php echo $category->name; ?>' CATEGORY &raquo;</a></strong></li>
<?php endforeach; ?>
</ul>

Mais avec les postes personnalisés/taxonomies, il doit y avoir un type de solution différent. Je n'ai rien trouvé d'utile dans le codex wordpress.

2
greedz

Avez-vous essayé d'utiliser get_the_terms() ?

Rapide et sale, à partir de votre exemple de code:

<?php 
global $post;
$terms = get_the_terms( $post->ID, 'some-term' );
foreach ($terms as $category) :
?>
<h3>More News From This Category</h3>
<ul>
<?php
$posts = get_posts('numberposts=20&category='. $category->term_id);
foreach($posts as $post) :
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<li><strong><a href="<?php echo get_category_link($category->term_id);?>" title="View all posts filed under <?php echo $category->name; ?>">ARCHIVE FOR '<?php echo $category->name; ?>' CATEGORY &raquo;</a></strong></li>
<?php endforeach; ?>
</ul>

Voir aussi: the_terms() et get_the_term_list()

1
Chip Bennett

Pour obtenir les termes (à partir d'une taxonomie personnalisée appelée 'my-taxonomy-name') associés à une publication avec l'ID $post_id:

$terms = get_the_terms( $post_id, 'my-taxonomy-name' );

Cela retourne un tableau d'objets de terme. (voir Codex ) Choisissez le premier, par exemple: $ term-slug = $ terms [0] -> slug;

Et ensuite, en utilisant get_posts, il accepte notre taxonomie comme clé (voir

$args = array(
   'numberposts' => 20,
   'my-taxonomy-name' =>  $term-slug 
);
$posts = get_posts ( $args );

Voir le Codex sur les taxonomies personnalisées et get_posts

1
Stephen Harris