ホーム › フォーラム一覧 › Celtispack 及びアドオンに関するフォーラム › ogp-tagsでog:imageが設定されない
-
投稿者投稿
-
2017年2月24日 5:26 PM #5177
Anonymous
メンバーはじめまして。素敵なプラグインをありがとうございます。
代替サムネイル+JetPackの設定で、私の環境ではog:imageが表示されずに悩んでいました。
原因と解決法がわかったので、こちらでシェアさせていただきます。
原因は ogp-tags.php:124 での
$thumbnail = get_the_post_thumbnail($post->ID, 'large', array() );
で得た結果のsrcの値が
“/wp-content/uploads/celtispack/thumbnail/xxx-full.jpg”
のようにスラッシュで始まっており、126行目の正規表現にはそれが考慮されていないことでした。126行目-128行目を以下のように変更したところ解決しました。
preg_match('#<img.+?src=[\'\"](https?://.+?|/.+?)(\.png|\.gif|\.jpe|\.jpeg|\.jpg)#', $thumbnail, $match); if(!empty($match[2])){ preg_match('#^/.+#', $match[2], $match2); if(!empty($match2[1])){ $image = esc_url($match[1].$match[2]); }else{ //行頭が/のみで始まる場合 $image = esc_url(home_url().$match[1].$match[2]); } }Web開発の経験がないので、とんちんかんなことをしていたら申し訳ないです。
もし次回のアップデートがありましたら、この問題について何らかの修正を加えていただけると嬉しいです。よろしくお願いいたします。
2017年2月25日 11:31 AM #5178enomoto
キーマスター情報ありがとうございます
通常では src に http://サイト名/wp-content/uploads/celtispack/thumbnail/xxx-full.jpg という形でセットされてくるはずなのですが、何らかのプラグインやテーマの機能でサイト名を除いた URL が保存されているのだと思われます
おそらくどこかでURLにサイト名をつけるという処理も行われていると思うのですが、そこから漏れてしまっているのかなと思われます
対策としては、dmorita さんのコードでも問題ないと思われますが、これだと get_the_post_thumbnail 関数を呼び出しているところで同様の対応が必要となる場合があります
従いまして、もう少し元の処理で対策したほうが都合がよさそうです
具体的には、Wordpress の post-thumbnail-template.php にある apply_filters( ‘post_thumbnail_html’, $html, $post->ID, $post_thumbnail_id, $size, $attr ) というフィルターにフックして、サイト名がなければサイト名を追加するような感じがいいのかなと思います
また、このようにすれば、サイトを SSL 化するような場合に http から https への書き換えもできるのでより汎用的な対応が出来ると思います
ちなみに、実際に動作確認したわけではありません (^_^;)
いづれにせよ、次回のバージョンアップ(時期は未定です)で対策したいと思います
2017年2月25日 11:38 AM #5179Anonymous
メンバーenomotoさん、アドバイスありがとうございます。
仰る通り、当方のサイトではSSL化しているため、その辺りのプラグインがサイト名を削っている可能性があります。根本解決できるよう、もう少し調べてみたいと思います。
次回のバージョンアップで対策していただける旨、ありがとうございます!
-
投稿者投稿
- このトピックに返信するにはログインが必要です。