コメントとトラックバックを分けて表示する 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項でソースコードを追加しています。
もう少し適切な実装があるかもしれませんがとりあえず。
- WordPressの固定ページでコメントフォームを非表示にする方法
- コメントとトラックバックを分けて表示する for WordPress(改)
- コメントとトラックバックを分けて表示する for WordPress(その1)
- WordPress のコメントをページ分割する Paged Comments Plugin
≫ コメントとトラックバックを分けて表示する from Makologg???
@ET.ではブログツールとしてWordpressを使用していますが、何点か気に入... [続きを読む]
≫ テンプレートのいぢくり(笑) from 戯言(表)
... [続きを読む]
≫ コメントとトラックバックを分けて表示する from プロ翻訳者への道
WordPressを使い始めてからずっと不思議だったこと、それはどのテーマのテンプレートにもトラックバックの表示機能がついていないんです。
個別アーカイブ... [続きを読む]
≫ Wordpressの記事にコメントとトラックバックを分けて表示させ、0件の場合は非表示にさせる from 木下茂雄のブログ
Wordpressは元々コメントとトラックバックが統合されている。それを無理やり分けて表示する方法をメモしておく。
Trackping Separato... [続きを読む]