wordpress

WordPressのユーザー一覧ページ用のテンプレート

「WordPressのユーザー一覧ページを作る」の記事の続きです。
「メンバーが多いのでページ送りをしたい」という旨のご質問コメントをいただいたので、実装してみました。お使いのWPのバージョンやテーマが違う場合は、適宜、読み替えて参考にしてください。

前提

  • WP3.6のTwenty Twelveおよび、そのクローン
  • テンプレート「page-authors.php」を作成し、themeディレクトリ内の「page-templates」ディレクトリにアップロード
  • ユーザー一覧用に固定ページを1つ作成。テンプレートには「page-authors.php」を指定

実装後の表示は「メンバー紹介」になります。
ちなみに、「パソコン倶楽部」のユーザー管理画面には、各自の学習履歴やSNS情報が入力できるように、functions.phpに改造を施してあるので、それらの情報も表示する仕組みも実装しています。
詳しくは「WordPressのプロフィール欄を拡張してTwitterやFaceBookページへのリンクを追加しました」をお読みください。

page-authors.php

まず、全文を表示して、その後で解説します。

解説

通常、固定ページには、ページ送りの機能がついていませんので、それを実装してあげる必要があります。

ユーザー数の取得と設定

count_users関数(en)でかえってきた配列の ‘total_users’ キーの値に、ユーザー数が入っているので、これを $total_users 変数に入れておき、1ページあたりの表示数 $number と組み合わせて、ページ送りに利用します。
$paged変数については後述します。

ユーザー情報の取得

取得したい条件を入れて、get_users関数を呼びます。
‘offset’の部分が肝心です。1ページ目に10件出力する場合、2ページ目は11件目から取得してあげる必要があります。
get_query_var関数を引数 ‘paged’ で呼ぶと、「ページング時のページ番号」が取得できます。ただし、1ページ目が0で、2ページ目は2,3ページ目が3(以降、ページ数と同じ)になります。1ページ目だけ0なので、注意が必要です
そこで、$pagedが1以上(2ページ目以降)であれば ‘offset’ を($paged – 1) * $number とし、0 の場合(1ページ目)は 0 になるように三項分岐しています。

ユーザー情報の出力

ここは省略します。好きなように出力してください。

ページ送りの実装

ページ送りの仕組みは、こちらを参考にしました。が、そのままだと数字がズレるので、以下のように改造しています。

参考リンク先では、‘total’ => floor($total_users / $number) となっていましたが、これだと、最後のページへのリンクが出ません。
なので、‘total’ => ceil($total_users / $number) としました。これで paginate_links関数 を呼べば大丈夫です。
if($GLOBALS[….の部分は、パーマリンクの設定にあわせて、リンクurlの末尾にスラッシュを付けたりしてますが、コピペで問題ありません。

それでは良いWordPressライフを!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.