Speech bubbleがページ読み込み速度を遅くするので自作してみた

people-hukidashi
wordpressのプラグイン「Speech bubble」。
長年使ってきたのですがページ表示速度に影響するのでやめようと思いました。

でもすでに「Speech bubble」のショートコードを書いてある記事が大量にある。
仮にページ表示速度が遅くならない吹き出しプラグインがあったとしても「Speech bubble」のショートコードで書いた部分を全部修正しなければいけない。

それは大変なので「Speech bubble」のショートコードで書いてある部分はそのままにしてプラグインは使わずにfunctions.phpにショートコード設定を直書きをしようと思います。

functions.phpにスクリプトを書いていく

functions.phpに直で次のようなスクリプトを書いていきます。

function hogeFunc( $atts, $content = null ) {
extract( shortcode_atts( array(
'color' => '#eeeeee',
'icon' => '/1.jpg',
'name' => '名前'
), $atts ) );
return '<div class="fukidashi">
<div class="icon">
<img src="' . content_url(). '/plugins/speech-bubble/img/'.$icon . '" alt="' . $name. '" />
<span>' . $name. '</span>
</div>
<div style="border-color:' . $color. ';background-color: ' . $color. ';" class="ball">
<p>' . $content . '</p>
</div>
</div>';
}
add_shortcode('speech_bubble', 'hogeFunc');

関数hogeFuncを定義して最後の行で「speech_bubble」というショートコードで動くように設定しています。

これでプラグインspeech bubble用に書いたショートコードがこの直書きしたスクリプトで動くようになります。

引数のcolorは吹き出しの背景色。

icon、nameはプラグインspeech bubbleと同じ役割です。

iconの画像はプラグインspeech bubbleのものを使う

プラグインspeech bubble用に書いたショートコードをそのまま使うのでicon画像はプラグインspeech bubbleのフォルダーにアップした画像へリンクさせます。

つまりプラグインspeech bubbleは「停止」にするんですが、「削除」にはしないでそのままにしておきます。

とにかくプラグインspeech bubble用に書いたショートコードをひとつも書き換えなくてもいいようにしました。

cssを当てる

子テーマのcssファイルに以下を追加します。

.fukidashi::after {
    display: table;
    clear: both;
    content: '';
}
.fukidashi {
    margin: 2em 0;
}
.fukidashi .ball {
    display: inline-block;
    position: relative;
    padding: 15px;
    margin-left: 1rem;
    max-width: calc(100% - 6rem);
    background-color: #eee;
    border-color: #eee;
    border-radius: 10px;
}
.fukidashi .ball::after {
	right: 100%;
	top: 30px;
	border: solid transparent;
	content: " ";
	height: 0;
	width: 0;
	position: absolute;
	pointer-events: none;
	border-color: rgba(136, 183, 213, 0);
	border-right-color: inherit;
	border-width: 10px 15px;
	margin-top: -10px;
}
.fukidashi .icon {
    float: left;
    width: 5rem;
}
.fukidashi .icon > img {
    max-width: 100%;
}
.fukidashi .icon > span {
    display: block;
    margin-top: 0.5rem;
    text-align: center;
    font-size: 0.9rem;
}
.fukidashi .ball > p{margin:0}
@media screen and (min-width: 769px) {
    .fukidashi .ball {
        margin-left: 10px;
        max-width: calc(100% - 90px);
    }
    .fukidashi .icon {
        width: 80px;
    }
    .fukidashi .icon > span {
        font-size: 12px;
    }
}

一応これで出来ました。

大雑把にやったのでプラグインspeech bubble用のショートコード↓

この中の引数type、subtypeは無視します。
新たな引数colorで吹き出しの色が変えられるだけです。

ただしすでに書いたショートコードは全部そのままにするので引数colorは付け加えません。

新たにショートコードを書くときに付けるかもしれません。

↓こちらの記事を参考にさせていただきました。

https://naoyu.net/not-speech-bubble-plugin/

まとめ

プラグインを使わずに吹き出しを付けてみた結果、結構ページ読み込み速度は早くなりました。

他の施策も色々やったので「pagespeedinsight」の点数が[モバイル=89][pc=98]になりました。

やってみるもんだ。


以上「Speech bubbleがページ読み込み速度を遅くするので自作してみた」という記事でした。
気に入ってもらえたらシェアしてくれると嬉しいです。