WordPressのコメント欄はHTMLタグを使えるため、顔文字の”<“がタグの始点と判定されエラーに繋がっていると思われます。
顔文字の不等号を実体参照で記述するかコメント欄のHTMLタグを無効にすれば解決します。
(HTMLタグを無効にすると実体参照はそのまま表示されるようになります。)
HTMLを無効にする場合はテーマのfunctions.phpに以下を記述。
function escape_tags( $comment_content ) {
if ( get_comment_type() == 'comment' ) {
$comment_content = htmlspecialchars($comment_content, ENT_QUOTES);
}
return $comment_content;
}
add_filter( 'comment_text', 'escape_tags', 9);
add_filter( 'comment_text_rss', 'escape_tags', 9);
add_filter( 'comment_excerpt', 'escape_tags', 9);
moyo55様、ご回答ありがとうございます。
HTMLタグを使えるなら、<>はダメに決まってますね。
初歩的な質問で、大変失礼いたしました。
重ねての質問で恐縮ですが、functions.phpを書き換えると、テーマが更新された場合、上書きされてしまいますでしょうか?
phpは全くの初心者なのですが、functions.local.phpのような書き方は可能でしょうか?
それと、「バグ報告と提案」フォーラムが適切でないのですが、他のフォーラムに変更することは可能でしょうか?
テーマに直接書き込むと更新時に上書きされてしまうため、WordPressでは設定を上書きするための子テーマを利用するのが一般的です。
詳しくは「WordPress 子テーマ」などの単語で検索して調べてみてください。
大抵のテーマには子テーマが用意されているのでそれを使い、子テーマ内のfunctions.phpに書けばOKです。
もし子テーマが無い場合には自分で作ることになります。
(子テーマを作成できるプラグインなどもあるようです。)
親テーマに手を加えない暫定的な対応としては「プラグイン化」という選択肢もあります。
これも詳しくは検索して調べてください。
ざっくり手順を説明すると、プラグインフォルダ内に自作プラグインのフォルダを作り、その中に自作プラグインのphpファイルを作り
<?php
/*
Plugin Name: コメント欄のHTMLタグ無効化プラグイン
Description: コメント欄のHTMLタグを無効化する
Version: 1.0.0
*/
function escape_tags( $comment_content ) {
if ( get_comment_type() == 'comment' ) {
$comment_content = htmlspecialchars($comment_content, ENT_QUOTES);
}
return $comment_content;
}
add_filter( 'comment_text', 'escape_tags', 9);
add_filter( 'comment_text_rss', 'escape_tags', 9);
add_filter( 'comment_excerpt', 'escape_tags', 9);
といった内容の記述してプラグインページで有効化すればOKです。
(記述ミスをしてエラーが出た場合はftpから自作プラグインフォルダを削除してください)
フォーラム変更が出来るかはわかりません、すみません。
moyo55様、早速のご回答ありがとうございます。
子テーマを利用すると、安全にオーバーライドできるのですね。
調べてみます。
フォーラム変更につきましても、承知いたしました。
内容が「バグ報告と提案」ではなくて恐縮ですが、これでcloseしたいと思います。