Cocoonフォーラム

書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

パンくずリストの時、投稿・固定ページの...
 
共有:
通知
すべてクリア

[解決済] パンくずリストの時、投稿・固定ページのタイトルのesc_htmlについて

11 投稿
3 ユーザー
8 Likes
310 表示
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
Topic starter  

投稿・固定ページのタイトルの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)するのも...


   
わいひら
(@yhira)
Illustrious Member Admin
結合: 5年前
投稿: 14317
 

タイトルが以下のような時のために使用していましたが、

テストタイトル<div>

現在投稿などのタイトルに記入しようとしてもタグは挿入できないようなので必要ないかもしれませんね。
厳密にesc_htmlしていたわけでもないですし。


   
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
Topic starter  
投稿者:: @yhira

現在投稿などのタイトルに記入しようとしてもタグは挿入できないようなので必要ないかもしれませんね。

esc_htmlを削除して頂けるとありがたたく。
恐れ入りますが、対応の可否について回答願いたく。


   
Akira
(@akira)
Noble Member Registered
結合: 5年前
投稿: 1208
 

削除して大丈夫でしょうか?

試しに、投稿ページのタイトルをこのように書いてみました。

<script></script>とは?

esc_html() を削除すると、そのままの <script> が出力されます。

独自カスタマイズでthe_tileにフックし、投稿後一定期間、タイトル前に<span class=new>NEW</span>を付加しています。

この方法が問題かもしれません。

「吾輩は猫である」がタイトルの場合、一定期間は「NEW吾輩は猫である」が正式なタイトルになってしまいます。NEW はタイトルに含めていいのでしょうか?

私であれば、NEW の文字を <title> や <h1> には入れないようにタイトルとは別に書きます。


   
わいひら and chu-ya reacted
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
Topic starter  
投稿者:: @akira

試しに、投稿ページのタイトルをこのように書いてみました。

削除すると問題がある件、理解しました。
ありがとうございます。

●気付いた点

試しに投稿ページのタイトルにHTMLタグを入力してみました。
投稿ページのタイトルは、そのままHTMLタグが出力されているようです。
これはOK??

●ご意見

以下の件、言われる通りです。
趣味なので、そこまで気にしていません。お気遣い申し訳なく。

一定期間は「NEW吾輩は猫である」が正式なタイトルになってしまいます。NEW はタイトルに含めていいのでしょうか?


   
わいひら reacted
Akira
(@akira)
Noble Member Registered
結合: 5年前
投稿: 1208
 

get_the_title() 公式ドキュメントの User Contributed Notes では、意見が分かれています。Jon (Kenshino) さんはエスケープしないでと書かれていますが、Tom J Nowell さんはエスケープするべきと書かれています。

そのため、エスケープ処理をすべきかどうか以前から迷っています。公式テーマでもエスケープしている箇所もあれば、していない箇所もあったりとまちまちです。

ただ、右も左も分からない素人の方も安心して使えるテーマにするのなら、エスケープ処理を入れるのがいいかもとは思っています。<h1> のところもエスケープ処理を入れるのがいいかもしれません。


   
わいひら and chu-ya reacted
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
Topic starter  
投稿者:: @akira

そのため、エスケープ処理をすべきかどうか以前から迷っています。公式テーマでもエスケープしている箇所もあれば、していない箇所もあったりとまちまちです。

色々すみません、わき道にそれてしまい。


   
わいひら
(@yhira)
Illustrious Member Admin
結合: 5年前
投稿: 14317
 

以前、タイトルにタグを書きたいみたいな投稿があったような気がしてて、そういう需要もあるのかなと思いました。

投稿者:: @akira

ただ、右も左も分からない素人の方も安心して使えるテーマにするのなら、エスケープ処理を入れるのがいいかもとは思っています。<h1> のところもエスケープ処理を入れるのがいいかもしれません。

ただ、初心者の方が使うことが多いCocoonなら上記ですね。
確かにその通りだと思います。


   
Akira
(@akira)
Noble Member Registered
結合: 5年前
投稿: 1208
 

どのエスケープ処理をするかなのかもしれません。

例えば、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 3か月前 6回 by Akira

   
わいひら and chu-ya reacted
chu-ya
(@chu-ya)
Noble Member Registered
結合: 10か月前
投稿: 723
Topic starter  
投稿者:: @akira

wp_kses_post() であれば、<script> や <iframe> など明らかにまずい HTML は削除できます。それでいて、WordPress デフォルトでも <span> などは使えます。

全体の仕様に関わる話になり。
本来の「パンくずリストの時、投稿・固定ページのタイトルのesc_htmlについて」については、勝手ながら一旦、クローズとしたいと思います。

●結論
恐れ入りますが、今回の該当部の「esc_htmlは削除しない」としたいと思います。
色々、調査ありがとうございました。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Member Admin
結合: 5年前
投稿: 14317
 

wp_kses_post()なんてこんないいものがあったんですね。これでもいいのかも。
ただ、Akiraさんに提示していただいた許可されているタグにタイトルで使うには必要のないものもありそうなので、今回はesc_html()のままにさせていただこうと思います。
wp_kses_post()も使い勝手が良さそうなので、今後HTML出力を考える時に使うか検討させていただこうと思います。
良い勉強になりました。ありがとうございます!


   
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました