wordpress初心者です。
カスタム投稿で「年度別アーカイブ」のプルダウン表示につきまして、ご存じの方がいましたらご教示いただければ幸いです。
eventというカスタム投稿名で、「年別」でのプルダウンでのアーカイブ表示は出来ました。
以下HTML部分
<select id="sel_year" name="year" name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'> <?php wp_get_archives('post_type=event&type=yearly&format=option'); ?> </select>ここから「年度別」にする方法がわかりません。
しらべてみると、通常のpostを年度別にする方法はありました。
該当のソースコード
function query_for_fiscal_year( $where ) {
global $wpdb, $wp_query, $fiscal_year; if ( is_year() ) { $fiscal_year = (int)$wp_query->query_vars['year']; $next_year = $fiscal_year + 1; $where = "
AND ( ( YEAR($wpdb->posts.post_date) = '$fiscal_year' AND
MONTH($wpdb->posts.post_date) BETWEEN '4' AND '12' ) OR ( YEAR($wpdb->posts.post_date) = '$next_year' AND
MONTH($wpdb->posts.post_date) BETWEEN '1' AND '3') ) AND $wpdb->posts.post_type = 'post'
AND ($wpdb->posts.post_status = 'publish' OR $wpdb->posts.post_status = 'private')";
}
return $where;
}
add_action( 'posts_where', 'query_for_fiscal_year' );
function my_get_archives_by_fiscal_year ( $args = '' ) {
global $wpdb, $wp_locale; $defaults = array ( 'post_type' => 'post', '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; } $output = ''; $arcresults = (array) $wpdb->get_results( "SELECT YEAR(ADDDATE(post_date, INTERVAL -3 MONTH)) AS `year`,
COUNT(ID) AS posts
FROM $wpdb->posts
WHERE post_type = '$post_type' AND post_status = 'publish'
GROUP BY YEAR(ADDDATE(post_date, INTERVAL -3 MONTH))
ORDER BY post_date DESC
$limit"
);
if ( $arcresults ) { $afterafter = $after; foreach ( $arcresults as $arcresult ) { $url = get_year_link( $arcresult->year ); $text = $arcresult->year . '年度'; if ( $show_post_count ) $after = ' (' . $arcresult->posts . ')' . $afterafter; $output .= get_archives_link( $url, $text, $format, $before, $after ); } } if ( $echo ) echo $output; else return $output;
}
HTML
select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
試したこと
上記のコードで通常のpostは年度別になることは確認できました。
これをベースに、
AND $wpdb->posts.post_type = 'post'
及び
$defaults = array (
'post_type' => 'post',
をカスタム投稿名に変更すれば動くかと思いましたが、動作しませんでした。
どのようにカスタマイズすれば、カスタム投稿でも利用可能でしょうか?
また、上記コード以外でカスタム投稿で年度別にアーカイブをプルダウン形式で表示される方法はございますでしょうか?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー