ogp-tagsでog:imageが設定されない

  • このトピックには2件の返信、2人の参加者があり、最後にAnonymousにより7年、 1ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #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開発の経験がないので、とんちんかんなことをしていたら申し訳ないです。
    もし次回のアップデートがありましたら、この問題について何らかの修正を加えていただけると嬉しいです。

    よろしくお願いいたします。

    #5178
    enomoto
    キーマスター

    情報ありがとうございます

    通常では 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 への書き換えもできるのでより汎用的な対応が出来ると思います

    ちなみに、実際に動作確認したわけではありません (^_^;)

    いづれにせよ、次回のバージョンアップ(時期は未定です)で対策したいと思います

     

    #5179
    Anonymous
    メンバー

    enomotoさん、アドバイスありがとうございます。

    仰る通り、当方のサイトではSSL化しているため、その辺りのプラグインがサイト名を削っている可能性があります。根本解決できるよう、もう少し調べてみたいと思います。

    次回のバージョンアップで対策していただける旨、ありがとうございます!

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。
go-to-top