投稿にのせられる画像が外部配信先の影響等で大きいものが指定できない。けどfacebookでシェアされた時には大きい画像で表示させたい。

との要件のときに適当に書いたやつの備忘録。

<?php if ( !is_home() || !is_front_page()){ //TOPページでは出さない
<?php
   $page_url_get = get_permalink(); //表示している記事のURLを取得
   $search_url = 'http://hogehoge.jp/'; //URLから除外したい文字列を指定
   $page_replace_url = str_replace($search_url,'',$page_url_get); //指定した文字列を除外
   $page_ok_url = substr($page_replace_url, 0, 8); //除外したURLから投稿の年月だけ取得
   $page_post_num = substr($page_replace_url, 11, 5); //除外したURLから投稿のIDを取得※投稿の桁数が変わる場合は注意
}?>
<meta property="og:image" content="http://hogehoge.jp/wp-content/uploads/<? echo "$page_ok_url","$page_post_num";?>.jpg">

やったこと

投稿記事のURLから年月とID部分だけを抜き出して、別途ライブラリにアップした画像と紐づけてog imageに指定しています。

ライブラリにアップした時の形式はwp-content/uploads/yyyy/mm/ファイル名 だったので動的に変わるuploads配下を投稿のURLから取得している感じです。

投稿を公開した後に、投稿のIDで名前を付けたjpgのファイルをメディアにアップすればogp imageを指定できるようになります。

やってないこと

取り急ぎ感丸出しなので以下は考慮してないです。後日修正予定。。

  1. 公開した月と画像のアップロード月が違うと引っ張れない。
  2. ID桁数変わると引っ張れない。
  3. jpg以外のファイルをアップされると取れない。
  4. 投稿記事のパーマリンクの形式が/yyyy/mm/dd/投稿のIDなどのものにしか使えない

その他

ogp imageが取れないなら取れないで勝手に他にある画像をfacebookが自動でとってきてくれているので、大丈夫っちゃ大丈夫です。

基本大きい画像がアップできない、なんて状況が無いと思うので使うシーン無いだろうけど忘れそうなのでc⌒っ゚д゚)っφ メモメモ…