将帖子/页面归类为出版年份

时间:2011-02-10 作者:Odyss3us

我有很多帖子/页面,我想在侧边栏中创建一个列表,显示我在其中创建帖子/页面的所有年份,例如,如果我有5个帖子/页面,间隔5年,从2006年到2011年,每年有一篇帖子,我希望2005、2006、2007、2008、2009、2010和2011年在侧边栏中显示为列表项,作为当年创建的所有帖子/页面的链接。

你知道我怎样才能做到吗?

Thanx提前!

2 个回复
最合适的回答,由SO网友:t31os 整理而成

我不确定是否有一个特定的函数,因为我没有通过快速搜索找到任何东西,但我继续写了一个函数来完成这项工作,可以随意扩展,也可以用它做任何你喜欢的事情。

“按原样”提供代码类型的已发布帖子的列表年存档,您可以随意使用它。

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;
}
Example usage:

// 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, \' | \' );
希望这有帮助。。

SO网友:Rarst

有不错的本机功能wp_get_archives() 对于这种情况,但不幸的是,本机归档小部件并没有全部使用,并且仅限于每月归档。

看看Widgets Reloaded 插件,它用更可配置的版本取代了本机小部件。

结束

相关推荐

WordPress删除wp_List_Categories中最后一项的分隔符

我正在尝试删除最后一个分隔符(通常是<br/> 标记,但我将其从wp\\u list\\u categories的最后一个链接更改为“/”)。基本上我想要这个:类别1//类别2//类别3//看起来像这样:类别1//类别2//类别3以下是我当前使用的代码:<?php $cat_array = array(); $args = array( \'author\' => get_the_author_meta(\'id\'),&#x