web-dev-qa-db-fra.com

Trier les catégories X par dernière mise à jour et afficher l'image

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?

3
Martin-Al

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).

3
goldenapples

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!

1
Martin-Al