コメントとトラックバックを分けて表示する for WordPress(その2:タイトルを非表示にする方法)

コメントとトラックバックを分けて表示する for WordPress(その2:タイトルを非表示にする方法)

Posted at April 12,2007 1:25 AM
Tag:[Comment, Customize, Plugin, Trackback, WordPress]

前回エントリーした「コメントとトラックバックを分けて表示する for WordPress(その1)」では、記事に対しコメント・トラックバックがない場合でも「コメント」および「トラックバック」のタイトルを非表示にすることができません。

ということで本エントリーでタイトルを非表示にする方法を紹介します。このカスタマイズで下記のような動作になります。

  • コメント・トラックバックとも0件の場合、コメントタイトル・トラックバックタイトルを非表示
  • コメントが0件の場合:コメントタイトルを非表示
  • トラックバックが0件の場合、トラックバックタイトルを非表示

下記は当サイト配布のテンプレートでのカスタマイズ例です。シングルポスト本文下のトラックバックURL・トラックバック・コメント・コメントフォームが上記のそれぞれのケースでどのように表示されるか参考にしてください。

コメント・トラックバックともに0件の場合
コメント・トラックバックともに0件の場合

コメントあり・トラックバック0件の場合
コメント・トラックバックともに0件の場合

コメント0件・トラックバックありの場合
コメント・トラックバックともに0件の場合

コメント・トラックバックともにありの場合
コメント・トラックバックともに0件の場合

本エントリーでは公開テンプレートをサンプルにして説明しておりますが、非表示にする仕組みを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.zip / comments.lzh

解凍した中にある 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項でソースコードを追加しています。
もう少し適切な実装があるかもしれませんがとりあえず。

関連記事
トラックバックURL


トラックバック

コメントとトラックバックを分けて表示する from Makologg???
@ET.ではブログツールとしてWordpressを使用していますが、何点か気に入... [続きを読む]

Tracked on November 25, 2007 5:02 PM

テンプレートのいぢくり(笑) from 戯言(表)
... [続きを読む]

Tracked on May 20, 2008 10:54 PM

コメントとトラックバックを分けて表示する from プロ翻訳者への道
WordPressを使い始めてからずっと不思議だったこと、それはどのテーマのテンプレートにもトラックバックの表示機能がついていないんです。 個別アーカイブ... [続きを読む]

Tracked on May 27, 2008 9:53 PM

Wordpressの記事にコメントとトラックバックを分けて表示させ、0件の場合は非表示にさせる from 木下茂雄のブログ
Wordpressは元々コメントとトラックバックが統合されている。それを無理やり分けて表示する方法をメモしておく。 Trackping Separato... [続きを読む]

Tracked on February 15, 2009 11:38 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)