Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




wp_get_archives [ WordPress Function ]

wp_get_archives ( $args = '' )
Parameters:
  • (string|array) $args Optional. Override defaults.
Defined at:



Display archive links based on type and format.

The 'type' argument offers a few choices and by default will display monthly archive links. The other options for values are 'daily', 'weekly', 'monthly', 'yearly', 'postbypost' or 'alpha'. Both 'postbypost' and 'alpha' display the same archive link list, the difference between the two is that 'alpha' will order by post title and 'postbypost' will order by post date.

The date archives will logically display dates with links to the archive post page. The 'postbypost' and 'alpha' values for 'type' argument will display the post titles.

The 'limit' argument will only display a limited amount of links, specified by the 'limit' integer value. By default, there is no limit. The 'show_post_count' argument will show how many posts are within the archive. By default, the 'show_post_count' argument is set to false.

For the 'format', 'before', and 'after' arguments, see {@link get_archives_link()}. The values of these arguments have to do with that function.

Source


<?php
function wp_get_archives($args '') {
    global 
$wpdb$wp_locale;

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

    
$r wp_parse_args$args$defaults );
    
extract$rEXTR_SKIP );

    if ( 
'' == $type )
        
$type 'monthly';

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

    
// this is what will separate dates on weekly archive links
    
$archive_week_separator '&#8211;';

    
// 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'getarchives_where'"WHERE post_type = 'post' AND post_status = 'publish'"$r );
    
$join apply_filters'getarchives_join'''$r );

    
$output '';

    if ( 
'monthly' == $type ) {
        
$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_set'wp_get_archives'$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(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year);
                if ( 
$show_post_count )
                    
$after '&nbsp;('.$arcresult->posts.')' $afterafter;
                
$output .= get_archives_link($url$text$format$before$after);
            }
        }
    } elseif (
'yearly' == $type) {
        
$query "SELECT YEAR(post_date) AS `year`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(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_set'wp_get_archives'$cache'general' );
        } else {
            
$arcresults $cache$key ];
        }
        if (
$arcresults) {
            
$afterafter $after;
            foreach ( (array) 
$arcresults as $arcresult) {
                
$url get_year_link($arcresult->year);
                
$text sprintf('%d'$arcresult->year);
                if (
$show_post_count)
                    
$after '&nbsp;('.$arcresult->posts.')' $afterafter;
                
$output .= get_archives_link($url$text$format$before$after);
            }
        }
    } elseif ( 
'daily' == $type ) {
        
$query "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, DAYOFMONTH(post_date) AS `dayofmonth`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date), DAYOFMONTH(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_set'wp_get_archives'$cache'general' );
        } else {
            
$arcresults $cache$key ];
        }
        if ( 
$arcresults ) {
            
$afterafter $after;
            foreach ( (array) 
$arcresults as $arcresult ) {
                
$url    get_day_link($arcresult->year$arcresult->month$arcresult->dayofmonth);
                
$date sprintf('%1$d-%2$02d-%3$02d 00:00:00'$arcresult->year$arcresult->month$arcresult->dayofmonth);
                
$text mysql2date($archive_day_date_format$date);
                if (
$show_post_count)
                    
$after '&nbsp;('.$arcresult->posts.')'.$afterafter;
                
$output .= get_archives_link($url$text$format$before$after);
            }
        }
    } elseif ( 
'weekly' == $type ) {
        
$week _wp_mysql_week'`post_date`' );
        
$query "SELECT DISTINCT $week AS `week`, YEAR( `post_date` ) AS `yr`, DATE_FORMAT( `post_date`, '%Y-%m-%d' ) AS `yyyymmdd`, count( `ID` ) AS `posts` FROM `$wpdb->posts$join $where GROUP BY $week, YEAR( `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_set'wp_get_archives'$cache'general' );
        } else {
            
$arcresults $cache$key ];
        }
        
$arc_w_last '';
        
$afterafter $after;
        if ( 
$arcresults ) {
                foreach ( (array) 
$arcresults as $arcresult ) {
                    if ( 
$arcresult->week != $arc_w_last ) {
                        
$arc_year $arcresult->yr;
                        
$arc_w_last $arcresult->week;
                        
$arc_week get_weekstartend($arcresult->yyyymmddget_option('start_of_week'));
                        
$arc_week_start date_i18n($archive_week_start_date_format$arc_week['start']);
                        
$arc_week_end date_i18n($archive_week_end_date_format$arc_week['end']);
                        
$url  sprintf('%1$s/%2$s%3$sm%4$s%5$s%6$sw%7$s%8$d'home_url(), '''?''='$arc_year'&amp;''='$arcresult->week);
                        
$text $arc_week_start $archive_week_separator $arc_week_end;
                        if (
$show_post_count)
                            
$after '&nbsp;('.$arcresult->posts.')'.$afterafter;
                        
$output .= get_archives_link($url$text$format$before$after);
                    }
                }
        }
    } elseif ( ( 
'postbypost' == $type ) || ('alpha' == $type) ) {
        
$orderby = ('alpha' == $type) ? 'post_title ASC ' 'post_date DESC ';
        
$query "SELECT * FROM $wpdb->posts $join $where ORDER BY $orderby $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_set'wp_get_archives'$cache'general' );
        } else {
            
$arcresults $cache$key ];
        }
        if ( 
$arcresults ) {
            foreach ( (array) 
$arcresults as $arcresult ) {
                if ( 
$arcresult->post_date != '0000-00-00 00:00:00' ) {
                    
$url  get_permalink$arcresult );
                    if ( 
$arcresult->post_title )
                        
$text strip_tagsapply_filters'the_title'$arcresult->post_title$arcresult->ID ) );
                    else
                        
$text $arcresult->ID;
                    
$output .= get_archives_link($url$text$format$before$after);
                }
            }
        }
    }
    if ( 
$echo )
        echo 
$output;
    else
        return 
$output;
}
?>

Examples [ wp-snippets.com ]

Top Google zoekresultaten

Meer ...

0 User Note(s)

Nog geen één. Wees de eerste!

Nieuw toevoegen ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics