
comment_type()とは?
comment_type()
は、コメントの種類を判別し、適切な表示を行うためのテンプレートタグです。
WordPressでは、コメントには大きく3つのタイプがあります。
- コメント (Comment)
一般のユーザーが投稿した普通のコメント。 - トラックバック (Trackback)
他のサイトから送信されるトラックバック。 - ピンバック (Pingback)
他のWordPressサイトからの自動通知。
これらは同じ「コメント」として管理されますが、それぞれ性質が異なるため、表示上区別する必要があります。comment_type()
を使うと、それらを簡単に分岐・表示できます。
comment_type()の基本的な書式
comment_type(
string $comment_text = null,
string $trackback_text = null,
string $pingback_text = null,
bool $echo = true
)
パラメータは4つあります。
パラメータ | 内容 |
---|---|
$comment_text | 通常のコメントの場合に表示するテキスト。 |
$trackback_text | トラックバックの場合に表示するテキスト。 |
$pingback_text | ピンバックの場合に表示するテキスト。 |
$echo | true なら出力、false なら文字列を返す。 |
この関数は、現在のコメントの種類を判定し、該当するテキストを表示または返します。
comment_type()の代表的な使い方
最もシンプルな使い方では、パラメータを指定せずに呼び出します。
<?php comment_type(); ?>
この場合、内部的には以下のデフォルトが使われます。
- コメント →
Comment
- トラックバック →
Trackback
- ピンバック →
Pingback
例)ピンバックコメントであれば「Pingback」と表示されます。
comment_type()の表示を日本語にする
comment_type()
はラベルを自由にカスタマイズできます。
例:
<?php comment_type(
'コメント',
'トラックバック',
'ピンバック'
); ?>
コメントが通常の場合は「コメント」、トラックバックなら「トラックバック」、ピンバックなら「ピンバック」と表示されます。
$echo = false
で取得だけする
出力ではなく文字列を取得したい場合は、$echo = false
を指定します。
例:
<?php
$type = comment_type(
'コメント',
'トラックバック',
'ピンバック',
false
);
echo 'このコメントは ' . $type . ' です。';
?>
出力例:「このコメントは コメント です。」
comment_type()のテンプレートでの活用例
wp_list_comments()
のコールバック関数など、コメントの種類によって表示を切り替えるのに便利です。
function my_comment_callback($comment, $args, $depth) {
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
<div class="comment-type">
<?php comment_type('コメント', 'トラックバック', 'ピンバック'); ?>
</div>
<div class="comment-author">
<?php echo get_comment_author_link(); ?>
</div>
<div class="comment-meta">
<?php comment_date(); ?> <?php comment_time(); ?>
</div>
<div class="comment-content">
<?php comment_text(); ?>
</div>
</li>
<?php
}
このように comment_type()
を使えば、コメントの種別を明示的に出力できます。
カスタムHTMLを組み合わせる
通常はテキストだけですが、HTMLを含めることも可能です。
例:
<?php comment_type(
'<span class="type-comment">コメント</span>',
'<span class="type-trackback">トラックバック</span>',
'<span class="type-pingback">ピンバック</span>'
); ?>
これにより、CSSで装飾がしやすくなります。
get_comment_type()
との違い
似た名前で get_comment_type()
という関数もあります。
関数 | 内容 |
---|---|
comment_type() | コメントの種類に応じてラベルを出力または返す。 |
get_comment_type() | コメントの種別を文字列で返す(comment , pingback , trackback など)。 |
具体例:
<?php
$type = get_comment_type();
echo 'コメント種別: ' . $type;
?>
出力例:「コメント種別: comment」
こちらは「生の種別文字列」を取得する用途で使います。
フィルター
comment_type()
自体にはフィルターフックはありませんが、get_comment_type()
を利用すれば取得した種別をプログラム的に分岐できます。
comment_type()のよくある応用例
種別ごとに出力を切り替える
get_comment_type()
を使って、コメントの出力方法自体を変えたい場合は以下のようにします。
<?php
$type = get_comment_type();
if ($type == 'comment') {
echo '<div class="regular-comment">';
comment_text();
echo '</div>';
} elseif ($type == 'pingback') {
echo '<div class="pingback">';
echo 'ピンバック: ';
comment_author_link();
echo '</div>';
} elseif ($type == 'trackback') {
echo '<div class="trackback">';
echo 'トラックバック: ';
comment_author_link();
echo '</div>';
}
?>
この方法は、種別ごとにレイアウトを変更したい場合に便利です。
comment_type()の注意点
- コメントの種類は3種類のみ。
(通常コメント、トラックバック、ピンバック) - カスタムコメントタイプは存在しません。
comment_type()
のパラメータは翻訳されないので、表示テキストを多言語対応する場合は__()
を使う必要があります。
例:
<?php comment_type(
__('Comment', 'textdomain'),
__('Trackback', 'textdomain'),
__('Pingback', 'textdomain')
); ?>
comment_type()のまとめ
comment_type()
のポイント
- コメントの種別(コメント / トラックバック / ピンバック)を表示する。
- 出力テキストを自由に設定できる。
$echo=false
で文字列取得が可能。get_comment_type()
と組み合わせると分岐処理に柔軟性が増す。
コメントの可読性や区別を高めたいとき、テーマのコメントテンプレートに積極的に組み込むのがベストです。