【WordPress】コメントとトラックバックを別表示にする方法

『【WordPress】コメントとトラックバックを別表示にする方法』をはてなブックマーク この記事をクリップ! この記事をTwitterでつぶやく

Comments × Trackbacks今までトラックバックはスパムしか来てなかったので気にしなかったのですが、1つ普通のが来たのでこの際コメントとトラックバックを分けて表示しました。
この分ける方法がまた面倒臭い。
プラグイン2つにPHP、CSSの書き換えと、色々手を加える箇所がいっぱいあります。
しかし、サイドバーを含めコメントと別表示に出来たので良しとしましょう。

では、長ったらしい説明は以下から。


私は2.7日本語版のデフォルトテーマを使っているので、それを前提にしてください。

まず、プラグインをダウンロードします。

(A) mk’s incubator
trackping_separator
上のサイトの『Download』からWordPressのサイトへ飛び、zipをダウンロードします。
これは、エントリー内にトラックバックを表示する為のプラグインです。

次のプラグイン。
(B) Hirobee’s Trail [Memorandum]
Commented entry list Plugin
『アーカイブをダウンロード』からzipをダウンロードします。
これはサイドバーにトラックバックを表示する為のプラグインです。

(A) のサイトからは『trackping-separator.zip』。
(B) のサイトからは『commented-entry-list.zip』がダウンロードされたと思います。
(B) のサイトに書かれていた修正は、別にしなくても大丈夫でした。


このzipファイルを解凍。
プラグインフォルダに移動。
状態は以下のようになります。(■フォルダ、□ファイル)
■wp-content
 ■plugins
  ■commented-entry-list ← (B) のサイトより
   □commented-entry-list.php
   □comments.php
   □ReadMe.txt
  □trackpings.php ← (A) のサイトより(PHPのみアップ)
ファイルの配置を上記のようにして、FTPなどでサイトへアップロード。
『ReadMe.txt』は別に要らないと思います。
私は上記のような状態ですが、以下のような置き方でも大丈夫だと思います。
■wp-content
 ■plugins
  □commented-entry-list.php ← (B) のサイトより(PHPのみアップ)
  □trackpings.php ← (A) のサイトより(PHPのみアップ)

アップロード後、WordPressの管理画面でプラグインを有効化でOK。

しかしちょっと待った!
このままでも別に進んで良いんだけど、私はターゲットリンクを『_blank』にしたいので、ファイルをアップする前にPHPファイルをちょこっといじります。
このままで良い人は、以下の3を飛ばしてください。


リンクターゲットを『_blank』にする。
まず、(A) のサイトから解凍した『trackpings.php』を開きます。
49行目を以下のように変更。

trackpings.php 修正前
function listtrackpings($type = 'both', $template='<li id="trackback-%id"><a href="%url">%origin</a><br />%content</li>', $dateformat='') {
trackpings.php 修正後
function listtrackpings($type = 'both', $template='<li id="trackback-%id"><a href="%url" target="_blank">%origin</a><br />%content</li>', $dateformat='') {

そしてサイドバーに表示させた時、自分のサイトのエントリーは同ウィンドウ、トラックバック先のリンクは別ウィンドウで開くように設定。
(B) のサイトから解凍した『commented-entry-list.php』を開きます。
71、72行目を以下のように変更。

commented-entry-list.php 修正前(71、72行目)
$output .= "\t\t<li><span class=\"comment_date\">$comment_date </span>".
"<span class=\"comment_author\">".tkzy_get_comment_author_link($comment,20)."</span></li>\n";
commented-entry-list.php 修正後(71行目で統一)
$output .= "\t\t<li>  <span class=\"comment_author\">".tkzy_get_comment_author_link($comment,20)."</span></li>\n";

(\ → ¥です コピペすると変わると思います。)
書き込み時間表示は要らなかったので、『$comment_date』を削除。
トラックバック先に『⇒』を付けたかったので、付けました。
『⇒』は文字扱いになるので、ファイルのエンコーディングを『UTF-8』で保存。

『($comment,20)』の『20』は、長ったらしい文字の省略文字数だと思います。
1=1文字(2byte)になるようです。(多分…)
自分のサイトのサイドバーの幅を考えて変えてください。

次に、トラックバック先に『_blank』を付ける。
107行目(上記で2行を1行にする前の行番)を以下のように変更。

commented-entry-list.php 修正前
$ret .= '" rel="external">' . $author . '</a>';
commented-entry-list.php 修正後
$ret .= '" rel="external" target="_blank">' . $author . '</a>';

以上で3の設定は終了です。


各PHPファイルを修正。
既にファイルをアップロードして、プラグインを有効化してるとします。
プラグインを有効にしただけでは表示される訳がないので、トラックバックを表示させる為にテーマ内の『index.php』等にコードを付け加えます。

index.php 修正前
<?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?>
index.php 修正後
<?php comments_popup_link(__('Comments (0)'), __('Comments (1)'), __('Comments (%)')); ?> | <a href="<?php the_permalink() ?>#trackback" title="トラックバック" class="trackacklink">トラックバック (<?php echo trackpings('count'); ?>)</a>

これで、記事一覧ページに 『コメント (0) | トラックバック (0)』 と表示されます。
『archive.php』、『search.php』も同様に変更。
文字を使った場合、ファイルのエンコーディングを『UTF-8』で保存するのを忘れずに。

次に、エントリー内にトラックバックを表示する設定。
今まで手を加えた『comments.php』を崩したくないので、自分で手作業しました。
テーマ内の『comments.php』を開きます。

comments.php 修正前
<?php if ( have_comments() ) : ?>
     ~
<?php endif; ?>
の後に、以下を追加します。

comments.php 修正後
<?php if ( have_comments() ) : ?>
     ~
<?php endif; ?>

<?php if ( trackpings() ) : ?>
  <h3 id="trackbacks">トラックバック (<?php echo trackpings('count'); ?>)</h3>
  <ol class="trackbaklist">
   <?php listtrackpings(); ?>
  </ol>
<?php endif; ?>

h3のid『trackbacks』は、サイドバーからのリンクに使うので、変えないほうが良いと思います。

スタイルシート設定は以下。(好みによって変えてください)

style.css
ol.trackbaklist {
  margin: 0 0 30px;
  list-style: none;
}

ol.trackbaklist li {
  margin: 0 0 5px;
  padding: 5px;
  border: solid 1px #ccc;
  background: #fff;
}


サイドバーの設定。
最後にサイドバーに表示させる設定をしましょう。
テーマ内の『sidebar.php』を開きます。
表示させたい箇所に以下を追加。

sidebar.php
<h2>トラックバック</h2>
<ul class="trackback_box">
  <?php get_recently_trackbacked(); ?>
</ul>

スタイルシート設定は以下。(好みによって変えてください)
ソース見ると分かりますが、リストの入れ子になっています。

style.css
ul.trackback_box {
  margin: 0 10px 30px;
  padding: 0;
  list-style: none;
}

ul.trackback_box li ul {
  list-style: none;
}

ul.trackback_box li ul li {
  margin: 0 0 2px;
  padding-bottom: 2px;
  border-bottom: dotted 1px #d5d5d5;
}


以上で全ての設定が完了です。
いやー、設置するのも長かったけど、この記事書くのも長かった。w
突っ込み、質問受け付けます。

最後に、以下のサイトにお世話になりました。


Odysseygate.com
[WordPress]コメントとトラックバックを分ける方法
[WordPress]サイドバーに最近のコメントとトラックバックを表示する
【SEO初心者のEvoブログ】
WordPressのコメントとトラックバックを分けるプラグイン
ミblog
最近のコメントとトラックバックをサイドバーに表示するプラグイン[WP]

コメントを書く

Name

E-Mail

Website address