comment_text_rss()

comment_text_rss()
目次

comment_text_rss()とは?

comment_text_rss() は、WordPressのRSSフィード用のテンプレートタグです。
名前の通り、コメント本文を RSSフィードに出力する ために使用します。

WordPressでは、投稿だけでなくコメントもRSSフィードとして配信できます。その際、通常のコメント本文はHTMLを含む形式で保存されていますが、RSSフィードにそのまま出力するのは好ましくありません。XMLに適した形式に整形し、特殊文字をエスケープする必要があります。comment_text_rss() は、その処理を行いながら本文を出力する関数です。

comment_text_rss()の基本的な用途

通常、comment_text_rss() はコメントフィードテンプレート (wp-includes/feed-rss2-comments.php など) の中で使われます。

コメントフィードを生成する際に、コメント本文を取得し、適切にサニタイズしたうえでRSSフィードに埋め込むために使用されます。

たとえば、feed-rss2-comments.php テンプレートの中で以下のように使われます。

<description>
    <![CDATA[
    <?php comment_text_rss(); ?>
    ]]>
</description>

このように <description> 要素内で comment_text_rss() を呼ぶことで、コメントの内容がRSS購読者に配信されます。

comment_text_rss()の動作の仕組み

comment_text_rss() は、内部で get_comment_text() を呼び出し、コメント本文を取得します。
その後、以下の処理が行われます。

  1. strip_tags() によりHTMLタグをすべて除去。
  2. ent2ncr() によりHTMLエンティティを数値参照に変換。
  3. convert_chars() により特殊文字をXMLに適した形に変換。

これらの工程によって、フィード内に埋め込んでも問題ないテキストとして出力できます。

comment_text_rss()の関連するコード例

以下は、簡単なRSSコメントフィードの出力例です。

<?php
header( 'Content-Type: application/rss+xml; charset=' . get_option( 'blog_charset' ), true );
echo '<?xml version="1.0" encoding="' . get_option( 'blog_charset' ) . '"?' . '>';
?>
<rss version="2.0">
<channel>
    <title><?php bloginfo_rss( 'name' ); ?> - コメント</title>
    <link><?php bloginfo_rss( 'url' ); ?></link>
    <description><?php bloginfo_rss( 'description' ); ?></description>
    <language><?php bloginfo_rss( 'language' ); ?></language>
    <?php if ( have_comments() ) : ?>
        <?php while ( have_comments() ) : the_comment(); ?>
            <item>
                <title><?php printf( __( 'コメント by %s' ), get_comment_author_rss() ); ?></title>
                <link><?php comment_link(); ?></link>
                <pubDate><?php echo get_comment_date( 'r' ); ?></pubDate>
                <guid><?php comment_guid(); ?></guid>
                <description>
                    <![CDATA[
                    <?php comment_text_rss(); ?>
                    ]]>
                </description>
            </item>
        <?php endwhile; ?>
    <?php endif; ?>
</channel>
</rss>

このように、comment_text_rss() はRSS用に安全化されたプレーンテキストを出力します。

他のコメント出力関数との違い

WordPressにはコメント本文を出力するタグがいくつかあります。

関数用途
comment_text()通常のコメント表示用(HTMLタグを保持)。
get_comment_text()コメント本文を取得するが出力しない(HTMLを保持)。
comment_excerpt()コメントの抜粋を表示(HTMLを適度に整形)。
comment_text_rss()RSS用にHTMLを除去し、XMLに最適化して出力。

つまり、comment_text_rss() はRSS出力専用の処理が組み込まれている特別な関数です。

comment_text_rss()の具体的な処理内容

関数の内部の処理イメージは次の通りです。

  1. $text = get_comment_text()
    通常のコメント本文を取得(HTMLタグあり)。
  2. $text = strip_tags( $text )
    すべてのHTMLタグを除去。
  3. $text = ent2ncr( $text )
    &amp; などのHTMLエンティティを数値参照に変換(文字化け対策)。
  4. $text = convert_chars( $text )
    特殊文字の整形(全角チルダなど)。
  5. echo $text
    出力。

この一連の処理により、RSSリーダーでの表示崩れやXML解析エラーを防止できます。

comment_text_rss()のパラメータ

comment_text_rss() はパラメータを受け付けません。
そのため、表示内容をカスタマイズしたい場合は、出力前にフィルターを利用します。

comment_text_rss()のフィルター

comment_text_rss() には、以下のフィルターが適用されます。

  • comment_text_rss
    RSS出力用に整形したテキストを最終的に加工するフィルター。

例:

add_filter( 'comment_text_rss', 'my_comment_text_rss_filter' );
function my_comment_text_rss_filter( $text ) {
    return $text . ' (フィード限定メッセージ)';
}

このようにすれば、すべてのコメントRSS本文にカスタムメッセージを追加可能です。

comment_text_rss()のよくある使い方

テーマやプラグインで独自のコメントRSSフィードを作る際、comment_text() を使ってしまうと、HTMLがそのまま出力されXMLが壊れる恐れがあります。

RSS用のコメント本文には必ずcomment_text_rss()を使うことで、次の問題を回避できます。

  • XMLパースエラー
  • タグの不正閉じ
  • 表示崩れ
  • RSSリーダーでの文字化け

サンプル:RSSフィードにカスタム要素を追加

コメント本文に加えて、任意の注釈をRSSに出したい場合は、下記のようにフィルターを活用できます。

add_filter( 'comment_text_rss', 'append_custom_note_to_rss' );
function append_custom_note_to_rss( $text ) {
    $note = '(このコメントは当サイトのRSSフィードから配信されています)';
    return $text . "\n\n" . $note;
}

これにより、購読者にRSS配信である旨を伝えられます。

comment_text_rss()注意点

  • comment_text_rss()はHTMLタグを含みません。装飾が必要な場合はフィード側で <CDATA> を使うか、カスタムテンプレートを作る必要があります。
  • WordPressの標準コメントRSSフィード(/comments/feed/)では自動的にこの関数が使われています。
  • テーマで comments_rss_link() を利用するとコメントフィードのURLを取得できます。

comment_text_rss()のまとめ

comment_text_rss() は、WordPressでコメントRSSフィードを正しく生成するための非常に重要な関数です。

主な特徴を整理すると:

  • コメント本文をRSS用に安全化して出力。
  • HTMLタグを削除し、特殊文字を変換。
  • フィルターでカスタマイズ可能。
  • 通常の comment_text() とは異なる用途。

RSSフィードを配信するテーマやプラグインを作る場合には、必ず comment_text_rss() を利用し、XMLとして正しいデータを生成することが重要です。

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

この記事を書いた人

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

目次