comment_type()

comment_type()
目次

comment_type()とは?

comment_type() は、コメントの種類を判別し、適切な表示を行うためのテンプレートタグです。

WordPressでは、コメントには大きく3つのタイプがあります。

  1. コメント (Comment)
    一般のユーザーが投稿した普通のコメント。
  2. トラックバック (Trackback)
    他のサイトから送信されるトラックバック。
  3. ピンバック (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ピンバックの場合に表示するテキスト。
$echotrueなら出力、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() と組み合わせると分岐処理に柔軟性が増す。

コメントの可読性や区別を高めたいとき、テーマのコメントテンプレートに積極的に組み込むのがベストです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次