サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
Topic starter
2022年10月21日 11:37
投稿・固定ページのタイトルのesc_htmlについて質問があります。
----------------------------------------------
テーマ名:Cocoon
バージョン:2.5.0.4
カテゴリ数:19
タグ数:146
ユーザー数:1
----------------------------------------------
●設定
[Cocoon設定]→[固定ページ]→くずリスト設定「記事タイトル」
[Cocoon設定]→[投稿]→くずリスト設定「記事タイトル」
●質問
tmp\breadcrumbs-page.php
tmp\breadcrumbs.php
タイトルを取得(get_the_title)時、esc_htmlでHTMLタグをエスケープしている。
esc_htmlする必要はありますか?
●経緯
独自カスタマイズでthe_tileにフックし、投稿後一定期間、タイトル前に<span class=new>NEW</span>を付加しています。
このタグが文字として扱われてしまい。
●気付いたこと
lib/html-forms.php
人気記事一覧の作成はget_the_titleを用いていない。
generate_popular_entries_tagで作成リストから
$title = $post->post_title
としている。
get_the_titleを使用していないので、上記のNEWが付かず。
わざわざ、ワンクッションおいて$title=get_the_title($post->ID)するのも...
2022年10月21日 19:17
タイトルが以下のような時のために使用していましたが、
テストタイトル<div>
現在投稿などのタイトルに記入しようとしてもタグは挿入できないようなので必要ないかもしれませんね。
厳密にesc_htmlしていたわけでもないですし。
Topic starter
2022年10月21日 20:18
現在投稿などのタイトルに記入しようとしてもタグは挿入できないようなので必要ないかもしれませんね。
esc_htmlを削除して頂けるとありがたたく。
恐れ入りますが、対応の可否について回答願いたく。
2022年10月21日 20:48
削除して大丈夫でしょうか?
試しに、投稿ページのタイトルをこのように書いてみました。
<script></script>とは?
esc_html() を削除すると、そのままの <script> が出力されます。
独自カスタマイズでthe_tileにフックし、投稿後一定期間、タイトル前に<span class=new>NEW</span>を付加しています。
この方法が問題かもしれません。
「吾輩は猫である」がタイトルの場合、一定期間は「NEW吾輩は猫である」が正式なタイトルになってしまいます。NEW はタイトルに含めていいのでしょうか?
私であれば、NEW の文字を <title> や <h1> には入れないようにタイトルとは別に書きます。
2022年10月21日 21:23
get_the_title() 公式ドキュメントの User Contributed Notes では、意見が分かれています。Jon (Kenshino) さんはエスケープしないでと書かれていますが、Tom J Nowell さんはエスケープするべきと書かれています。
そのため、エスケープ処理をすべきかどうか以前から迷っています。公式テーマでもエスケープしている箇所もあれば、していない箇所もあったりとまちまちです。
ただ、右も左も分からない素人の方も安心して使えるテーマにするのなら、エスケープ処理を入れるのがいいかもとは思っています。<h1> のところもエスケープ処理を入れるのがいいかもしれません。
Topic starter
2022年10月21日 21:27
そのため、エスケープ処理をすべきかどうか以前から迷っています。公式テーマでもエスケープしている箇所もあれば、していない箇所もあったりとまちまちです。
色々すみません、わき道にそれてしまい。
2022年10月21日 22:03
以前、タイトルにタグを書きたいみたいな投稿があったような気がしてて、そういう需要もあるのかなと思いました。
ただ、右も左も分からない素人の方も安心して使えるテーマにするのなら、エスケープ処理を入れるのがいいかもとは思っています。<h1> のところもエスケープ処理を入れるのがいいかもしれません。
ただ、初心者の方が使うことが多いCocoonなら上記ですね。
確かにその通りだと思います。
2022年10月21日 22:23
どのエスケープ処理をするかなのかもしれません。
例えば、Tom J Nowell さんがお書きになっている ように wp_kses_post() を使うのも選択肢かもしれません。
wp_kses_post(get_the_title())
wp_kses_post() であれば、<script> や <iframe> など明らかにまずい HTML は削除できます。それでいて、WordPress デフォルトでも <span> などは使えます。
wp_kses_post() で許可されているタグと属性の一覧: https://github.com/WordPress/WordPress/blob/master/wp-includes/kses.php#L61-L378
これらの属性も使えます: https://github.com/WordPress/WordPress/blob/master/wp-includes/kses.php#L2562-L2577
wp_kses_post() であれば、chu-ya さんのご希望に沿えるように思えます。
This post was modified 2年前 6回 by Akira
Topic starter
2022年10月21日 22:52
wp_kses_post() であれば、<script> や <iframe> など明らかにまずい HTML は削除できます。それでいて、WordPress デフォルトでも <span> などは使えます。
全体の仕様に関わる話になり。
本来の「パンくずリストの時、投稿・固定ページのタイトルのesc_htmlについて」については、勝手ながら一旦、クローズとしたいと思います。
●結論
恐れ入りますが、今回の該当部の「esc_htmlは削除しない」としたいと思います。
色々、調査ありがとうございました。
わいひら reacted
2022年10月22日 19:34
wp_kses_post()なんてこんないいものがあったんですね。これでもいいのかも。
ただ、Akiraさんに提示していただいた許可されているタグにタイトルで使うには必要のないものもありそうなので、今回はesc_html()のままにさせていただこうと思います。
wp_kses_post()も使い勝手が良さそうなので、今後HTML出力を考える時に使うか検討させていただこうと思います。
良い勉強になりました。ありがとうございます!
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。