rhasm.net/blog

興味の赴くままに色々紹介し、解説をするブログです。

*

WordPressでコメント・ピンバック・トラックバックを表示させる

      2015/08/30

Wordpress

このブログのテンプレートは自作で、コメントフォームを設置していないのです。まあ、特にコメントいただくような性質のブログでもないのでそれでよいのですが、実はWordpressはコメントもピンバックもトラックバックも全部いっしょくたに扱います。そして、ピンバックやトラックバックは受け付ける設定になっていて、たまに引用していただいたサイト様などからいただいていて、それを表示させないのはちょっと勿体ないなと思ったりしていたのです。

というわけで、今回は自作テンプレートでいただいたコメント(というかピンバックやトラックバック)を表示させる方法をメモ的に記事にしておこうと思います。


正式にやるのであれば、きちんとcomment.phpを作成してindex.phpから単体記事を表示させる時にincludeさせてやるべきなのかもしれませんが、相変わらずコメントは受け付けるつもりはありませんので、今回は手抜きをします。
そして、この方法であれば、単体記事の表示以外、例えば記事一覧表示(index.php)の時やサイドバーにも(このままのコードではないにしろ、ある程度の改造をすれば)表示できたりするのではないだろうかと期待できる方法です。

とりあえず、今回改造したのは、single.phpです。wordpressでは単一記事の表示の際に使われるテンプレートファイルになります。
方法は単純で、表示させたいところにこのコードを放り込むだけ。

< ?php $comments = get_approved_comments( $post->ID ); ?>
< ?php foreach ($comments as $comment) {	?>
	<div class="comment-list"><ol>
		<li><a href="<?php echo $comment->comment_author_url; ?>" target="_blank">< ?php echo $comment->comment_author; ?></a></li>
	</ol></div>
< ?php } ?>

では、解説。

< ?php $comments = get_approved_comments( $post->ID ); ?>

1行目。これはコメントのリストを取得する関数を使っています。
get_approved_comments(post_id)で承認したコメントのリストを配列で取得するということです。

< ?php foreach ($comments as $comment) {	?>
< ?php } ?>

2行目及び最終行。これで、コメントの配列から1つ1つコメントデータを取り出して処理をするという手順になります。今回の場合は「$comments」というコメントの配列から取り出したものを「$comment」に格納しています。
$commentの中味は、「$comment->XXXX」で取り出すことができます。XXXXの部分についてはWordPress私的マニュアルの解説に詳しく載っていますので、そちらを参照されるとよいかと思います。
今回は

<li><a href="<?php echo $comment->comment_author_url; ?>" target="_blank">< ?php echo $comment->comment_author; ?></a></li>

この行にあるように、comment_author_url(コメント投稿者のURL)と、comment_author(コメント投稿者の名前)を取得してリンク表示させています。私の場合、コメントとして書き込まれるコメントではなく、ピンバック及びトラックバックしか受け付けずかつ承認もしないので、これで用が足りている感じです。

解説はこんなところです。
本当はコメント返信等も扱うなら階層構造等も実装しないといけないわけですが、返信をする仕組みを用意しておらず、私も返信をしないので非常に単純な仕組みになりました。

というわけで、参考になればと思います。
ではでは。

 - コンピュータ, サーバサイド, プログラミング