ショートコードを使ってWordPressの固定ページ等に投稿者別の記事一覧を表示する方法

複数の投稿者でWordPressブログを運営している場合、
「特定の投稿者の記事だけをまとめて読みたい」という読者さんも出てきます。
そこで、固定ページ等の任意の場所に投稿者別の記事一覧を表示する方法を解説します。

Wordpressで投稿者別の記事一覧を表示

手順1:function.phpに呼び出し用のコードを記述する

WordPressで著者別の記事一覧を表示する方法としては、
PHPを直接いじったり、プラグインで表示させる方法もあります。
例えば、Fancier Author Boxというプラグインを使えば下記のように、
著者別におしゃれな自己紹介欄や最新記事、全記事一覧も簡単に設置できます。

Fancier Author Boxの表示例

しかし、WordPressのログインユーザー名が丸見えになってしまうため、
セキュリティ面を考えるとあまりよろしくないと思います。
そこで、安全面と利便性を考慮して「ショートコード」で表示する方法を解説します。
2STEPで完了しますので、とても簡単です。

まずは下記のコード本体を「function.php」の末尾に貼り付けてください。

//*=============================================*
//*指定した著者名の記事一覧を表示
function set_ItemLists_byId( $atts, $content = null) {
	extract(shortcode_atts(array(
		'num' => '',
		'author' => ''
	), $atts));
	global $post;
	$user = get_user_by( 'login',$author );
	if(empty($user->ID)){
		exit(0);
	}
	$oldpost = $post;
	$myposts = get_posts('author='.$user->ID.'&orderby=date&post_type=post&numberposts='.$num);
	$retHtml='<ul>';
	foreach($myposts as $post) :
		setup_postdata($post);
		$retHtml.='<li><a href="'.get_permalink().'">'.the_title('','',false).'</a></li>';
	endforeach;
	$retHtml.='</ul>';
	$post = $oldpost;
	return $retHtml;
}
add_shortcode('kiji-list-Id', 'set_ItemLists_byId');

※function.phpの編集は「画面が真っ白になる」などのトラブルが発生しやすいので、
必ず事前にバックアップを取ってから作業をしてください。

当ブログの場合は、メシオプレス01のテーマカラー「カスタム」を使っていますので
カスタマイズ専用の「function-custom.php」に貼り付けています。

手順2:記事一覧を呼び出すためのショートコードを記入する

コードの本体の準備ができたあとは、
記事一覧を表示したい任意の場所に下記のショートコードを貼り付けます。

[[kiji-list-Id author="ユーザー名" num="記事数"]]

コードにある各パラメーターは、

  • ユーザー名 = 記事一覧を表示したい投稿者のログインユーザー名
  • 記事数   = 表示できる最新の記事数

という意味です。貼り付け時に変更して保存してください。
例えば、ログインユーザー名「tarou」さんの記事を「10記事」表示したい場合は、

[[kiji-list-Id author="tarou" num="10"]]

といった感じに変更してください。

ここまでの作業に問題がなければ、
ショートコードを貼りつけたページに指定した投稿者の記事一覧が表示されます。
今回は私(菊池)のプロフィールページに表示させてみました。

WordPressには今回のショートコードや専用の関数のように
ブログを自分好みにカスタマイズするための機能が多数用意されています。
こういった拡張性の高さもWordpressの人気の一因ですね。

●本日のまとめ
Wordpressを使って複数の投稿者でブログを運営していて、
投稿者別の記事一覧を表示させたい場合、ショートコードを使えば固定ページ等の
任意の場所に投稿者別の記事一覧を簡単に表示させることができる。

この記事へのコメント

  1. なぎ2013年6月14日 12:00

    突然すいません。
    上記の記事について質問させていただきたいのです。

    現在、wordpressで投稿者別の記事一覧を表示させたいと思い、
    検索でここにたどり着きました。
    しかしどうしても上手くいきません。。。

    そこで質問なのですが、
    この方法はカスタム投稿の記事でも表示されるのでしょうか?
    可能であればどのようにしたら表示されるでしょうか?

    色々なサイトを巡っていましたが、
    中々希望通りの情報がなくて困っております。。。

    どうかお力を貸していただけると幸いです。
    突然のお願い失礼致しました。

    返信
    • めしお2013年6月14日 12:20

      なぎさん

      カスタム投稿でも表示されるのかは検証していないので、
      検証してみないとわからないです。
      ただ、コード貼り付け時の注意点としては、
      function.phpの末尾に貼り付ける際に、

      ?>

      を残して、その上に貼り付けないとエラーになると思います。
      あとはこの記事を書いたあとに知ったのですが、
      「VK Post Author Display」というプラグインを使うと、
      ユーザー名が丸見えになることもなく、投稿者別に記事を表示できますよ。

      返信
      • なぎ2013年6月14日 14:01

        早速のお返事ありがとうございます。
        また、プラグインの紹介もありがとうございます。

        ただ申し訳ありません。。。
        私の説明不足でした。

        現在制作しているサイトは複数人で管理する予定です。
        そしてサイト内に投稿者専用の固定ページを作り、
        そこのページの一部に専任投稿者の記事(カスタム投稿タイプ)だけを表示させたかったのです。

        ご提案頂いた「VK Post Author Display」を使用してみましたが、
        残念ながら目指した形にはなりませんでした。。。

        ややこしいことを言って申し訳ありませんでした。
        他に方法は無いか少し考えてみます。。。

        ありがとうございました><

        返信
        • めしお2013年6月15日 01:06

          なぎさん

          なるほど・・・ちょっと手の込んだ仕様だったのですね。
          お力になれずに申し訳ありません。

          返信

コメントする