【WordPress】特定のユーザーのコメント一覧をプロフィールページに表示する

記事の順番が前後しますが、思い立ったところからUP.

現在、会員制サイトよりは気軽に誰でも書きこめるドラマの短レビューサイトをWordpressで作成中です。

で、会員(ユーザー)プロフィールページを作成し、そこに『ユーザーが書きこんだレビューの一覧』を表示したいと考えた。

試行錯誤の末、何とか成功した忘備録。

「author.php」を編集する

WordPressでは「author.php」を編集することによって管理者のプロフィールページを作成できるようになっています。

とりあえず、記事下に表記されているはずの記事作成者リンクをクリックすると……
 
 author

http://あなたのアドレス/auhtor/あなたのID/

というページへ飛ぶはずです。

私が使わせていただいているテーマ『Simplicity』では、これをクリックすると記事一覧へ飛ぶ仕様になっています。(他のテーマでも大抵、基本はそうなっているのでは)

これをプロフィールページにするためには「author.php」を編集します。

「author.php」の作成

初めから「author.php」が存在しているテーマと、存在していないテーマがあると思います。

『Simplicity』の場合は「author-link.php」は存在しますが「author.php」はありません。なので、「author-link.php」をエディタにコピーして「author.php」という名前で保存し、子テーマにアップロードしました。

文字コードは「UTF-8」で保存してください。
「author.php」や「author-link.php」は、ファイルマネージャーの「wp-content」→「themes」→「simplicity2」(つまり、お使いのテーマ)にあります。無い場合は「archive.php」で代用を。

ユーザーの投稿一覧を掲載する

ユーザープロフィールを表示する方法は別のページで。

Wordpressで会員制のページを作成する際、author.phpを編集してユーザーごとのプロフィールをページに表示する方法。プロフィールの項目を増やす方法。

とりあえずここでメモしておきたいのは「ユーザーごとの投稿一覧を表示する」方法なのですが……。

こちらなどを参考にさせていただきました。しかし!

読書はカフェよりも大学図書館派のota(@purratto)です。実は一般にも開放しているところが多く、広々としていて開放的で、閲覧席がたくさんあるので席が埋まっていて座れないことがほぼなくて良いです(大学にもよるんでしょうが笑)。 WordPressで投稿者ごとの記事一覧ページを作成したので、その実装方法を解説します...
WordPress には、著者ごとのテンプレートやカテゴリーごとのテンプレートが用意されており、要求されたページごとにカスタマイズできるようになっている。テンプレートは通常テーマに含まれており、たとえば Twenty Twelve を利用し

投稿記事の一覧を表示するコードは検索すると割と見つかったのですが、私が作っているページでは一覧にしたいのは「記事」ではなくて「コメント」なのです。レビューフォームとして使用しているのがコメントフォームなので。

で、何日間も試行錯誤を繰り返した末、やっと成功しました。が、とても汚いです。

<!-- この下にはユーザーレビュー一覧が表示されます -->
<h3>revue</h3>
<?php
$comments = get_comments(array('status' => 'approve' ,'order'=>'DESC'));
foreach($comments as $comment):
$post = get_post($comment->comment_post_ID);
?>
<?php endforeach; ?>
<?php
$args = array(
'user_id' => $author , 'status' => 'approve' ,'order'=>'DESC');
$comments = get_comments( $args );
?>
<?php
foreach($comments as $comment):
$post = get_post($comment->comment_post_ID);
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
(<?php comment_author_link(); ?>[<?php comment_date('m/d'); ?>])
<?php print mb_strimwidth(get_comment_excerpt(), 0, 140, "…", "UTF-8"); ?>
</li>
<hr>
<?php endforeach; ?>


同じコードが何度も繰り返されています。

何とかまとめようとしたのですが、少しでも変えると突然動かなくなったりするので、恐くて動かせません(笑)

とりあえず、現在のところ、これでユーザーごとのコメント一覧が表示されています。

author-1

実験用に作った私の他のIDでも、一覧がきちんと表示されています。

author-2

これにばかり関わっていられないので、とりあえずはこれで置いておくことにします。

コメント

※アドレスは必須ではありませんがGravatarでアバター設定している方は記入しないと画像が出ません。(アドレスは表示されません)。キャプチャーにチェックの上、送信お願い致します。承認後表示されます。

内容をご確認の上、「送信」ボタンを押してください。