[wp] まっすぃーん語

WordPress 上でページナビゲーションを実現するため今まで WP-PageNavi というプラグインを使っていたのですが、これ。

1 2 3 ... 16

こう並ぶんですよね。

1 2 3 ... 16

こう並んで欲しいのに。
WP-PageNavi プラグイン自体を改造すればいいんだろうけど、でもそうすると更新の際書き換えるのがとても面倒。
なので何か策はないか、と検索してみたところ、functions.php に書くヤリカタを発見。というか WordPress 自体にページナビゲーションを出力する関数あったのね。

function pagenav() {
 global $wp_rewrite,$wp_query,$paged;
 $paginate_base = get_pagenum_link(1);
 if(($wp_query->max_num_pages) > 1):
  if (strpos($paginate_base, '?') || 
      ! $wp_rewrite->using_permalinks()) {
  $paginate_format = '';
  $paginate_base = add_query_arg('paged', '%#%');}
  else {
  $paginate_format = (substr($paginate_base, -1 ,1) 
                      == '/' ? '' : '/') .
  user_trailingslashit('page/%#%/', 'paged');
  $paginate_base .= '%_%';}
  $result = paginate_links( array(
  'base'      => $paginate_base,
  'format'    => $paginate_format,
  'total'     => $wp_query->max_num_pages,
  'mid_size'  => 3,
  'current'   => ($paged ? $paged : 1),
  'prev_text' => '«',
  'next_text' => '»',));
  echo $result;
 else: echo '<span class="page-numbers current">1</span>';
endif;}

をテーマの functions.php 内に書いて、ページナビゲーションを置きたいところ、一般的には footer.php に <?php pagenav(); ?> 。

このコードを参考にしてちょっと php のお勉強。
一行一行調べていくと意味がわかって面白いものですな。

以下は「pagenav」って言います。
「pagenav」があったらここを見に来て下さい。
この「pagenav」は、$wp_rewrite と $wp_query と $paged を参照します。
ブログ全体で 2 ページ以上存在する時、次の作業をしてください。
そうじゃないなら 1 ページしかないって事なので「<span class="page-numbers current">1</span>」を表示のこと。
permalink に「?」がある、もしくはパーマリンク構造がデフォルトの場合、$paginate_format と $paginate_base を指示された通り設定して下さい。
そうじゃないならデフォルト以外の permalink 。これも指示した通りに。
paginate_links には以下の値を入れて下さい。んでそれらをひっくるめて $result に。
最後にその $result を表示して下さい。
おしまいです。

以前、最終学歴 MSX-BASIC って書いたけど、よくよく思い出してみれば PC-8801 の Z80 のマシン語もちょっとかじってました。通販でアセンブラとか取り寄せましたが、結局モノにはならず。
php の本買っちゃおうかな! ウェブにほぼ完璧なリファレンスが掲載されてるけど、どうしても紙の方が頭に入るデジタル世代を装ったアナログ世代です。

タグ: ,