TopWordPress > カスタマイズ > コメント > 2007年4月
2007年4月12日

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

前回エントリーした「コメントとトラックバックを分けて表示する 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項でソースコードを追加しています。
もう少し適切な実装があるかもしれませんがとりあえず。

Comments [0] | Trackbacks [4]
2007年4月11日

コメントとトラックバックを分けて表示する for WordPress(その1)

WordPress デフォルト状態では、投稿情報や個別記事でのコメントとトラックバックが別々に表示されない仕様になっています。別々に表示されるブログツールやブログサービスを利用された方が WordPress に移行されると、この表示に違和感があるかもしれません(逆に便利と感じるかもしれません)。

このエントリーでは他のサイトでも数多く紹介されている、コメントとトラックバックを独立して表示させるカスタマイズを紹介します。

2009.08.13 追記
本記事には一部不具合があるため、「コメントとトラックバックを分けて表示する for WordPress(改)」をご覧ください。

1.プラグインのダウンロード

下記のサイトよりの「Download」にある Trackping Separator. を右クリックしてプラグインファイルを trackpings.php という名前でダウンロードします。

Trackping Separator

Trackping Separator

2.プラグインのアップロード・有効化

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

Trackping Separator

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.zip / comments.lzh

解凍した中にある comments.php を任意のエディタで開きます。

そして WordPress の管理画面にログインし、[表示] - [テーマエディタ]で「コメント」を選択、comments.php の内容を丸ごとテキストエリアの内容と入れ替え、保存してください。

4.参考・関連リンク

2007.04.11 追記
Trickster さんより頂いたコメントを元に、3.1項のシングルポストの記述を修正しました。

2008.08.03 追記
プラグインバージョン 2.0 以上の変更方法を追加しました。

Comments [10] | Trackbacks [7]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3