カレンダーと月別アーカイブからの表示のカスタマイズ
以前書いたCQSについて質問があったので、わかればと思って調べてみましたが、その過程でいくつか気付いたことがあります。
一番最初にカテゴリーから記事を表示すると段落が崩れてしまうという現象が発生したのでリスト化していましたが、実験のため「wordpress-3.1.2-ja」のオリジナルの”category.php”を入れてみたら以下のような表示になっていることに気づきました。
バージョンアップによるものなのかCQSを使用したことによる影響なのかは分かりませんが、これなら変にリスト化しなくてもよいので、これを採用することにしました。
ここからがある意味本題ですが、従来カレンダーの日付をクリックすると以下のような表示になってしまっていました。
つまり、カレンダー⇒リスト⇒記事となってしまい、基本的に1日1記事の投稿であるので、見る方からすると面倒です。
気にはなっていたのですが、カテゴリーやアーカイブについてはそれ用のPHPファイルがあるのにカレンダーからの表示がどのようにコントロールされているのかが分からなかったのでそのままにしてありました。
しかし今回の質問について考えていた過程で、カレンダーはいわば日別のアーカイブのようなものなので、カレンダーからの表示も結局 archive.phpで制御されているのではないかと思いつきました。
そのように考えると1日に1件しか投稿が投稿がなければ、上記のような表示になるということも理解できます。
目標とすべきは、月別のアーカイブはリスト表示⇒各記事、カレンダー⇒記事という表示を実現することです。
基本からわかるWORDPRESS3カスタマイズブックを見ていたら、「日付・時間別のアーカイブ」で優先的に適用されるファイルには順序があり、まず”date.php”で、これがなければ”archive.php”、ついで”index.php”が適用されるということでした。
Twentytenの中身には”date.php”が含まれていなかったので、個別記事ページのファイルであるsingle.phpをdate.phpと名前を変えて、日別の場合は個別記事ページの表示、それ以外(月別)の場合はリスト表示と処理を分岐させてやればいいのではないかと考えました。
ここから先は理屈はExcelの関数と似たようなもののはずという考えのもと試行錯誤の結果以下のような結論にたどり着きました。
以下は上記のとおり、single.phpの名前をdate.phpに変更し、標準的なarchive.phpのコードを参考にしたものです。コードとしてもっときれいな作り方等あると思いますが、素人ですから勘弁して下さい。
画面キャプチャだと小さくてよくわからないので、テキストで貼り付けておきます。ものすごく見にくいですが単なる参考なのですみません。
以下上記と同じ(ただしアドセンスのコードは削除)
———————————————————————–
<?php/**?* The Template for displaying all single posts.?*?* @package WordPress?* @subpackage Twenty_Ten?* @since Twenty Ten 1.0?*/
get_header(); ?>
<div id=”container”> <div id=”content” role=”main”>
<?php if ( is_day() ) : ?>? <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<div id=”nav-above”> <div><?php previous_post_link( ‘%link’, ‘<span>’ . _x( ‘←’, ‘Previous post link’, ‘twentyten’ ) . ‘</span> %title’ ); ?></div> <div><?php next_post_link( ‘%link’, ‘%title <span>’ . _x( ‘→’, ‘Next post link’, ‘twentyten’ ) . ‘</span>’ ); ?></div> </div><!– #nav-above –>
<div id=”post-<?php the_ID(); ?>” <?php post_class(); ?>> <h1><?php the_title(); ?></h1>
<div> <?php twentyten_posted_on(); ?> </div><!– .entry-meta –>
<div> <?php the_content(); ?> <?php wp_link_pages( array( ‘before’ => ‘<div>’ . __( ‘Pages:’, ‘twentyten’ ), ‘after’ => ‘</div>’ ) ); ?> </div><!– .entry-content –>
<?php if ( get_the_author_meta( ‘description’ ) ) : // If a user has filled out their description, show a bio on their entries ??> <div id=”entry-author-info”> <div id=”author-avatar”> <?php echo get_avatar( get_the_author_meta( ‘user_email’ ), apply_filters( ‘twentyten_author_bio_avatar_size’, 60 ) ); ?> </div><!– #author-avatar –> <div id=”author-description”> <h2><?php printf( esc_attr__( ‘About %s’, ‘twentyten’ ), get_the_author() ); ?></h2> <?php the_author_meta( ‘description’ ); ?> <div id=”author-link”> <a href=”<?php echo get_author_posts_url( get_the_author_meta( ‘ID’ ) ); ?>”> <?php printf( __( ‘View all posts by %s <span>→</span>’, ‘twentyten’ ), get_the_author() ); ?> </a> </div><!– #author-link –> </div><!– #author-description –> </div><!– #entry-author-info –> <?php endif; ?>
<div> <?php twentyten_posted_in(); ?> <?php edit_post_link( __( ‘Edit’, ‘twentyten’ ), ‘<span>’, ‘</span>’ ); ?> </div><!– .entry-utility –> </div><!– #post-## –>
<div id=”nav-below”> <div><?php previous_post_link( ‘%link’, ‘<span>’ . _x( ‘←’, ‘Previous post link’, ‘twentyten’ ) . ‘</span> %title’ ); ?></div> <div><?php next_post_link( ‘%link’, ‘%title <span>’ . _x( ‘→’, ‘Next post link’, ‘twentyten’ ) . ‘</span>’ ); ?></div> </div><!– #nav-below –> <?php comments_template( ”, true ); ?>
<?php endwhile; // end of the loop. ?>
</div><!– #content –> </div><!– #container –>
<?php else : ?>
<ul> <?php if ($posts) : foreach ($posts as $post) : start_wp(); ?> <li id=”catpost-<?php the_ID(); ?>”> <a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link: <?php the_title(); ?>”>? <?php the_title(); ?></a><br /><?php the_date(”); ?>? </li> <?php endforeach; else: ?> </ul>? <p><?php _e(‘Sorry, no posts matched your criteria.’); ?></p>? <?php endif; ?>
<?php if(is_archive()): ?> <p> <span><?php next_posts_link(‘« Previous Items’); ?></span>
<span><?php previous_posts_link(‘Next Items »’); ?></span> </p> <?php endif; ?>
</div><!– #content –> </div><!– #container –>
<?php endif; ?>
<?php get_sidebar(); ?><?php get_footer(); ?>
————————————————————————
上記により、今回の私の目標は達成できました。
日々成長。