the_excerpt()関数の挙動について確認したい
-
掲題の通りthe_excerpt()関数の挙動がCodexの解説の通り動作していないようでしたので、ここで質問させていただきます。
【環境】
・レンタルサーバー内に設置
・PHP/SQLバージョン:5.2.12/5.0.51a-log
・WordPressバージョン:3.4.2-ja
・動作プラグイン:
Akismet/Collapsing Archives/Crayon Syntax Highlighter/Disable Revisions/Enhancing CSS/Google Analyticator/Google XML Sitemaps/Ktai Style/PS Disable Auto Formatting/Search Meter/Slickr Flickr/Socialize/TimThumb Vulnerability Scanne/WP-Juicebox/WP-Table Reloaded/WP Multibyte Patch
・確認ブラウザー:IE9, Firefox15(Win)【問題】
現在私のWordPressサイトではOGP生成を半自動で行なうために、header.php内に関数を使ってOGP情報を入力しています。
その中でページが[記事]だった場合には下記のコードを出力するようにしていました。
<meta property="og:description" content="<?php the_excerpt(); ?>" />
ところが、いつのバージョンか特定できていないのですが、ページの先頭部分に記事が混入して表示がおかしくなっていました。
「WP Multibyte Patch」を除くすべてのプラグイン&テーマを停止、キャッシュ削除してみても改善は見られませんでした。【解析】
ソースを見てみると該当のog:descriptionのcontentの中身にHTMLタグを含んだ55文字以上の内容が入り込んでいるためでした。
下記Codexの説明によれば、(more)までの記述をHTMLのタグや画像を除去した状態の55文字を抜き出す…とあるのですがうまく動作していないように見えます。
http://codex.wordpress.org/Template_Tags/the_excerpt55文字の制限については日本語がマルチバイトであるため仕方ないと思うし、そのための「WP Multibyte Patch」だと思っているのですが、HTMLのタグが混入しているのが不思議です。
【現状】
metaタグの中に本文注のHTMLタグを含む内容が混入するのは見た目にも構文的にもよろしくないので、現在はstrip_tags関数を使い下記の通り除去しています。
<?php if(has_excerpt()){echo strip_tags(get_the_excerpt());} else {echo mb_substr(wp_kses(get_the_content(), $allow_tags),0,100);} ?>" />
($allow_tagsの中身は空)
出力されたdescriptionもなんだかなぁという感じなので将来的にはマニュアル入力しようと思っています。で、最初に戻るのですがthe_excerpt()関数を使っていらっしゃるみなさんはきちんと動作していますでしょうか?
- トピック「the_excerpt()関数の挙動について確認したい」には新たに返信することはできません。