てるてるブログ

てるてるぼうずの日常やらお勉強やら

WordPressーコメントとトラックバックの分離

Posted on | 10月 20, 2011 | No Comments

WordPressはなぜかコメントとトラックバックが一緒にされてしまってます。
Wordpressの方に記事内にリンクを貼ると相手サイト自動でPingを送るという「ピンバック」という機能があるため、特にトラックバック機能を設定していないような感じです。

それはそれで分かるけど、他のブログシステムなんかでトラックバックを送り送られしてたりするとどうも物足りなく感じるんですよね。
前ブログからインポートしたデータのトラックバックも全部コメント扱いになってしまっていますし。
それにこのピンバック、自ブログで別記事へのリンクを貼っただけで送られたりするし(^^;
このピンバック自体を自動で送信しない設定とかもあるらしいんですけどね。それはそれでまた…

で、どうにもしっくりこないので、この一緒になって表示されるコメントとトラックバックを分けて表示させる方法を調べてみました。
以下、それについてのメモ。


サクッとプラグインで分けると言う方法もあるようですが、これはテンプレートの改造で分ける方法。
参考にさせて頂いたサイトさん

Nire.Com「WordPress: コメントとトラックバックを分けるのにプラグインは不要

編集するテンプレートはcomments.php。
とりあえずデフォルトのテーマのcomments.phpを開き下記のような行を検索。

<?php foreach ($comments as $comment) : ?>

その直後に2行追加。

<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type == 'comment') { ?>

次に下記の行を検索。

<?php endforeach; ?>

その直前に1行追加。

<?php } else { $trackback = true; } ?>

で、一応上記の改造まででコメントとトラックバックは分離されコメントのみが表示されるようになります。
ただこのままだとトラックバックが表示されないので、トラックバックのみが表示されるようにタグを追加します。

まず下記の行を検索。

<?php else : // If there are no comments yet ?>

テーマによってはPHPのタグ内にコメントアウトの注意書きなんかが書かれてる場合もあるので注意が必要です。
<?php else?>のタグは結構頻繁に出てくるのでどれだか分からなくなるけど、私の改造した「classic」というテーマでは上記のようになってました。

上記で検索した行の直前に11行程追加。

<?php if ($trackback == true) { ?>
<h3>トラックバック</h3>
<ol>
<?php foreach ($comments as $comment) : ?>
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type != 'comment') { ?>
<li><?php comment_author_link() ?></li>
<?php } ?>
<?php endforeach; ?>
</ol>
<?php } ?>

これで分離出来てるはずです。
うちのブログあまりコメントがないんで実例が示せなくてなんですが…

プラグイン使うのとどっちがいいんだろう…?

–追記–
記事ページのコメント・トラックバックはテンプレートの改造で対応しましたが、サイドバーのコメント・トラックバックの分離はプラグインでやっちゃいました。
Commented entry list Plugin

プラグインをDLしてインストール後、サイドバーのコメント・トラックバックを追加したい場所に以下のコードを追加。

最近のコメント
<?php get_recently_commented(); ?>
最近のトラックバック/ピンバック
<?php get_recently_trackbacked(); ?>

カッコ内に入れた数値分のコメント・トラックバックが表示されます。
デフォルトでは10件のようです。

トラックバックURL:

Comments

Leave a Reply





*

About

てるぼうず

てるてるぼうずな日常やらお勉強やら

旧ブログ倉庫 »
旧ブログの記事をお探しの方はこちらから

Admin