wp_list_categories: Holen Sie sich das neueste featured_image der Kategorie

Ich habe über eine bessere Möglichkeit nachgedacht, die Kategorien in meiner Sidebar anzuzeigen. Anstelle eines einfachen Listenstils möchte ich auch Bilder / Thumbnails anzeigen lassen.

Derzeit verwende ich Folgendes:

 

Zeigen Sie einfach den Namen / Link + Post-Anzahl jeder Kategorie an. Ich möchte das behalten, aber auch ein Thumbnail hinzufügen.

Ich habe dieses Board nach Antworten gesucht und darüber nachgedacht, wie es geht, aber ich konnte noch keine Lösung finden.

Ich denke, ich muss eine function erstellen, die das vorgestellte Bild des neuesten Beitrags in dieser Kategorie enthält. Wenn ein Beitrag mehr Kategorien hat, sollte das auch keine Probleme verursachen.

Es wäre eine Option, eine Schleife mit nur einem Post in dieser Kategorie zu erstellen und nur das Thumbnail auszugeben, aber es so zu setzen, dass die Thumbnail- und Kategorieübereinstimmung ein Problem darstellen kann. Ich bin mir sicher, dass es einen besseren Weg dafür geben muss.

Ich bin nicht auf der Suche nach einem Plugin (da bin ich sicher, es gibt einige), ich möchte es hart codieren.

Wenn jemand eine gute Idee oder einen Rat hat, wie man das angehen kann, dann bitte hilf mir.

Vielen Dank!

Solutions Collecting From Web of "wp_list_categories: Holen Sie sich das neueste featured_image der Kategorie"

Sie können einen benutzerdefinierten Walker verwenden , von dem in Ihrem Fall die Walker_Category am einfachsten ist und Sie es wie Walker_Category erweitern:

 class CategoryThumbnail_Walker extends Walker_Category { // A new element has been stumbled upon and has ended function end_el( &$output, $category, $depth, $args ) { // Output the standard link ending parent::end_el( &$output, $category, $depth, $args ); // Get one post $posts = get_posts( array( // ...from this category 'category' => $category->cat_ID, 'numberposts' => 1 ) ); // If a post has been found if ( isset($posts[0]) ) { // Get its thumbnail and append it to the output $featured = get_the_post_thumbnail( $posts[0]->ID, 'thumbnail', null ); $output .= $featured; } } } 

Nun können Ihre wp_list_categories diesen Walker verwenden, indem Sie ein zusätzliches walker Argument wie wp_list_categories :

 wp_list_categories( array('walker' => new CategoryThumbnail_Walker()) ); 

Wie Sie sehen können, haben wir zwei zusätzliche Abfragen für jede Kategorie, eine, um den neuesten Post zu erhalten, und eine, um das vorgestellte Bild zu erhalten. Stellen Sie daher sicher, dass dieser Overhead bestätigt wird.

Wenn Sie die Ausgabe weiter anpassen möchten, müssen Sie die gesamte functionalität von end_el oder start_el für die class start_el Walker_Category .

Duplikate

Um sicherzustellen, dass keine doppelten Bilder angezeigt werden, müssen Sie Folgendes tun:

  • Speichern Sie das angezeigte Bild in einem Array
  • überprüfe mit jedem neuen Bild, ob es im Array existiert
  • Wenn es existiert – nächste Post und überprüfen Sie das Bild
  • Wenn es nicht existiert, fügen Sie es zu Array und Ausgabe hinzu
  • Verstehen Sie, was Sie tun, wie es funktioniert und wie Sie in Ihrem Kontext in Arbeitscode eingreifen (indem Sie die Dokumente lesen und mehr über PHP und WordPress erfahren)

Der Code würde also ungefähr so ​​aussehen:

 class CategoryThumbnail_Walker extends Walker_Category { // A new element has been stumbled upon and has ended function end_el( &$output, $category, $depth, $args ) { // Output the standard link ending parent::end_el( &$output, $category, $depth, $args ); // Get one post $posts = get_posts( array( // ...from this category 'category' => $category->cat_ID, 'numberposts' => 10 ) ); // we'll record the seen images here if ( !isset($this->images_seen) ) $this->images_seen = array(); foreach ( $posts as $post ) { // Get its thumbnail and append it to the output $featured = get_the_post_thumbnail( $post->ID, 'thumbnail', null ); // have we already seen this image? if ( in_array($featured, $this->images_seen) ) continue; else { $this->images_seen []= $featured; $output .= $featured; break; } } } } 

Ich weiß, du hast gesagt, du wolltest kein Plugin benutzen, aber ich werde es trotzdem weiterempfehlen: Taxonomie Bilder

Sie können es immer nur in Ihrer functionsdatei fest codieren. Es fügt den Kategorien zum Hinzufügen bestimmter Bilder zu jeder Kategorie ein nettes kleines Interface hinzu und bietet einige einfache Möglichkeiten, dieses Bild auf Ihren Seiten zu erhalten. Es funktioniert auch mit benutzerdefinierten Taxonomien ohne Probleme.

Ich erwähne das Plugin, weil ich für ein Projekt, an dem ich gearbeitet habe, zuerst versucht habe, das vorgestellte Bild des neuesten Beitrags in dieser Kategorie zu zeigen. Aber wenn ein bestimmter Beitrag in mehr als einer Kategorie war, war das gleiche Bild wiederholte sich mehrfach und sah funky aus.

Ein Bild für jede Kategorie zu haben, wurde konsistent gehalten. Das Plugin ist einfach zu benutzen, so dass der Client das Bild ohne Probleme ändern kann. Ich habe auch eine kleine if-statement geschrieben, falls der Klient eine neue Kategorie erstellt, aber kein Bild hinzugefügt hat, so dass es dann das Thumbnail des letzten Posts für diese Kategorie verwendet (eine Art langatmiger, aber Sie bekommen den Punkt) :

  < ?php while ($my_query->have_posts()) : $my_query->the_post(); ?>  < ? /*asks if the category has an image...else use the post Thumbnail...then if not use the wedding.jpg */ ?>  < ?php $image_link = ""; $image = apply_filters( 'taxonomy-images-list-the-terms', '', array( 'taxonomy' => 'video_types', 'image_size' => 'detail', 'after' => '', 'after_image' => '', 'before' => '', 'before_image' => '' ) ); if ( ! empty( $image ) ) {print $image;} elseif ( has_post_thumbnail() ) {the_post_thumbnail(); } else { ?> < ?php echo $term->name;?> < ?php } ?>  < ?php endwhile; ?> < ?php } } } wp_reset_query(); // Restore global post data stomped by the_post(). ?>