Hallo,
ich arbeite gerade an einem Theme für meinen neuen Blog, welches besonders minimalistisch und aufs Wesentliche reduziert sein soll. Da mir die üblichen Lösungen, in der Sidebar die Monatsarchive darzustellen - über ul/li bzw. select/option - dafür nicht geeignet schienen, arbeite ich jetzt einer Lösung, die zu jeder Zeit nur einen Link zu einem bestimmten Monat anzeigt und dafür rechts und links einen kleinen Pfeil einbindet, über den man dann zwischen den einzelnen Monaten auswählen kann.
Siehe auch die Beta-Version des Blogs.
Bisher habe ich mich selbst an einem solchen Plugin versucht, bleibe allerdings an ein paar kniffligen Details stecken.
Aus dem jetzigen Stand kann man schon ersehen, was gemeint ist, nur funktioniert bisher der Wechsel zwischen den einzelnen Monaten nicht.
Daher meine Frage: Kennt jemand vielleicht bereits fertige Plugins, die eine solche Archiv-Auflistung ermöglichen?
Ansonsten ist hier der Code, wie er bisher vorhanden ist:
function.php
$current_slide = 0;
function archive_slide($direction = '') {
$dir = 0;
global $current_slide;
if ($direction = 'prev') {
$current_slide = $current_slide - 1;
} else if ($direction = 'next') {
$current_slide = $current_slide + 1;
}
if ($direction = '') {
$current_slide = 0;
}
global $wpdb, $wp_locale;
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$slides = array('');
//filters
$where = apply_filters('getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r );
$join = apply_filters('getarchives_join', "", $r);
$output = '';
$query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit";
$key = md5($query);
$cache = wp_cache_get( 'wp_get_archives' , 'general');
if ( !isset( $cache[ $key ] ) ) {
$arcresults = $wpdb->get_results($query);
$cache[ $key ] = $arcresults;
wp_cache_add( 'wp_get_archives', $cache, 'general' );
} else {
$arcresults = $cache[ $key ];
}
if ( $arcresults ) {
$afterafter = $after;
$i = 0;
foreach ( (array) $arcresults as $arcresult ) {
$url = get_month_link( $arcresult->year, $arcresult->month );
/* translators: 1: month name, 2: 4-digit year */
$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
$i++;
$slides[$i] = get_archives_link($url, $text, $format, $before, $after);
}
$slides = array_slice($slides, 0, -1);
$slides = array_reverse($slides);
$count = count($slides);
if ($current_slide <= 0) {
$current_slide = $count;
}
if ($current_slide > $count) {
$current_slide = 0;
}
$output = '<form name="slides" method="POST" action="' . $_SERVER['PHP_SELF'] . '"><input class="prev" name="prev" value="prev" type="submit">' . $slides[$current_slide-2] . '<input class="next" name="next" value="next" type="submit"></form>';
}
echo $output;
}
Alles anzeigen
sidebar.php:
<ul>
<li><?php
if (isset($_POST['prev'])) {
archive_slide($direction='prev');
} else if (isset($_POST['next'])) {
archive_slide($direction='next');
} else {
archive_slide();
} ?></li>
</ul>
Beste Grüße,
EarlMobile