WordPress FacebookのOGPをプラグインなしで指定する! 記事でこのblogのOGPを設定し、意気揚々とXOOPS CubeのOGPも設定したりしていました。
なのですが、抜粋の書いていない記事のOGPをよく見ると、
<meta property='og:description' content='関連'>
抜粋がない記事は全てdescriptionが 関連 になってしまっていますorz。
ななな、なぜ?ということで追いかけてみました。
状況を確認する
この部分を表示しているコードは、子テーマのheader.php
の
<meta property='og:description' content='<?php echo mb_substr(get_the_excerpt(), 0, 100) ?>'>
という部分です。get_the_excerpt() はcodexで見ると
現在の投稿の概要を”[…]”テキストを最後に付けた状態で返す関数です。
もしも投稿に抜粋が設定されていない場合、この関数は投稿内容に wp_trim_excerpt を適用し、55単語を抜き出して概要を生成します。この時生成された文字列の後ろには “[…]” が付加されます。
この通り動いているものと思ったのですが、なぜか抜粋があるものは抜粋がセットされますが、抜粋が無いものには 関連 と入っています???
原因は突き止めきれませんでしたが対処はしました
そもそも 関連 という決まった単語がなぜ全ての抜粋が指定していない投稿のdescriptionに表示されるのか全く分かりませんでした。WordPressの中を全文検索してもJetpackの中で文字定数として指定されているものが見つかっただけでした。
とにかくでも直さないと…、と色々トライして一応出るようになったので変更部分のコードを書きます。
使っている子テーマの、header.phpで
<meta property='og:description' content='<?php echo mb_substr(get_the_excerpt(), 0, 100) ?>'>
と、していましたが、これを
<meta property='og:description' content='<?php while(have_posts()): the_post(); echo get_the_excerpt('');endwhile;?>'>
このように変えます。これで抜粋の指定していない投稿でも、
<meta property='og:description' content='今日blogを書くためにローカルにbackWPupで取ってあるバックアップからサイトを再作成しようとしたら… がぁ~ん!最後のバックアップは 6月3日! なんと半月もバックアップが取れていませんでした(;;)。 すぐに、 […]'>
このように表示されるようになりました!
原因は…?
そもそも的に、single.phpで投稿を表示する時も
while(have_posts())
を使ってループしているので、この書き方でないと表示はできないはずかなーと思いました。しかし、the_titleとかあと抜粋があるときは表示できるのはheader用になにかあらかじめセットされているのかも…と想像したのですが、実際に全てのコードを追いかけた訳ではないので分かりませんでした。
ほかのサイトで前回書いたようなコードでうまくいっているようなかんじのところもあるようなので、かならずしもこのようにしなくてもうまくdescriptionが表示できているのかもしれません(>_<)。
とりあえず私と同じような状況になったかたは、上記のコードで試してみてください!
コメント