it-swarm.com.de

Beiträge/Seiten in veröffentlichte Jahre einteilen

Ich habe viele Posts/Seiten und möchte eine Liste in meiner Seitenleiste erstellen, in der alle Jahre angezeigt werden, in denen ich Posts/Seiten erstellt habe. Beispiel: Ich habe 5 Posts/Seiten mit einem Abstand zueinander In mehr als 5 Jahren, von 2006 bis 2011, möchte ich, dass 2005, 2006, 2007, 2008, 2009, 2010 und 2011 jedes Jahr mit einem Beitrag als Listenelemente in der Seitenleiste als Links zu allen erstellten Beiträgen/Seiten angezeigt werden dieses Jahr.

Hast du eine Idee, wie ich das erreichen kann?

Vielen Dank im Voraus!

1
Odyss3us

Ich bin mir nicht sicher, ob es eine bestimmte Funktion dafür gibt, da ich mit einer schnellen Suche nichts gefunden habe, aber ich habe eine Funktion geschrieben, um die Arbeit zu erledigen, sie zu erweitern oder mit ihr zu tun, was immer Sie wollen.

Auflisten von Jahresarchiven für veröffentlichte Beiträge eines Typs

Code wird "so wie er ist" zur Verfügung gestellt. Tun Sie, was Sie wollen.

function get_years_for_type( $type = 'post', $echo = false, $sep = '<br />' ) {
    global $wpdb, $wp_post_types;

    $type = '' == $type ? 'post' : $type;

    if( !isset( $wp_post_types[$type] ) )
        return;

    $q = $wpdb->get_col( $wpdb->prepare( "SELECT YEAR(post_date) as year FROM wp_posts WHERE post_type = %s AND post_status = 'publish' GROUP by year", $type ) );

    if( empty( $q ) )
        return;

    $y = array();
    foreach( $q as $year )
        $y[] = '<a href="' . get_year_link( $year ) . '">' . $year . '</a>';

    $y = implode( $sep, $y );

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

Anwendungsbeispiel:

// Output list of years for pages
echo get_years_for_type( 'page' );
get_years_for_type( 'page', true ); 

// Output list of years for posts
echo get_years_for_type();
get_years_for_type( 'post', true ); 

// Storing the result in a variable
$var = get_years_for_type(); // post is assumed for type when none set

// Using an alternate seperator for the links
echo get_years_for_type( 'post', false, ' | ' );    
get_years_for_type( 'post', true, ' | ' );

Hoffentlich hilft das..

1
t31os

Es gibt eine anständige native Funktion wp_get_archives() für solche, aber das native Archiv-Widget verwendet leider nicht alle Funktionen und ist auf monatliche Archive beschränkt.

Schauen Sie sich das Widgets Reloaded Plugin an. Es ersetzt native Widgets durch konfigurierbarere Versionen.

1
Rarst