インデックスページやアーカイブページ(カテゴリ一覧など)は6記事ごとに分割しています。
これを実現するには、多くの場合プラグインを利用しますが、ワードプレス標準的な機能でも可能です。
今回はコリスさんで紹介されていた方法をすこしアレンジしてみました。
参考:WordPressにプラグイン無しでページネーションを設置する方法 via coliss
最初の方のページでは表示しているページのマークが右に移っていきます。
表示しているページのマークがまんなかにくると、そこで停止してページ番号がスライドします。
終盤のページでは表示しているページのマークが右はじまで移動します。
これらのページ送りはページナンバーをクリックしても、左右の<>をクリックしても大丈夫です。
利用するには以下をそれぞれのテンプレートにコピーしてください。
<?php remove_filter('the_excerpt', 'wpautop'); function pagination($pages = '', $range = 5) { $categories = get_the_category(); $catid = ''; if ( !$categories->cat_ID ) $catid = '&cat='.$categories->cat_ID; $showitems = ($range * 1)+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) { if($paged > 1) { echo "<div class='next'><a href='".get_pagenum_link($paged - 1)."' title='最近の更新一覧に進みます'><img src='./img/page_next.png' width=32 height=32 alt='最近の更新一覧に進みます'></a></div>\n<ul>\n"; } else { echo "<div class='next'><img src='./img/page_next.png' width=32 height=32 alt='これ以上新しい記事はありませんs'></div>\n<ul>\n"; } for ($i=1; $i <= $pages; $i++) { if ($paged <= $range) $gap = $range-$paged+1; if ($pages < $paged+$range ) $gap = $range-($pages-$paged); if (1 != $pages &&( !($i >= $gap+$paged+$range+1 || $i <= $paged-$range-$gap-1) || $pages <= $showitems)) { echo ($paged == $i)? "<li class='off'>".$i."</li>\n":"<li class='pagenation' onclick='location.href=\"".get_pagenum_link($i)."\"' title='".$i."ページ目を表示します'><a href='".get_pagenum_link($i)."'>".$i."</a></li>\n"; }} echo "<li>...</li>\n<li class='pagenation' onclick='location.href=\"".get_pagenum_link($pages)."\"'><a href='".get_pagenum_link($pages)."'>".$pages."</a></li>\n"; if ($paged < $pages) { echo "\n</ul>\n<div class='next'><a href=\"".get_pagenum_link($paged + 1)."\" title='過去の更新一覧に進みます'><img src='./img/page_prev.png' width=32 height=32 alt='過去の更新一覧に進みます'></a></div>\n"; } else { echo "\n</ul>\n<div class='next'><img src='./img/page_prev.png' width=32 height=32 alt='これ以上古い記事はありません'></div>\n"; } }} ?>}
#page { width:840px; margin:42px 70px 52px; } #page ul { width:728px; float:left; } #page ul li { font-size:18px; color:rgb(195,195,195); font-weight:bold; width:36px; height:36px; border:none; padding:7px 0; margin:0 10px; text-align:center; overflow:hidden; background:url(./img/page_on.png) no-repeat; } #page ul li a { font-size:18px; color:rgb(195,195,195); font-weight:bold; } #page ul li.off { color:rgb(102,102,102); background:url(./img/page_off.png) no-repeat; } #page ul li.next { width:32px; height:32px; background:none; padding:2px; } #page ul li.next img { border:none; margin:0; padding:0; } #page div.next { width:32px; height:32px; background:none; padding:2px; float:left; } #page div.next img { border:none; margin:0; padding:0; } #page ul li.pagenation { cursor:pointer; }
<div id="page"> <?php if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?> </div>
上記の画像を公開フォルダ直下に《 img 》フォルダを作成して保存します。
このブログであれば http://mag.torumade.nu/img/ となる形です。
themeフォルダ内に保存する場合は、そこまでの絶対URLで画像を指定するようにしてください。
このページ送りは、ページ送りナビゲーションに表示するページ数を偶数にすることはできません。
いま表示しているページを中心に、前後何ページのページ番号を表示するかを設定するためです。
その設定はfunction.phpに記述した《 function pagination($pages = ”, $range = 5) { 》で行います。
このブログでは左右に5ページが表示されるので《 $range = 5 》となります。
表示件数を5件から変更する場合、スタイルシートの変更も必要になるのでお忘れなく。
次に、ワードプレスの管理画面から《 設定 》-《 表示 》を選択します。
『1ページに表示する最大投稿数』を1ページに表示する記事の件数に設定します。
これでページ送りが実装されます。
meganews-themeのカスタマイズ備忘録です。 (1)インデックスページのカスタマイズ
ワードプレスのインデックスページで記事サムネイルなど個々にCSSクラスを与える簡単な方法
ワードプレスで記事一覧を繰り返し表示(ループ処理)するときのちょっとした工夫です。 記事枠それぞれにCSSクラスを与えることで、カスタマイズがより簡単になりますよ。
俺の雑誌愛が暴走する雑誌だけのブログ『crocodile MAG’STACK』始めてました。
自分の雑誌録を兼ねたブログを立ち上げました。 読んで益なし損もなし。薬にならなきゃ毒でもなし。
Googleウェブマスターツールは構造化データを重要視してるっぽいからWordPressで対応してみました
ブログってちょーっとマジメなことをやろうって思うと、なんか専門用語ばっかりでめんどくせーとか思っちゃうボクですがやってみたらできたっぽいのでそれっぽくwordpressで構造化データの対応方法まとめです。
.htaccessのRedirectRuleでURLクエリーを含めた301リダイレクトを設定する方法
.htaccessのRedirect RuleでURLクエリーを含めた場合のサンプルが少ないようなので参考になれば。
wordpressサイトがパンダアップデートの影響を避けられるかもしれない5つの方法
パンダアップデートの影響に巻き込まれたような気が多分にしてきたので、回復実例を参考に対策を施しました。 wordpress向けrobots.txtの設定実例も記載しています。