久々にデバッガーで挙動をチェックしました。するとOGP関連タグがえらいことに。
具体的には、head
ではなくなぜかbody
タグ内に出力され og:image
が認識されていない、という現象です。
修正してみて、原因は og:description
にHTMLタグが含まれているせいだったのかも、と推測。OGP設定を出力するファイル st-ogp.php
の修正方法をご紹介します。
実現させたいこと
og:description
からHTMLタグを除去- 同じく半角スペースになる改行を除去
サンプルコード
<meta property='og:description' content='<?php echo mb_substr(str_replace(array("\r\n", "\r", "\n"), '', strip_tags($exce)), 0, 100); ?>'>
str_replace
str_replace
は文字列を検索し一致したものをすべて置き換えるPHP関数です。ここでは改行(CR+LF)を検索し空に置き換えることで改行の削除を行っています。
strip_tags
strip_tags
はHTMLタグ、PHPタグを除去するPHP関数です。
変数$exce
は STINGER PLUS+ で定義されており、「抽出した記事本文」のこと。つまりこの変数の部分は、他のテーマを使っている場合は別途指定してやる必要があります。
記事本文のプレーンテキストをメタディスクリプションとしたいのは投稿記事ページと固定ページだけです。つまりstーogp.php
の該当する2ヶ所を書き換えるだけでオッケー。
Facebookでは保存したキャッシュが参照されるため、このカスタマイズを実施したあとはデバッガーでスクレイピングし直すことをおすすめします。