コメントとトラックバックを分けて表示する for WordPress(その2:タイトルを非表示にする方法)
前回エントリーした「コメントとトラックバックを分けて表示する for WordPress(その1)」では、記事に対しコメント・トラックバックがない場合でも「コメント」および「トラックバック」のタイトルを非表示にすることができません。
ということで本エントリーでタイトルを非表示にする方法を紹介します。このカスタマイズで下記のような動作になります。
- コメント・トラックバックとも0件の場合、コメントタイトル・トラックバックタイトルを非表示
- コメントが0件の場合:コメントタイトルを非表示
- トラックバックが0件の場合、トラックバックタイトルを非表示
下記は当サイト配布のテンプレートでのカスタマイズ例です。シングルポスト本文下のトラックバックURL・トラックバック・コメント・コメントフォームが上記のそれぞれのケースでどのように表示されるか参考にしてください。
本エントリーでは公開テンプレートをサンプルにして説明しておりますが、非表示にする仕組みを3項で説明していますので、他のテンプレートでも同様の機能を実装することが可能です。
なお本エントリーのカスタマイズを実施する前に「コメントとトラックバックを分けて表示する for WordPress(その1)」の3.1項までの作業は完了させておいてください。
このエントリーは元記事の3.2項の表示方法を変更する説明のみです。
1.プラグインの修正
WordPress の管理画面にログインし、[プラグイン] - [プラグインエディタ] をクリックし、右側にある「プラグインファイル」より「Trackping Separator」をクリックします。
そして下記の青色部分を追加します。
//This function has the same effect as template function comments_number(), but it return only the number of comments. Track/Ping backs are not included.
function comments_only_number($no='', $one='', $many='') {
global $wpdb, $tablecomments, $post;
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1'");
$cnt = count($comments);
if (!$cnt)
echo $no;
elseif ($cnt == 1)
echo $one;
else
echo str_replace("%", $cnt, $many);
}
function get_comments_only_number($no='', $one='', $many='') {
global $wpdb, $tablecomments, $post;
$comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $post->ID AND comment_type = '' AND comment_approved = '1'");
$cnt = count($comments);
if (!$cnt)
return $no;
elseif ($cnt == 1)
return $one;
else
return str_replace("%", $cnt, $many);
}
2.コメントテンプレートの入れ替え
ここでは公開テンプレート用の comment.php を丸ごと入れ替える手順で説明します。下記のいずれかのリンクをクリックしてコメント用テンプレートをダウンロードします。
解凍した中にある comments.php を任意のエディタで開きます。
そして WordPress の管理画面にログインし、[表示] - [テーマエディタ]で「コメント」を選択、comments.php の内容を丸ごとテキストエリアの内容と入れ替え、保存してください。
3.非表示にする方法
下記のそれぞれのPHPソースのように、0件の時に非表示にしたい部分を青色部分のコードで括ります。
3.1 コメントが0件の時に非表示にする
<?php if (get_comments_only_number('0', '1', '%') != '0') { ?>
:
<? } ?>
3.2 トラックバックが0件の時に非表示にする
<?php if (trackpings('count') != '(0)') { ?>
:
<? } ?>
トラックバック件数取得はプラグインの実装をそのまま利用できるのですが、コメント件数の取得ができなかったため、1項でソースコードを追加しています。
もう少し適切な実装があるかもしれませんがとりあえず。
コメントとトラックバックを分けて表示する for WordPress(その1)
WordPress デフォルト状態では、投稿情報や個別記事でのコメントとトラックバックが別々に表示されない仕様になっています。別々に表示されるブログツールやブログサービスを利用された方が WordPress に移行されると、この表示に違和感があるかもしれません(逆に便利と感じるかもしれません)。
このエントリーでは他のサイトでも数多く紹介されている、コメントとトラックバックを独立して表示させるカスタマイズを紹介します。
1.プラグインのダウンロード
下記のサイトよりの「Download」にある Trackping Separator. を右クリックしてプラグインファイルを trackpings.php という名前でダウンロードします。

2.プラグインのアップロード・有効化
ダウンロードした trackpings.php を /wp-content/plugins 配下にアップロードします。その後、WordPress の管理画面にログインし、[プラグイン] で Trackping Separator が表示されていると思いますので、一番右にある「有効化」のリンクをクリックし、緑色の表示になればOKです。

3.テンプレートの修正
WordPress の管理画面にログインし、[表示] - [テーマエディタ]で以下の各テンプレートを修正します。
3.1 インデックス/アーカイブ/検索結果/シングルポスト
インデックス/アーカイブ/検索結果/シングルポストの各テンプレートに投稿者情報(投稿時間・カテゴリー等)がある場合は、 comments_popup_link で検索し、
<?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?>
というタグを見つけ、下記のように変更します。変更前のタグの内容はご利用のテンプレートによって若干異なりますのでご注意ください。
WordPress 2.5 以上 + プラグインバージョン 2.0 以上の場合
<?php comments_popup_link('Comments (0)', 'Comments (1)', 'Comments (%)'); ?> | <a href="<?php the_permalink() ?>#trackback" title="Trackback" class="trackacklink">Trackbacks (<?php echo trackpings('count'); ?>)</a>
WordPress 2.4 以前 + プラグインバージョン1.1.1の場合
<?php comments_only_popup_link('Comments (0)', 'Comments (1)', 'Comments (%)'); ?> | <a href="<?php the_permalink() ?>#trackback" title="Trackback" class="trackacklink">Trackbacks (<?php echo trackpings('count'); ?>)</a>
なお、シングルポストではコメント数の表示の正常性が確認できておりません。シングルポストで動作を有効にする場合、プラグインバージョン1.1.1であれば、下記(抜粋)の赤色部分、
function comments_only_popup_link($zero='No Comments', $one='1 Comment', $more='% Comments', $CSSclass='', $none='Comments Off') {
global $id, $wpcommentspopupfile, $wpcommentsjavascript, $post, $wpdb;
global $comment_count_cache;
if (! is_single() && ! is_page()) {
if ( !isset($comment_count_cache[$id]))
:
(略)
:
echo '</a>';
}
}
}
を削除またはコメントアウトすれば動作するようです。ただしあえてこのような実装になっているので、コメントアウトまたは削除することでシングルポストやゲストブックの他の部分に何らかの影響があるかもしれません(この点につきましては未確認です)。
またシングルポスト自体にはコメント本文とトラックバック本文が表示されるので、当サイトでの配布テンプレートのように投稿者情報を本文下に表示している場合は、投稿者情報からコメント・トラックバックの表示自体を削除しても良いかもしれません。
3.2 コメント
ここでは公開テンプレート用の comment.php を丸ごと入れ替える手順で説明します。下記のいずれかのリンクをクリックしてコメント用テンプレートをダウンロードします。
解凍した中にある comments.php を任意のエディタで開きます。
そして WordPress の管理画面にログインし、[表示] - [テーマエディタ]で「コメント」を選択、comments.php の内容を丸ごとテキストエリアの内容と入れ替え、保存してください。
4.参考・関連リンク
2007.04.11 追記
Trickster さんより頂いたコメントを元に、3.1項のシングルポストの記述を修正しました。
2008.08.03 追記
プラグインバージョン 2.0 以上の変更方法を追加しました。

