function my_get_year_archives( $args = '' ) {
global $wpdb , $wp_locale ;
'date_field' => 'date' ,
'format' => 'html' ,
'echo' => true ,
'limit' => '' ,
'before' => '' ,
'after' => '' ,
'show_post_count' => true ,
) ;
$r = wp_parse_args( $args , $defaults ) ;
if ( '' != $limit ) {
$limit = absint( $limit ) ;
$limit = ' LIMIT ' . $limit ;
}
$field = 'm.meta_value' ;
$select = "SELECT SUBSTRING($field ,1,4) AS `year`, SUBSTRING($field ,6,2) AS `month`, SUBSTRING($field ,9,2) AS `day`, count(p.ID) AS posts" ;
$where = "WHERE p.post_type = 'カスタム投稿名' AND p.post_status = 'publish'" ;
$where .= $wpdb -> prepare ( ' AND m.meta_key = %s' , $date_field ) ;
$join = " INNER JOIN $wpdb->postmeta AS m ON m.post_id = p.ID" ;
$where = apply_filters( 'getarchives_where' , $where , $r ) ;
$join = apply_filters( 'getarchives_join' , $join , $r ) ;
$output = '' ;
$query = "$select FROM $wpdb->posts AS p $join $where GROUP BY SUBSTRING($field ,1,4), SUBSTRING($field ,6,2), SUBSTRING($field ,9,2) ORDER BY $field DESC $limit " ;
$cache = wp_cache_get( 'my_get_year_archives' , 'general' ) ;
if ( ! isset ( $cache [ $key ] ) ) { $arcresults = $wpdb -> get_results ( $query ) ;
$cache [ $key ] = $arcresults ;
wp_cache_set( 'my_get_year_archives' , $cache , 'general' ) ;
} else {
$arcresults = $cache [ $key ] ;
}
if ( $arcresults ) {
$afterafter = $after ;
foreach ( ( array ) $arcresults as $arcresult ) { $url = add_query_arg
( array ( 'meta_key' => $date_field ) , get_month_link
( $arcresult -> year , $arcresult -> month , $arcresult -> day ) ) ; $text = sprintf ( '%d' , $arcresult -> year ) . '/' . sprintf ( '%d' , $arcresult -> month ) . '/' . sprintf ( '%d' , $arcresult -> day ) ; if ( $show_post_count )
$after = ' (' . $arcresult -> posts . ')' . $afterafter ;
$output .= get_archives_link( $url , $text , $format , $before , $after ) ;
}
}
if ( $echo )
echo $output ;
else
return $output ;
}
add_action( 'init' , 'my_init' ) ;
function my_init( ) {
global $wp ;
$wp -> add_query_var ( 'meta_key' ) ;
}
add_action( 'pre_get_posts' , 'my_pre_get_posts' ) ;
function my_pre_get_posts( $query ) {
if ( $query -> is_month ) {
'key' => $query -> get ( 'meta_key' ) ,
'value' => $query -> get ( 'year' ) . '/' . sprintf ( '%02d' , $query -> get ( 'monthnum' ) . '/' . sprintf ( '%02d' , $query -> get ( 'day' ) ) , 'compare' => 'LIKE'
) ,
) ;
$query -> set ( 'meta_query' , $meta_query ) ;
$query -> set ( 'year' , '' ) ;
$query -> set ( 'monthnum' , '' ) ;
$query -> set ( 'day' , '' ) ;
$query -> set ( 'date' , '' ) ;
$query -> set ( 'meta_key' , '' ) ;
$query -> set ( 'post_type' , 'カスタム投稿名' ) ;
}
}
ZnVuY3Rpb24gbXlfZ2V0X3llYXJfYXJjaGl2ZXMoICRhcmdzID0gJycgKSB7CsKgwqDCoMKgZ2xvYmFsICR3cGRiLCAkd3BfbG9jYWxlOwrCoMKgCsKgwqDCoMKgJGRlZmF1bHRzID0gYXJyYXkoCsKgwqDCoMKgwqDCoMKgwqAnZGF0ZV9maWVsZCcgPT4gJ2RhdGUnLArCoMKgwqDCoMKgwqDCoMKgJ2Zvcm1hdCcgPT4gJ2h0bWwnLArCoMKgwqDCoMKgwqDCoMKgJ2VjaG8nID0+IHRydWUsCsKgwqDCoMKgwqDCoMKgwqAnbGltaXQnID0+ICcnLArCoMKgwqDCoMKgwqDCoMKgJ2JlZm9yZScgPT4gJycsCsKgwqDCoMKgwqDCoMKgwqAnYWZ0ZXInID0+ICcnLCAKwqDCoMKgwqDCoMKgwqDCoCdzaG93X3Bvc3RfY291bnQnID0+IHRydWUsCsKgwqDCoMKgKTsKwqDCoArCoMKgwqDCoCRyID0gd3BfcGFyc2VfYXJncyggJGFyZ3MsICRkZWZhdWx0cyApOwrCoMKgwqDCoGV4dHJhY3QoICRyLCBFWFRSX1NLSVAgKTsKwqDCoArCoMKgwqDCoGlmICggJycgIT0gJGxpbWl0ICkgewrCoMKgwqDCoMKgwqDCoMKgJGxpbWl0ID0gYWJzaW50KCAkbGltaXQgKTsKwqDCoMKgwqDCoMKgwqDCoCRsaW1pdCA9ICcgTElNSVQgJy4kbGltaXQ7CsKgwqDCoMKgfQrCoMKgCsKgwqDCoMKgJGZpZWxkwqAgPSAnbS5tZXRhX3ZhbHVlJzsKwqDCoMKgwqAkc2VsZWN0ID0gIlNFTEVDVCBTVUJTVFJJTkcoJGZpZWxkLDEsNCkgQVMgYHllYXJgLCBTVUJTVFJJTkcoJGZpZWxkLDYsMikgQVMgYG1vbnRoYCwgU1VCU1RSSU5HKCRmaWVsZCw5LDIpIEFTIGBkYXlgLCBjb3VudChwLklEKSBBUyBwb3N0cyI7CsKgwqDCoMKgJHdoZXJlwqAgPSAiV0hFUkUgcC5wb3N0X3R5cGUgPSAn44Kr44K544K/44Og5oqV56i/5ZCNJyBBTkQgcC5wb3N0X3N0YXR1cyA9ICdwdWJsaXNoJyI7CsKgwqDCoMKgJHdoZXJlIC49ICR3cGRiLT5wcmVwYXJlKCAnIEFORCBtLm1ldGFfa2V5ID0gJXMnLCAkZGF0ZV9maWVsZCApOwrCoMKgwqDCoCRqb2luwqDCoCA9ICIgSU5ORVIgSk9JTiAkd3BkYi0+cG9zdG1ldGEgQVMgbSBPTiBtLnBvc3RfaWQgPSBwLklEIjsKwqDCoMKgwqDCoMKgCsKgwqDCoMKgJHdoZXJlwqAgPSBhcHBseV9maWx0ZXJzKCAnZ2V0YXJjaGl2ZXNfd2hlcmUnLCAkd2hlcmUsICRyICk7CsKgwqDCoMKgJGpvaW7CoMKgID0gYXBwbHlfZmlsdGVycyggJ2dldGFyY2hpdmVzX2pvaW4nICwgJGpvaW4gLCAkciApOwrCoMKgCsKgwqDCoMKgJG91dHB1dCA9ICcnOwrCoMKgwqDCoCRxdWVyeSA9ICIkc2VsZWN0IEZST00gJHdwZGItPnBvc3RzIEFTIHAgJGpvaW4gJHdoZXJlIEdST1VQIEJZIFNVQlNUUklORygkZmllbGQsMSw0KSwgU1VCU1RSSU5HKCRmaWVsZCw2LDIpLCBTVUJTVFJJTkcoJGZpZWxkLDksMikgT1JERVIgQlkgJGZpZWxkIERFU0MgJGxpbWl0IjsKwqDCoMKgwqAka2V5ID0gbWQ1KCAkcXVlcnkgKTsKwqDCoMKgwqAkY2FjaGUgPSB3cF9jYWNoZV9nZXQoICdteV9nZXRfeWVhcl9hcmNoaXZlcycgLCAnZ2VuZXJhbCcgKTsKwqDCoMKgwqBpZiAoICFpc3NldCggJGNhY2hlWyAka2V5IF0gKSApIHsKwqDCoMKgwqDCoMKgwqDCoCRhcmNyZXN1bHRzID0gJHdwZGItPmdldF9yZXN1bHRzKCAkcXVlcnkgKTsKwqDCoMKgwqDCoMKgwqDCoCRjYWNoZVsgJGtleSBdID0gJGFyY3Jlc3VsdHM7CsKgwqDCoMKgwqDCoMKgwqB3cF9jYWNoZV9zZXQoICdteV9nZXRfeWVhcl9hcmNoaXZlcycsICRjYWNoZSwgJ2dlbmVyYWwnICk7CsKgwqDCoMKgfSBlbHNlIHsKwqDCoMKgwqDCoMKgwqDCoCRhcmNyZXN1bHRzID0gJGNhY2hlWyAka2V5IF07CsKgwqDCoMKgfQrCoMKgwqDCoGlmICggJGFyY3Jlc3VsdHMgKSB7CsKgwqDCoMKgwqDCoMKgwqAkYWZ0ZXJhZnRlciA9ICRhZnRlcjsKwqDCoMKgwqDCoMKgwqDCoGZvcmVhY2ggKCAoYXJyYXkpICRhcmNyZXN1bHRzIGFzICRhcmNyZXN1bHQgKSB7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCR1cmwgPSBhZGRfcXVlcnlfYXJnKCBhcnJheSggJ21ldGFfa2V5JyA9PiAkZGF0ZV9maWVsZCApLCBnZXRfbW9udGhfbGluayggJGFyY3Jlc3VsdC0+eWVhciwgJGFyY3Jlc3VsdC0+bW9udGgsICRhcmNyZXN1bHQtPmRheSkgKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJHRleHQgPSBzcHJpbnRmKCAnJWQnLCAkYXJjcmVzdWx0LT55ZWFyICkuJy8nLnNwcmludGYoICclZCcsICRhcmNyZXN1bHQtPm1vbnRoICkuJy8nLnNwcmludGYoICclZCcsICRhcmNyZXN1bHQtPmRheSApOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoJHNob3dfcG9zdF9jb3VudCkKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAkYWZ0ZXIgPSAnJm5ic3A7KCcuJGFyY3Jlc3VsdC0+cG9zdHMuJyknIC4gJGFmdGVyYWZ0ZXI7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCRvdXRwdXQgLj0gZ2V0X2FyY2hpdmVzX2xpbmsoICR1cmwsICR0ZXh0LCAkZm9ybWF0LCAkYmVmb3JlLCAkYWZ0ZXIgKTsKwqDCoMKgwqDCoMKgwqDCoH0KwqDCoMKgwqB9CsKgwqDCoMKgwqDCoMKgwqDCoMKgCsKgwqDCoMKgaWYgKCAkZWNobyApCsKgwqDCoMKgwqDCoMKgwqBlY2hvICRvdXRwdXQ7CsKgwqDCoMKgZWxzZQrCoMKgwqDCoMKgwqDCoMKgcmV0dXJuICRvdXRwdXQ7Cn0KwqDCoAphZGRfYWN0aW9uKCAnaW5pdCcsICdteV9pbml0JyApOwpmdW5jdGlvbiBteV9pbml0KCkgewrCoMKgwqDCoGdsb2JhbCAkd3A7CsKgwqDCoMKgJHdwLT5hZGRfcXVlcnlfdmFyKCAnbWV0YV9rZXknICk7Cn0KwqDCoAphZGRfYWN0aW9uKCAncHJlX2dldF9wb3N0cycsICdteV9wcmVfZ2V0X3Bvc3RzJyApOwpmdW5jdGlvbiBteV9wcmVfZ2V0X3Bvc3RzKCAkcXVlcnkgKSB7CsKgwqDCoMKgaWYgKCAkcXVlcnktPmlzX21vbnRoICkgewrCoMKgwqDCoMKgwqDCoMKgJG1ldGFfcXVlcnkgPSBhcnJheSgKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJyYXkoIArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCdrZXknwqDCoMKgwqAgPT4gJHF1ZXJ5LT5nZXQoICdtZXRhX2tleScgKSwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAndmFsdWUnwqDCoCA9PiAkcXVlcnktPmdldCggJ3llYXInwqDCoMKgwqAgKS4nLycuc3ByaW50ZignJTAyZCcsICRxdWVyeS0+Z2V0KCAnbW9udGhudW0nwqDCoMKgwqAgKS4nLycuc3ByaW50ZignJTAyZCcsICRxdWVyeS0+Z2V0KCAnZGF5J8KgwqDCoMKgICkpLArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCdjb21wYXJlJyA9PiAnTElLRScKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKSwKwqDCoMKgwqDCoMKgwqDCoCk7CsKgwqAKwqDCoMKgwqDCoMKgwqDCoCRxdWVyeS0+c2V0KCAnbWV0YV9xdWVyeScgLCAkbWV0YV9xdWVyeSApOwrCoMKgwqDCoMKgwqDCoMKgJHF1ZXJ5LT5zZXQoICd5ZWFyJ8KgwqDCoMKgwqDCoCAsICcnwqDCoMKgwqDCoMKgwqDCoMKgICk7CsKgwqDCoMKgwqDCoMKgwqAkcXVlcnktPnNldCggJ21vbnRobnVtJ8KgwqAgLCAnJ8KgwqDCoMKgwqDCoMKgwqDCoCApOwrCoMKgwqDCoMKgwqDCoMKgJHF1ZXJ5LT5zZXQoICdkYXknwqDCoCAsICcnwqDCoMKgwqDCoMKgwqDCoMKgICk7CsKgwqDCoMKgwqDCoMKgwqAkcXVlcnktPnNldCggJ2RhdGUnwqDCoMKgwqDCoMKgICwgJyfCoMKgwqDCoMKgwqDCoMKgwqAgKTsKwqDCoMKgwqDCoMKgwqDCoCRxdWVyeS0+c2V0KCAnbWV0YV9rZXknwqDCoCAsICcnwqDCoMKgwqDCoMKgwqDCoMKgICk7CsKgwqDCoMKgwqDCoMKgwqAkcXVlcnktPnNldCggJ3Bvc3RfdHlwZSfCoCAsICfjgqvjgrnjgr/jg6DmipXnqL/lkI0nKTsKwqDCoMKgwqB9Cn0=
stdout
function my_get_year_archives( $args = '' ) {
global $wpdb, $wp_locale;
$defaults = array(
'date_field' => 'date',
'format' => 'html',
'echo' => true,
'limit' => '',
'before' => '',
'after' => '',
'show_post_count' => true,
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
if ( '' != $limit ) {
$limit = absint( $limit );
$limit = ' LIMIT '.$limit;
}
$field = 'm.meta_value';
$select = "SELECT SUBSTRING($field,1,4) AS `year`, SUBSTRING($field,6,2) AS `month`, SUBSTRING($field,9,2) AS `day`, count(p.ID) AS posts";
$where = "WHERE p.post_type = 'カスタム投稿名' AND p.post_status = 'publish'";
$where .= $wpdb->prepare( ' AND m.meta_key = %s', $date_field );
$join = " INNER JOIN $wpdb->postmeta AS m ON m.post_id = p.ID";
$where = apply_filters( 'getarchives_where', $where, $r );
$join = apply_filters( 'getarchives_join' , $join , $r );
$output = '';
$query = "$select FROM $wpdb->posts AS p $join $where GROUP BY SUBSTRING($field,1,4), SUBSTRING($field,6,2), SUBSTRING($field,9,2) ORDER BY $field DESC $limit";
$key = md5( $query );
$cache = wp_cache_get( 'my_get_year_archives' , 'general' );
if ( !isset( $cache[ $key ] ) ) {
$arcresults = $wpdb->get_results( $query );
$cache[ $key ] = $arcresults;
wp_cache_set( 'my_get_year_archives', $cache, 'general' );
} else {
$arcresults = $cache[ $key ];
}
if ( $arcresults ) {
$afterafter = $after;
foreach ( (array) $arcresults as $arcresult ) {
$url = add_query_arg( array( 'meta_key' => $date_field ), get_month_link( $arcresult->year, $arcresult->month, $arcresult->day) );
$text = sprintf( '%d', $arcresult->year ).'/'.sprintf( '%d', $arcresult->month ).'/'.sprintf( '%d', $arcresult->day );
if ($show_post_count)
$after = ' ('.$arcresult->posts.')' . $afterafter;
$output .= get_archives_link( $url, $text, $format, $before, $after );
}
}
if ( $echo )
echo $output;
else
return $output;
}
add_action( 'init', 'my_init' );
function my_init() {
global $wp;
$wp->add_query_var( 'meta_key' );
}
add_action( 'pre_get_posts', 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
if ( $query->is_month ) {
$meta_query = array(
array(
'key' => $query->get( 'meta_key' ),
'value' => $query->get( 'year' ).'/'.sprintf('%02d', $query->get( 'monthnum' ).'/'.sprintf('%02d', $query->get( 'day' )),
'compare' => 'LIKE'
),
);
$query->set( 'meta_query' , $meta_query );
$query->set( 'year' , '' );
$query->set( 'monthnum' , '' );
$query->set( 'day' , '' );
$query->set( 'date' , '' );
$query->set( 'meta_key' , '' );
$query->set( 'post_type' , 'カスタム投稿名');
}
}