
WordPress の記事抜粋は the_excerpt() で出力できますが、<head>タグ内で使いたい場合があります。
たとえば、META タグの <meta name=”description”> とか。OGP の<meta property=”og:description” ?>” />とか。
ただ、ページの説明として記事抜粋を使う事は理に叶っていると思いますが、普通に、WordPress のテンプレートタグ( the_excerpt() )を使って、
と、出力すると不具合が出る場合があります。
どんな場合に不具合が出るのか?
記事抜粋内で <a> タグなどの HTML タグを使用している場合に不具合が出ます。例えば、
昨日に続いて MacBook Air のレビューをお届けします。
のような記事抜粋にしてると NG。
この例では「昨日」に昨日書いた記事へのリンクがついてますが、このように記事抜粋に何等かしらの HTML タグが付いていると、出力される META タグが、
昨日に続いて MacBook Air のレビューをお届けします。" />
のようになってしまうため、意図しない場所で”(ダブルクォーテーション)が閉じられてしまいます。
この場合は、href= の後ろの”で content= が閉じられちゃう。
その結果、画面の上部に意図せず閉じられた「”」以下の文字列が表示されてしまったり・・・。
また、”(ダブルクォーテーション)を使わないタグであっても、タグがそのまま出力されちゃうのでよろしくない。
strip_tags() を使えばオッケー
記事抜粋の中で HTML を一切使わないようにすれば良い訳ですが、そりゃリンクを張りたい場面だってある訳で、さらに過去記事の記事抜粋で HTML タグを使ってたりすると、過去の記事をイチイチ修正するのもメッチャ手間。
そこで登場するのが PHP の関数 strip_tags() です。
この関数は引数に渡した文字列から HTML タグを除去してくれます。なので、
ではなくて、
としてあげれば、記事抜粋の HTML タグが除去されて、ちゃんと
注意する点は、strip_tags() に渡す引数は、the_excerpt() ではなくて get_the_excerpt() を渡してあげる必要があります。
参考:テンプレートタグ/the excerpt – WordPress Codex 日本語版
参考:get_the_excerpt:WordPress私的マニュアル
また、「echo」を付けてあげないと何も出力してくれません。
ということで、今は記事抜粋で HTML タグなんか使ってないもんねー、な人でも今後記事抜粋に HTML タグを書きたくなっちゃう場面も出てくると思うので、記事抜粋( the_excerpt() )を <head>タグとかで使っている場合はとりあえず strip_tags() しておけば安心だと思います。
でわでわ。
[…] 参考: ・「the_excerpt()」をカスタマイズ[WordPress] ・WordPress の記事抜粋( the_excerpt() ) を <head> タグ内で使う場合の注意点 |… ほとんど、上記の参考にしたソースのままです。 […]