wordpressの記事一覧ページ作成も最終段階。
ようやく思い通りの記事一覧ができた!
1ページの件数制御OK。
ページャーOK。
更新日順表示OK!
記事一覧ページの今回のポイント
・1ページに表示する最大件数を表示する。
・ページャーをきちんと機能するようにする。
・更新日順に記事を並べる。
記事一覧のコード
<?php
/*
Template Name:phpファイルの名前(「page-itiran.php」ならば「PAGE itiran」になる)
*/
?>
<?php get_header(); ?>
<div>
<!--ループ開始-->
<h2>
<?php the_title(); ?>
</h2>
<div>
<?php
query_posts($query_string);
query_posts('posts_per_page=20&cat=0&paged='.$paged);//表示したいカテゴリIDを列挙
?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<h4><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4>
<p>
【最終更新日】<?php the_modified_date('Y/m/d') ?> |【初回公開日】<?php the_time('Y/m/d') ?><br>
【カテゴリー】 <?php the_category(', ') ?><br>
【タグ】<?php the_tags('', ', '); ?>
</p>
<p><?php echo mb_substr( strip_tags( stinger_noshotcode( $post->post_content ) ), 0, 60 ) . ''; ?></p>
<p><a class="more-link" href="<?php the_permalink() ?>">続きを見る</a></p>
<?php endwhile;
?>
<?php else:
?>
<p>記事はありませんでした</p>
<?php
endif;
wp_reset_postdata();
?>
</div>
<!--/kizi-->
<!--ページナビ-->
<?php if (function_exists("pagination")) {
pagination($wp_query->max_num_pages);
} ?>
<!--ループ終了-->
</div>
<!-- END div.post -->
<?php get_footer(); ?>
記事一覧のコード説明
記事一覧を表示するページのタイトル
<?php the_title(); ?>
1ページに表示する記事の数
posts_per_page=20
20で1ページに20件の記事を表示する。
記事のタイトル
<a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
最終更新日
<?php the_modified_date('Y/m/d') ?>
初回公開日
<?php the_time('Y/m/d') ?>
カテゴリー
<?php the_category(', ') ?>
タグ
<?php the_tags('', ', '); ?>
記事の要約抜粋
<?php echo mb_substr( strip_tags( stinger_noshotcode( $post->post_content ) ), 0, 60 ) . ''; ?>
0は0文字目から。
60は60時目までを抜粋・要約として表示する。
ページャーを呼び出すタグ
<?php if (function_exists("pagination")) {
pagination($wp_query->max_num_pages);
} ?>
function.phpに記載されているページャーを呼び出すタグ。
もし、function.phpにページャーの記載が無い場合は、function.phpに以下の記載を追加する必要がある。
//ページャー機能
function pagination($pages = '', $range = 4)
{
$showitems = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($pages == '')
{
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages)
{
$pages = 1;
}
}
if(1 != $pages)
{
echo "<div class=\"pagination\"><span>Page ".$paged." of ".$pages."</span>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link
(1)."'>« First</a>";
if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹
Previous</a>";
for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems
))
{
echo ($paged == $i)? "<span class=\"current\">".$i."</span>":"<a href='".get_pagenum_link
($i)."' class=\"inactive\">".$i."</a>";
}
}
if ($paged < $pages && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged +
1)."\">Next ›</a>";
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a
href='".get_pagenum_link($pages)."'>Last »</a>";
echo "</div>\n";
}
}
記事を更新日ごとに並べるタグ
本来は、orderby=modifiedというタグらしい。
なので下のように記述するのだろうが、現在使っているwordpressテーマでは、すでにデフォルトのphp以外の追加されたphpでの並び順がどこかで指定されている様子なので省略してある。
<?php
query_posts($query_string);
query_posts('posts_per_page=20&orderby=modified&cat=0&paged='.$paged);//表示したいカテゴリIDを列挙
?>
orderby=modifiedが使用中のテーマですでに指定されているのがわからず、えらく苦労した。
気がつくのに丸1日かかちゃったよ。
スタイルシートの指定は抜いてあるのであとはそれぞれスタイルシートを指定してもらえばいいかと思う。
wordpressプラグインを使わない記事一覧まとめページ
現在はさらにアレンジしたコードを使っている。
wordpressプラグインを利用しないで全記事リスト(全記事一覧)を表示するための方法を1ページにまとめてみたので参考にしてね。
*wordpressプラグインを使わない記事一覧まとめページ
コメント