it-swarm.com.de

Sortieren Sie die X Kategorien nach der letzten Aktualisierung und zeigen Sie das Bild an

Ich möchte X Kategorien anzeigen und nach der letzten Aktualisierung sortieren.

Ich möchte auch das Bild des neuesten Beitrags mit der Kategorie erfassen.

<img src="<?php echo get_image('article_image',1,1,0,NULL,$res75); ?>" />

Die Kategorieliste wird also von Bildern mit dem entsprechenden Kategorienamen darunter angezeigt.

Sortiert nach letztem Update.

Wie würde ich das machen?

3
Martin-Al

Hier ist eine Lösung:

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 />';

}

Die Abfrage gibt die Kategorien in der von Ihnen gewünschten Reihenfolge, sortiert nach dem neuesten Beitrag, zusammen mit der Beitrags-ID des neuesten Beitrags in dieser Kategorie zurück, mit der Sie dann das Miniaturbild des Beitrags oder andere von Ihnen gewünschte Daten abrufen können ( Ich habe auch den Post-Titel in meinem Beispiel wiederholt, um zu zeigen, wie es gemacht werden kann.

3
goldenapples

Ok, also habe ich die Hälfte der Lösung herausgefunden.

Dieser Code listet die Kategorien nach der letzten Aktualisierung auf.

        <?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();
    ?>

Ich bin mir jedoch nicht sicher, wie ich dafür sorgen kann, dass das entsprechende Bild in der Kategorie angezeigt wird.

Bei Kategorie X sollte das Bild angezeigt werden, das zum neuesten Beitrag in dieser Kategorie gehört.

Kann mir jemand dabei helfen? Vielen Dank!

1
Martin-Al