Je souhaite afficher les catégories X et les trier par dernière mise à jour.
Je veux aussi saisir l'image du dernier post avec la catégorie.
<img src="<?php echo get_image('article_image',1,1,0,NULL,$res75); ?>" />
Ainsi, la liste de catégories sera affichée par images, avec le nom de catégorie correspondant en dessous.
Trié par dernière mise à jour.
Comment pourrais-je m'y prendre?
Voici une solution:
global $wpdb;
$cat_array = $wpdb->get_results( "
SELECT terms.*, posts.ID as post_ID
FROM wp_terms terms
JOIN wp_term_taxonomy term_taxonomy
ON terms.term_id = term_taxonomy.term_id
JOIN wp_term_relationships term_relationships
ON ( term_relationships.term_taxonomy_id = term_taxonomy.term_taxonomy_id
AND term_taxonomy.taxonomy = 'category' )
JOIN wp_posts posts
ON ( posts.ID = term_relationships.object_id
AND posts.post_type='post'
AND posts.post_status='publish' )
GROUP BY terms.term_id
ORDER BY posts.post_modified_gmt DESC" );
foreach ($cat_array as $cat) {
$category = get_term_by( 'ID', $cat->term_id, 'category');
$post = get_post( $cat->post_ID );
echo '<a href="' . esc_attr(get_term_link($category, 'category')) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>';
echo get_the_post_thumbnail( $cat->post_ID, 'post-thumbnail' );
echo $category->name .': '.get_the_title( $post->ID ).'</a>'.'<br />';
}
La requête renvoie les catégories dans l'ordre de votre choix, triées par publication la plus récente, ainsi que l'ID de publication de la publication la plus récente de cette catégorie, que vous pouvez ensuite utiliser pour obtenir la vignette de la publication ou toute autre donnée de votre choix ( J'ai également repris le titre de l'article dans mon exemple, juste pour montrer comment cela peut être fait).
Ok, alors j'ai compris la moitié de la solution.
Ce code répertorie les catégories par dernière mise à jour;
<?php
$cat_array = array();
$args=array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 10,
'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();
$cat_args=array('orderby' => 'none');
$cats = wp_get_post_terms( $post->ID , 'category', $cat_args);
foreach($cats as $cat) {
$cat_array[$cat->term_id] = $cat->term_id;
}
endwhile;
}
if ($cat_array) {
foreach($cat_array as $cat) {
$category = get_term_by('ID',$cat, 'category');
echo '<a href="' . esc_attr(get_term_link($category, 'category')) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>'.'<br />';
}
}
wp_reset_query();
?>
Cependant, je ne suis pas sûr de savoir comment afficher l'image correspondante dans la catégorie.
Avec la catégorie X, il convient d’afficher l’image appartenant au dernier message de cette catégorie.
Quelqu'un peut aider avec ça? Merci!