Kürzlich arbeiteten wir an einem Website-Design eines Kunden, bei dem wir monatliche Archive nach Jahr geordnet in der Seitenleiste anzeigen mussten. Es war wahrscheinlich für ihren Designer wirklich einfach, es in Photoshop nachzuahmen, aber in WordPress war es etwas kompliziert. Siehe das Bild unten:
Jetzt fragen Sie sich wahrscheinlich, warum es schwierig war, es in WordPress zu integrieren, wenn wp_get_archives() die Archive monatlich mit der Jahreszahl daneben auflisten? Das liegt daran, dass dieser Kunde die Jahreszahl nur einmal auf der linken Seite anzeigen wollte. Es gibt keine wirkliche Möglichkeit, das Styling der Funktion wp_get_archives() anzupassen.
Wir haben uns im Internet nach Lösungen umgesehen und sind auf nichts gestoßen. Dieses Problem muss wirklich selten sein, aber wir haben das festgestellt Andrew Appleton hatte das ähnliche Problem und er hatte eine Lösung dafür. Wir haben seine Codes mit kleinen Modifikationen verwendet.
Andrews Code hatte keinen Grenzwertparameter für die Archive. Die Verwendung seiner Codes würde also bedeuten, dass Sie alle Archive des Monats anzeigen. Stellen Sie sich das für einen Blog vor, der 5 Jahre alt ist. Also haben wir einen Limit-Parameter hinzugefügt, der es uns ermöglicht, die Anzahl der angezeigten Monate auf 18 zu begrenzen.
Im Grunde musst du also den folgenden Code in dein Theme einfügen sidebar.php Datei oder eine andere Datei, in der Sie benutzerdefinierte WordPress-Archive anzeigen möchten:
<?php global $wpdb; $limit = 0; $year_prev = null; $months = $wpdb->get_results("SELECT DISTINCT MONTH( post_date ) AS month , YEAR( post_date ) AS year, COUNT( id ) as post_count FROM $wpdb->posts WHERE post_status="publish" and post_date <= now( ) and post_type="post" GROUP BY month , year ORDER BY post_date DESC"); foreach($months as $month) : $year_current = $month->year; if ($year_current != $year_prev){ if ($year_prev != null){?> <?php } ?> <li class="archive-year"><a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/"><?php echo $month->year; ?></a></li> <?php } ?> <li><a href="<?php bloginfo('url') ?>/<?php echo $month->year; ?>/<?php echo date("m", mktime(0, 0, 0, $month->month, 1, $month->year)) ?>"><span class="archive-month"><?php echo date_i18n("F", mktime(0, 0, 0, $month->month, 1, $month->year)) ?></span></a></li> <?php $year_prev = $year_current; if(++$limit >= 18) { break; } endforeach; ?>
Hinweis: Wenn Sie die Anzahl der angezeigten Monate ändern möchten, müssen Sie Zeile 19 ändern, in der der aktuelle $limit-Wert auf 18 gesetzt ist.
Unser CSS sah ungefähr so aus:
.widget-archive{padding: 0 0 40px 0; float: left; width: 235px;} .widget-archive ul {margin: 0;} .widget-archive li {margin: 0; padding: 0;} .widget-archive li a{ border-left: 1px solid #d6d7d7; padding: 5px 0 3px 10px; margin: 0 0 0 55px; display: block;} li.archive-year{float: left; font-family: Helvetica, Arial, san-serif; padding: 5px 0 3px 10px; color:#ed1a1c;} li.archive-year a{color:#ed1a1c; margin: 0; border: 0px; padding: 0;}
Auf diese Weise hatten wir das Endergebnis, das wie folgt aussah:
Wenn Sie nun die Anzahl der Beiträge in jedem Monat anzeigen möchten, müssen Sie diesen Code irgendwo zwischen den Zeilen 12 – 16 des obigen Codes hinzufügen:
<?php echo $month->post_count; ?>
Ein Beispiel dafür, was Sie mit der Beitragszählung machen können, und alles ist im Bild unten zu sehen:
Das obige Bild wurde von Website von Andrew Appleton denn das war die von ihm entwickelte Lösung, aus der wir unseren Stil abgeleitet haben. Wenn Sie das CSS für seine Stile sehen möchten, klicken Sie einfach oben auf seinen Website-Link.
Kennen Sie einen einfacheren Weg, dies zu erreichen? Werden Sie die Anzeige Ihres WordPress-Archivs im nächsten Design anpassen? Bitte teilen Sie Ihre Gedanken im Kommentarfeld unten mit.