"Wordpressのコメント欄にてしばしば、(>_<)という顔文字で囲まれた間の文章が消えるという問題が発生。<…>の中身がhtmlタグとして認識されるために起こる現象である。
"
WordPressのコメント内htmlを無効にしつつ自動でリンクを貼る方法 | 空絵ログ
http://meho.blog44.fc2.com/blog-entry-383.html
WordPressのコメント欄で貼り付けたコードにURLが膨れれている時にURLになってしまったり、タグが消えちゃったりのトラブルを繰り返してる。URLは http:// の後に半角スペースを追加して、タグ<>の場合は<>を使ってしのいでる。でも、顔文字に<>がある場合、確かに困る。タグは無効にした方が良さそう。
コメント
次のコードをfunctions.phpに追加したら、これまでにエスケープした文字がエスケープされたままになってしまった。そりゃそうだ。
remove_filter('comment_text', 'make_clickable', 9);
add_filter( 'comment_text', 'escape_tags', 9);
add_filter( 'comment_text_rss', 'escape_tags', 9);
add_filter( 'comment_excerpt', 'escape_tags', 9);
function escape_tags( $comment_content ) {
if ( get_comment_type() == 'comment' ) {
$comment_content = htmlspecialchars($comment_content, ENT_QUOTES);
}
return $comment_content;
}
remove_filter('comment_text', 'make_clickable', 9);
だけ、functions.phpに追加しておく。
remove_filter('comment_text', 'make_clickable', 9);
と入力したつもりが、
remove_filter(‘comment_text’, ‘make_clickable’, 9);
になってた。
http://meho.blog44.fc2.com/blog-entry-383.html
次のコードを追加してみた。
remove_filter('comment_text', 'wptexturize', 9);
だめだった。
remove_filter(‘comment_text’, ‘wptexturize’, 9);
になってしまった。
define('WPTEXTURIZER', false);にしてみた。
define(‘WPTEXTURIZER’, false);になってしまった。
このコードをそのままコピーするとエラーになる。それは''が違う文字に書き換えられているから。
要注意!
”ではなまく'を二つ並べたつもり。どうして、変な変換をするかな…。(―_―メ)
’ではなく'ね。と、書いても、後ろの方も変換されちゃうだろうけど。
"WordPressには特定の記号を別の記号で自動的に置き換える機能が付いています。
例えば ドット3つ '...' が 3点リーダー '…' に置き換わるなど
この機能自体は便利かもしれないですが、そういう記号を置き換えずにそのまま表示したいこともあるかもしれません。
そこでここではWordPressで記号の自動置換を無効化する方法について紹介します。
"
WordPressで記事内の記号が自動変換されるのを防ぐ方法 | Fukuro Press
https://fukuro-press.com/wordpress-disable-wptexturize/
ということで、次のコードを入れたみた。
/** 記事本文で記号の置き換えを無効化 */
remove_filter('the_content', 'wptexturize');
/** 記事タイトルで記号置き換えを無効化 */
remove_filter('the_title', 'wptexturize');
/** 記事抜粋で記号置き換えを無効化 */
remove_filter('the_excerpt', 'wptexturize');
/** コメント本文で記号置き換えを無効化 */
remove_filter('comment_text', 'wptexturize');
今度は大丈夫だった。
以前のコードもコピペできるようになって、コメント欄に書いた勝手に変換された後のコードと区別できるようになった。
#Gemini に尋ねてみた。
私:‘はphpのコードなどで'の代わりに使えますか?
G:いいえ、PHPのコードで `‘` (タイプクォーテーション) を `'` (通常のシングルクォーテーション) の代わりに使うことはできません。
**理由:**
* **文字コードの違い:**
* `‘` と `'` は、見た目は似ていますが、異なる文字コードを持つ別の文字です。
* PHPは、`'` を文字列の開始と終了を示す記号として認識しますが、`‘` は認識しません。
* **シンタックスエラー:**
* PHPのコードで `‘` を使用すると、シンタックスエラーが発生し、プログラムが正常に動作しません。
**PHPで文字列を扱う場合:**
* **シングルクォーテーション (') :**
* シングルクォーテーションで囲まれた文字列は、変数の展開やエスケープシーケンスの解釈を行いません。
* 文字列内にシングルクォーテーションを含める場合は、`\'` のようにエスケープする必要があります。
* **ダブルクォーテーション (") :**
* ダブルクォーテーションで囲まれた文字列は、変数の展開やエスケープシーケンスの解釈を行います。
* 文字列内にダブルクォーテーションを含める場合は、`\"` のようにエスケープする必要があります。
**例:**
```php
<?php
// 正しい例
$str1 = 'これはシングルクォーテーションで囲まれた文字列です。';
$str2 = "これはダブルクォーテーションで囲まれた文字列です。";
// エラーになる例
$str3 = ‘これはタイプクォーテーションで囲まれた文字列です。’; // シンタックスエラー
?>
```
**まとめ:**
PHPのコードでは、文字列を囲む記号として、必ず `'` (通常のシングルクォーテーション) または `"` (ダブルクォーテーション) を使用してください。`‘` (タイプクォーテーション) は使用できません。
これは深刻な問題だった。
#Mastodon に送られたコンテンツも
シングルクォーテーション (') が
タイプクォーテーション (‘)に変わっていた。
次のコードを入れた後なら大丈夫だった。
/** 記事本文で記号の置き換えを無効化 */
remove_filter('the_content', 'wptexturize');
/** 記事タイトルで記号置き換えを無効化 */
remove_filter('the_title', 'wptexturize');
/** 記事抜粋で記号置き換えを無効化 */
remove_filter('the_excerpt', 'wptexturize');
/** コメント本文で記号置き換えを無効化 */
remove_filter('comment_text', 'wptexturize');
そう言えば、試してなかった。(>_<) ちゃんと試さねば。(>_<) 「ちゃんと試さねば」と書いたんだけど、表示されてないよね? これはそのままにしておく。
ちゃんと表示された。どうして?
でも、改行が無視されてる。
これは副作用かも。
改行が無視されない。(>_<) (>_<)と(>_<)の間の改行が削除されるのかな? でも、その後の改行も削除されているような…。
これはどういう現象だろう?
管理画面のコメント一覧ではタグ扱いされて間が消されてた。
次のような感じ。
"そう言えば、試してなかった。(>__<) 「ちゃんと試さねば」と書いたんだけど、表示されてないよね? これはそのままにしておく。" "改行が無視されない。(>___<)の間の改行が削除されるのかな? でも、その後の改行も削除されているような…。"
アカウントを表記した際にドメインが省略されちゃうのも問題だな…。
preタグで囲むことにした。
それから、
#追加CSS に次のコードを追加して、 #WordPress 内だけでも改行されるようにした。
/*pre内を改行させる*/
pre {
white-space: pre-wrap;
}
/*pre内を改行させる*/
"ソースコードを囲むときは<pre><code></code></pre>を使う、といろんな所で良く見ますが、preの目的はあくまでスペースや改行などをそのまま表示することです。
"
"<code></code>はソースコードを表すタグです。このタグ内に、htmlやcssの記述を書くことで、ソースコードを記述していることを伝えます。
codeをpreで囲むのは、ソースコード自体が改行やスペースが入っていないと非常に見づらいからでして、そのままの形で表示するために、この二つのタグを併用することが多いのです。
"
preとcodeとソースコードとエスケープ処理とWordPressとGoogle Code Prettifyに加えてアスキーアートも【HTML】 | Katana-Neko
https://katana-neko.com/20200902/pre-code/
@ishii
(>_<) という顔文字のある返信のテスト。(>_<)