‘タグ’ カテゴリーのアーカイブ

アーカイブページで、何年何月何日と表示させる方法と条件分岐(query_posts)を他に影響を与えない方法

2010年1月11日 月曜日

archive.phpで、普通に

<?php single_month_title(); ?>

とすると、12月2009などとなります。

これを、何年何月、なおかつ、日付ぺーじでは何年何月何日と表示させるのに結構戸惑いました。

まず、何年何月何日と表示させるのは、

<?php
if(is_month()){
echo get_query_var(‘year’).’年’.get_query_var(‘monthnum’).’月’;
}else if(is_day()){
echo get_query_var(‘year’).’年’.get_query_var(‘monthnum’).’月’.get_query_var(‘day’).’日’;
}
?>

あるいは、

<?php
if(is_date()){
$title = get_the_time(‘Y’).’年’;
if(is_day() || is_month()) $title .= get_the_time(‘m’).’月’;
if(is_day()) $title .= get_the_time(‘d’).’日’;
echo $title;
}else{
wp_title();
}
?>

で大丈夫。

しかし、問題はこれより上に条件分岐タグがあった場合は、日付が全て同じ、あるいは、0年0月0日となってしまいます。

そこで、まず、

<?php query_posts(‘cat=6 & order=desc & showposts=1′); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

は使わずに

<?php //$newquery = new WP_Query(‘cat=6 &order=desc & showposts=1′);
//if ($newquery->have_posts()): ?>
<?php //while ($newquery->have_posts()) : $newquery->the_post(); ?>

をつかってみたけれども、結果は同じ、

結果、

<?php query_posts(‘cat=6 & order=desc & showposts=1′); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

のあと、ループ終了後に

<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

とするとOKでした。

お疲れ様でした。

出力条件と分割ページへのリンクがうまく作動しない

2010年1月3日 日曜日

query_posts(’cat=3’)
でループの出力条件を指定して
posts_nav_link();
でページ送り(分割ページへのリンク)を表示させようとするとうまく作動しませんでした。

前のページへのリンクをクリックしても、同じ記事が表示されます。
URLの表示は、/?paged=2、/?paged=3となっておりますが、内容は同じです。

$posts=get_posts(‘category=3′)
を使っても同じような状態でした。

それで、条件式を

<?php query_posts(‘posts_per_page=5&cat=-5,-6,-7&paged=’.$paged); ?>

とすると、なぜか行きました。

よくわからないが、まあ出来たので良かった。