
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()
を呼び出し、コメント本文を取得します。
その後、以下の処理が行われます。
strip_tags()
によりHTMLタグをすべて除去。ent2ncr()
によりHTMLエンティティを数値参照に変換。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()の具体的な処理内容
関数の内部の処理イメージは次の通りです。
$text = get_comment_text()
通常のコメント本文を取得(HTMLタグあり)。$text = strip_tags( $text )
すべてのHTMLタグを除去。$text = ent2ncr( $text )
&
などのHTMLエンティティを数値参照に変換(文字化け対策)。$text = convert_chars( $text )
特殊文字の整形(全角チルダなど)。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として正しいデータを生成することが重要です。