複数人で記事を投稿するWordPressブログでライター一覧ページ(投稿者一覧ページ)を作る方法

WordPress投稿者一覧ページ

WordPressで作ったブログに複数人のライターが記事を投稿できるサイトを運営する時に、「ライター一覧ページ(投稿者一覧ページ)」を作る方法を解説します。かなりニッチな運営方法なので、需要は少ないかな?

大筋はこちらの記事を参考にさせて頂きました。

プラグイン不要!固定ページで投稿者の一覧リストを表示させる | 株式会社bridge

1.まずテーマ内のpage.phpを複製して適当な名前に変更。当サイトの場合はpage-writer.php。

2.<?php the_content(); ?>と書かれている部分の下にコードをコピペする。

3.CSSで見栄えを調整する。

という感じです。株式会社bridgeさんの記事でご紹介されている方法そのまま。そして、ここから色々とカスタマイズしました。

まず追加したのは、ライターごとの公開記事数。これが分かると、読者の方がボリュームのあるライターを選んで記事を読む判断材料になります。これは意外と簡単で、WordPressのcount_user_postsというコードで簡単に実装できました。

次に、ソニートニュースは自由にアカウント登録が出来るので、記事をまったく書いていない人もライター一覧ページに掲載されていました。記事を一つも書いていないので、その人のページは空ですし、読者の方にとって不要な表示でした。

これはif文で投稿数0件のライター情報を表示しないとするコードで解決。

最後にライター一覧ページでの並び順ですが、当初は登録順(アカウントが若い順)になっていたものを、記事の公開数順に変更。ソニートニュースの理念として、多く記事を書いて頑張っている人を優遇すべきと考えてこの掲載順を採用しました。

という訳で実際に実装しているコードはこちら。

<!--投稿者一覧を表示-->
<?php $users =get_users( array('orderby'=>post_count,'order'=>DESC) );
echo '<div class="users" style="list-style:none;padding:auto;">';
foreach($users as $user):
    $uid = $user->ID;
    $count = count_user_posts($uid);
    $userData = get_userdata($uid);
    if ($count > 0){ echo '<div class="author-info" style="overflow:hidden;vertical-align:top;width: 16%;height: auto;display:inline-block;margin:2%;font-size:0.8em;">';
        echo '<div class="avatar"><a href="'.get_bloginfo(url).'/?author='.$uid.'">';
            echo get_avatar( $uid ,100 );
        echo '</div>';
        echo '<div class="description">';
            echo '<span class="name">'.$user->display_name.'</a><br />('.count_user_posts($uid).')</span>';
        echo '</div>';
    echo '</div>'; }
endforeach;
echo '</div>'; ?>
<!--/投稿者一覧を表示-->

冒頭のget_usersのorderbyの値を修正することで、様々な順番で表示することが可能です。詳しくはWordPressの関数リファレンスをご確認ください。

将来的にライターが増えた場合、表示する人数の上限値を設定することも可能なようなので、いつか実装するかもしれません。

良いサイトにするために、こういった地道な改修をあちらこちらで実施しています。誰か褒めてください。。。