記事の順番が前後しますが、思い立ったところからUP.
現在、会員制サイトよりは気軽に誰でも書きこめるドラマの短レビューサイトをWordpressで作成中です。
で、会員(ユーザー)プロフィールページを作成し、そこに『ユーザーが書きこんだレビューの一覧』を表示したいと考えた。
試行錯誤の末、何とか成功した忘備録。
「author.php」を編集する
WordPressでは「author.php」を編集することによって管理者のプロフィールページを作成できるようになっています。
とりあえず、記事下に表記されているはずの記事作成者リンクをクリックすると……
というページへ飛ぶはずです。
私が使わせていただいているテーマ『Simplicity』では、これをクリックすると記事一覧へ飛ぶ仕様になっています。(他のテーマでも大抵、基本はそうなっているのでは)
これをプロフィールページにするためには「author.php」を編集します。
「author.php」の作成
初めから「author.php」が存在しているテーマと、存在していないテーマがあると思います。
『Simplicity』の場合は「author-link.php」は存在しますが「author.php」はありません。なので、「author-link.php」をエディタにコピーして「author.php」という名前で保存し、子テーマにアップロードしました。
ユーザーの投稿一覧を掲載する
ユーザープロフィールを表示する方法は別のページで。
https://muryoblog.cinemarev.net/entry/profile-koumoku.html
とりあえずここでメモしておきたいのは「ユーザーごとの投稿一覧を表示する」方法なのですが……。
こちらなどを参考にさせていただきました。しかし!
https://engineer.blog.lancers.jp/2017/05/post_list_of_author/
http://www.united-bears.co.jp/blog/archives/711
投稿記事の一覧を表示するコードは検索すると割と見つかったのですが、私が作っているページでは一覧にしたいのは「記事」ではなくて「コメント」なのです。レビューフォームとして使用しているのがコメントフォームなので。
で、何日間も試行錯誤を繰り返した末、やっと成功しました。が、とても汚いです。
<!-- この下にはユーザーレビュー一覧が表示されます -->
<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; ?>
同じコードが何度も繰り返されています。
何とかまとめようとしたのですが、少しでも変えると突然動かなくなったりするので、恐くて動かせません(笑)
とりあえず、現在のところ、これでユーザーごとのコメント一覧が表示されています。
実験用に作った私の他のIDでも、一覧がきちんと表示されています。
これにばかり関わっていられないので、とりあえずはこれで置いておくことにします。