
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がページ読み込み速度を遅くするので自作してみた」という記事でした。
気に入ってもらえたらシェアしてくれると嬉しいです。