【PHPでwpプラグインを改造】all in one seoで、og:descriptionを書かなかったときに、文章が全部出力されてしまうのを直したい
| 更新: 2024/02/16 | 973文字
今回は、ワードプレスでよくつかわれるプラグイン『all in one seo』で、文字が大量に出力されてしまうような状況になったので、なおしてみます。 設定のダッシュボードでどうにかならない部分は、PHPプログラムで改造!という感じでやってみます。さっそく、状況などをみていきましょう。
目次
■症状:個別記事のdescriptionが空のまま記事を公開すると、og:descriptionに記事全文が出力されてしまった
今回の『all in one seo』で、ちょっと困った点です。記事個別ページなのですが、ここではall in one seoが書き換えて出力するtitle/descriptionのうち、descriptionを空にしたまま公開してしまいました。 そうしたところ、og:description/twitter:description(snsなど共有するときに使う)の部分に、記事が全文出力されてしまい、ヘッダーがごちゃごちゃしてしまいました。
ダッシュボードから、ogの部分を調整してみたところ、特に変化がなかったので、改造してなおしてみることにします。
■descriptionを制御しているファイル1:aioseop_class.phpを改造
■maximum_description_lengthを調整できる部分発見
で、プラグインのファイル構成をチェックしていたところ、『all-in-one-seo-pack/aioseop_class.php』というファイルを見つけました。このファイルには・・
// Max numbers of chars in auto-generated description. var $maximum_description_length = 320;
というように、自動descriptionの最大文字数を制御しているところがあったので、ここの数字を書き換えます。320とか多すぎるけど、googleが抜粋して表示することもあるので、やらなくてもよい気がしますが、目的は改造です(笑)
■結果:間違えた(笑)こちらはmeta descriptionだった
で、結果なんですが、こちらはogのdescriptionではなかったようです。通常のmeta descriptionが、文字数を調整されて出力されました。しかし、プラグイン改造でmeta descriptionの文字数を弄れるということがわかったので、特に問題はありません。
■aioseop_opengraph.phpファイルを調整してみる
■ファイルの場所や、記述のされかた
で、他にdescriptionかつogのファイルがないかなと思って探したら、書いているファイルを発見しました。
場所は『all-in-one-seo-pack/modules/aioseop_opengraph.php』で、機能ごとにモジュールわけされているので、少しわかりやすかったです。『post_contentで記事本文抜く』という意味のようです。post_excerpt(抜粋)は、他の条件になっていました。しかしこのファイルは、ダッシュボードでの設定によって条件分岐が入り組んでるので、内容は複雑です。
■結果:全文出力は回避
上記の部分を文字数指定できる『mb_substr($post->post_content, 0, 300);』に書き換えました。
指定された文字数とちょっと数字が違うところがあるので、他のところも見てみたいと思いますが、とりあえず『空で公開しても、og:descriptionに記事全文出力しなくなった』ので、このファイルを改造すればよいとわかりました。プラグインじゃなくてもog系はheader.phpに出力タグ書いてもいけそうですけどね。
■そのほかの対策・あとがき・注意
PHPプログラムを改造して、文字の出力を調整しましたけど、実は単純な対策があります。 それは『毎回記事ごとにdescriptionをきちんと書く』です。手間はかかるかもしれませんが、書いておけばきちんと出力してくれます。
とはいえ、プラグインを改造できれば、文字数や表示のしかたなども、かゆいところに手が届くようにできるので、こだわる方は、ぜひやってみてください。
*これは注意なんですけど、wordpress4.9のプログラムエラー警告(エラーを事前に教えてくれる)をすり抜けて、画面を真っ白にしてしまうことがありました。wp4.9が『構文としては合っていると判定したけど、実際には動かない』という書き方をしたときに起こりました。なので、ダウンロードしたプラグインのファイルは保存しておいて、万が一動かなくなったときはすぐに戻せるようにしておくとよいでしょう。
【カテゴリ】- WordPressプラグイン情報
【タグ】- All_in_One_SEO(WordPress), mb_substr(PHP), PHP