X

Wie man schön formatierte Archive nach Monat, getrennt nach Jahr

Schnipsel von IsItWP

Suchen Sie nach einer Möglichkeit, eine schön formatierte Archivliste von Monaten, getrennt nach Jahren, anzuzeigen? Es gibt wahrscheinlich ein Plugin dafür, aber wir haben einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um formatierte Archive nach Monat, getrennt nach Jahr, in WordPress anzuzeigen.

Anweisungen:

Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:

function wp_custom_archive($args = '') {
    global $wpdb, $wp_locale;

    $defaults = array(
        'limit' => '',
        'format' => 'html', 'before' => '',
        'after' => '', 'show_post_count' => false,
        'echo' => 1
    );

    $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP );

    if ( '' != $limit ) {
        $limit = absint($limit);
        $limit = ' LIMIT '.$limit;
    }

    // over-ride general date format ? 0 = no: use the date format set in Options, 1 = yes: over-ride
    $archive_date_format_over_ride = 0;

    // options for daily archive (only if you over-ride the general date format)
    $archive_day_date_format = 'Y/m/d';

    // options for weekly archive (only if you over-ride the general date format)
    $archive_week_start_date_format = 'Y/m/d';
    $archive_week_end_date_format   = 'Y/m/d';

    if ( !$archive_date_format_over_ride ) {
        $archive_day_date_format = get_option('date_format');
        $archive_week_start_date_format = get_option('date_format');
        $archive_week_end_date_format = get_option('date_format');
    }

    //filters
    $where = apply_filters('customarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r );
    $join = apply_filters('customarchives_join', "", $r);

    $output = '<ul>';

        $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_custom_archive' , 'general');
        if ( !isset( $cache[ $key ] ) ) {
            $arcresults = $wpdb->get_results($query);
            $cache[ $key ] = $arcresults;
            wp_cache_set( 'wp_custom_archive', $cache, 'general' );
        } else {
            $arcresults = $cache[ $key ];
        }
        if ( $arcresults ) {
            $afterafter = $after;
            foreach ( (array) $arcresults as $arcresult ) {
                $url = get_month_link( $arcresult->year, $arcresult->month );
                /* translators: 1: month name, 2: 4-digit year */
                $text = sprintf(__('%s'), $wp_locale->get_month($arcresult->month));
                $year_text = sprintf('<li>%d</li>', $arcresult->year);
                if ( $show_post_count )
                    $after = '&nbsp;('.$arcresult->posts.')' . $afterafter;
                $output .= ( $arcresult->year != $temp_year ) ? $year_text : '';
                $output .= get_archives_link($url, $text, $format, $before, $after);

                $temp_year = $arcresult->year;
            }
        }

    $output .= '</ul>';

    if ( $echo )
        echo $output;
    else
        return $output;
}

Fügen Sie diesen Schnipsel in Ihre index.php-Datei oder eine andere Vorlagendatei ein, in der Sie die formatierten Archive anzeigen möchten.

<?php 
           wp_custom_archive(); 
?>

Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzuf ilde{A}gen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress kopieren / einf ilde{A}gen, damit Sie Ihre Website nicht versehentlich besch ilde{A}digen.

Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: 9 beste WordPress-Auktions-Plugins und wie man ein Gastbeitrags-Einreichungsformular in WordPress erstellt.

Kommentare   Hinterlasse eine Antwort

  1. Tolle Arbeit, mein Lieber.. Können Sie mir bitte sagen, wie ich die Anzahl der Beiträge nach Monaten anzeigen kann? Im Moment werden die Monatsnamen angezeigt

  2. Wie kann ich den letzten Monat des Jahres in diesen Plugins entfernen?

  3. Cristian Florescu 9. Oktober 2018 um 20:40 Uhr

    $temp_year nicht definiert 😉

  4. Genialer Code! Vielen Dank, Mann!

    1. Kein Problem, gerne geschehen!

  5. Genialer Code! Vielen Dank, Mann!

  6. Genialer Code! Vielen Dank, Mann!

  7. Genialer Code. Genau das, was ich gesucht habe. Wissen Sie vielleicht, wie man ihn verfeinert, um nur einen benutzerdefinierten Beitragstyp abzurufen? *hoffnungsvoll wartend 🙂

    1. post_type ist hier definiert, „WHERE post_type = ‘post‘“

  8. Das ist ein sehr gutes Beispiel. Danke, jetzt ist es möglich, Monate einer bestimmten Kategorie zu laden?

  9. Jony Fernando Schulz 27. März 2013 um 12:54 Uhr

    Sehr schön. Großartig. Danke!

  10. Wow. Das ist eine großartige Lösung ohne Plugin. Funktioniert perfekt. Danke für den Snippet

  11. Genau das, was ich brauchte, das sollte in den WordPress-Kern integriert werden, es ist so gut

  12. Großartige Lösung, danke 🙂

  13. Lieber Kevin,
    Es ist schwer, dein Skript zu verstehen. Möchtest du es mit einer Tabelle in der MySQL-Datenbank anhängen? Vielleicht ist es für mich klarer, weil ich neu in PHP bin. Danke

  14. Ich weiß, dass dies ein alter Beitrag ist. Aber gibt es eine Möglichkeit, die Kategorie der Archivliste anzugeben? Vorzugsweise durch Übergabe des Werts vom wp_custom_archive-Tag. Damit ich mehrere Archivlisten auf einer Seite platzieren könnte. Ich möchte eine Archivliste für Kategorie 9 und eine separate Archivliste für Kategorie 4. Damit der Tag so etwas wie wp_custom_archive(‘9’) und wp_custom_archive(‘4’) wäre.

    Irgendeine Hilfe?

    1. hhhmmm Hallo John, es gibt viele Archiv-Plugins, die eine bessere Lösung sein könnten, wenn du so detailliert mit deinen Archiven umgehen möchtest.

    2. Falls du dich immer noch fragst, ich habe oben einen modifizierten Code gepostet (29.05.2017), der das Filtern nach Kategorie ermöglicht.

Kommentar hinzufügen

Wir freuen uns, dass Sie einen Kommentar hinterlassen haben. Bitte beachten Sie, dass alle Kommentare gemäß unserer Datenschutzrichtlinie moderiert werden und alle Links nofollow sind. Verwenden Sie KEINE Schlüsselwörter im Namensfeld. Lassen Sie uns ein persönliches und bedeutungsvolles Gespräch führen.

WordPress Launch Checkliste

Die ultimative Checkliste für den Start von WordPress

Wir haben alle wichtigen Checklistenpunkte für den Start Ihrer nächsten WordPress-Website in einem praktischen E-Book zusammengefasst.
Ja, senden Sie mir das kostenlose E-Book!