お問い合わせはコチラから

facebookウィジェットのiframeをレスポンシブにする

Profile Avatar Facebook Webinar  - jmexclusives / Pixabay サイト運営

facebookウィジェットをサイトに埋め込んでいる人は結構多いのではないでしょうか?

facebookウィジェットを埋め込む際に困るのが微妙にレスポンシブ対応してくれていないことです。PCとスマホで横幅が変わる場合は、大きすぎたり小さすぎたり、結構微妙です。

公式ページには画面サイズの違いに追従する対策が載っているのですが、残念なことにその説明はiframeじゃないウィジットを使ったときの説明しかありません。

この記事では、facebookウィジェットをiframeで埋め込んだ時にレスポンシブ対応させる方法についてまとめています。

facebookウィジェットを画面サイズに追従させるには?

iframeのウィジットはwidth指定で表示幅が決まります。

<iframe id="fbiframe" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2F{ページ名}%2F&tabs=timeline&width=400&height=500&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true&appId" width="400" height="500" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>

つまり、レスポンシブ対応させるには、画面サイズに合わせてwidthを書き換える必要があり、なおかつ書き換えた後にリロードしないといけません。

つまり、何らかのjavascriptが必要になります。

facebookウィジェットのiframeをレスポンシブにするjQuery

検索すると、iframeバージョンでレスポンシブ対応するスクリプトを公開されている人がいたのでご紹介します。

正しい検索キーワードがわかれば、正しい検索結果が得られるという時代の到来はとてもありがたい、捗ります。

<iframe id="fbiframe" src="https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2F{ページ名}%2F&tabs=timeline&width=400&height=500&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true&appId" width="400" height="500" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
<script>
jQuery(function($){
var first_width = $(window).width();
 
var timer = false;
$(window).resize(function() {
    if (timer !== false) {
        clearTimeout(timer);
    }
    timer = setTimeout(function() {
        //resize完了時の動作
        var width = $(window).width();
        if(width!=first_width){
 
            //console.log('resized');
            fbiframe_reload();
            first_width=width;
        }
    }, 200);
});
 
function fbiframe_reload(){//facebookウィジェットの再描画
 
        var width = $("#side").width();//親要素のID,class要変更
 
        var src = "https://www.facebook.com/plugins/page.php?href=https%3A%2F%2Fwww.facebook.com%2F{ページ名}%2F&tabs=timeline&width="+width+"&height=500&small_header=true&adapt_container_width=true&hide_cover=false&show_facepile=false&appId"
 
        $("#fbiframe").attr("src","");       
        $("#fbiframe").attr("src",src); 
 
        $("#fbiframe").attr("width",width); 
};
 
fbiframe_reload();
});
</script>

参考http://proclass.jp/blog/?p=2998

Javascript SDKの方がレスポンシブ対応は簡単だし、将来性もある

iframeタグを使う方法は古い方法です。

iframeにこだわる必要が無ければ、もう一つの公式の方法を使うと、レスポンシブは簡単に実現できます。

もう一つの方法は、javascript sdkを使う方法です。

ちょっとわかりくい感じがしますがiframeでもレスポンシブ対応する場合は、javascript使うので、どうせ使うなら、javascript SDKの方が将来性は高いです。

bodyタグ直後にタグを追加

最近のまともなテーマを使っている場合は、header.phpをいじる必要はありません。

wp_body_openアクションフックで対応できます。

add_action( 'wp_body_open', function() {
	?>
<div id="fb-root"></div>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v6.0&appId=xxxxxxxxxxxxx"></script>	<?php
});

表示したい箇所に以下のコードを追加

従来、iframeを置いていた場所に、以下のコードを置きます。

<div class="fb-page" data-href="https://www.facebook.com/facebook" data-tabs="timeline" data-width="" data-height="" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"><blockquote cite="https://www.facebook.com/facebook" class="fb-xfbml-parse-ignore"><a href="https://www.facebook.com/facebook">Facebook</a></blockquote></div>

注意点

親要素のサイズに自動的に調整してくれるので、ウィジェットのサイズはwidth:500とかにしておけば、大丈夫です。小さめにしているとスマホで幅が足りなくなります。

動作確認は、実際にブラウザの幅を小さくしないと上手く反応しなかったです。検証ツールで画面サイズを変えた後にリロードしてもレスポンシブ対応しませんでした。

まとめ

Facebookのウィジットは個人的には意味あるの?と常々思っておりますが、埋め込みたい人が後を絶ちません。サイドバーにFacabookウィジットを配置すると、PCとスマホで幅が変わりますのでその影響でサイズが変になってしまう場合、今回のスクリプトは役に立つのではないかと思います。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました