前の月と次の月のリンク

気分転換にお散歩して撮ってきたつまらない写真でスンマソン

絶賛?作成中のテーマですが、「次の月へ」「前の月へ」というリンクがないことにふと気がついた。んなぁもんは標準のタグでちょいちょいっと…と思っていたら、ない。なんか知らんけどない。ということで作る事にしたんだけれど…実は結構厄介なシロモノ。

月別アーカイブの現在月を取って、普通に足し算引き算すれば…ダメですな。全く書かなかった月でコケる(現在月がなくなるため)。じゃぁポストがあるまでぐるぐる…それもダメ。最初と最後で無限ループ(笑)。結局DBで判断という結論に。


<?php
$link_next_month = '';
$link_prev_month = '';

global $wpdb;

$thisyear = intval( get_the_time( 'Y' ) );
$thismonth = intval( get_the_time( 'm' ) );

$previous = $wpdb->get_row(
"SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
FROM $wpdb->posts
WHERE post_date < '$thisyear-$thismonth-01' AND post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1"); $next = $wpdb->get_row(
"SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
FROM $wpdb->posts
WHERE post_date > '$thisyear-$thismonth-01'
AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' )
AND post_type = 'post'
AND post_status = 'publish'
ORDER BY post_date ASC
LIMIT 1");

if( $previous ) $link_prev_month = get_month_link( $previous->year, $previous->month );
if( $next ) $link_next_month = get_month_link( $next->year, $next->month );
?>

とまぁこんな感じにちょいちょいっと書いて適当な場所に貼付けてやれば、リンク用URLが作られる。後は好きにリンクタグに突っ込んでやればめでたくリンクが出来る…という寸法。つーか面倒というかなんというか、こういうのは標準で用意してよっと。

SQL引っ張ってくるところはめんどっちいのでこの人のエントリを参考に、必要な部分だけちょいちょいっともらって…と。ちなみに、月別アーカイブへの入り方は個別エントリからなんだけれど、トップからの入り方を考え中ってことで。


add your comment

*First time to comment? Please comment in English or Japanese to avoid your comment as spam.