NOプラグイン!LINE風吹き出しをサイトに表示するためのショートコードを自作しよう
ホームページやブログサイト上でよく見るLINE風会話形式の表示「吹き出し」を実装し、ショートコードで使えるようにする方法を作成したので、シェアします!
Speech Bubbleというプラグインでもカンタンに「吹き出し」は使えたので使っていた方も多いと思いますが、2018年に開発が終わってしまったんですよね。
他にも複数のプラグインはあるものの、色々な機能やデザイン(CSS)を多く読み込むため、サイトの表示速度が落ちるので実質使えないと思っています。
そんな経緯もありましたが、やっぱり使いたい時は来るもので、今回クライアントさんにもカンタンに使ってもらえるように「吹き出しショートコード」を作成することにしました!
まず、ショートコードの定義をします。
functions.phpに次のコードをコピペします。
※function.phpを編集する時は、必ずアップロードの前に必ずバックアップをしてください!
functions.phpはご使用のテーマフォルダ内にもあります。
テーマを触れない人はCode Snippetsというプラグインを入れて編集しましょう。
//LINE風吹き出しショートコード
function speech_init( $atts, $content = null ) {
extract( shortcode_atts( array(
'color' => '#EFEFEF',
'icon' => get_stylesheet_directory_uri() .'/images/'. 'speech-default.png',
'name' => ''
), $atts ) );
return '<div class="speech"><div class="icon"><img src="' . $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', 'speech_init');
WordPressの本文に、次のようにショートコードを入力します。
[speech color="red" name="キャラ名" icon="icon.jpg"]セリフを入れる[/speech]
属性は、color
、name
、icon
の3種類。
color
は、吹き出しの背景色をCSSカラーで指定できるようにしました。
例)青にする場合は”blue”または16進数で”#0000FF”と指定します。
カラーコードを探すおすすめサイトは色の名前とカラーコードが一目でわかるWEB色見本さんです。
デフォルトはLINE同様に吹き出しの色は、[ #efefef ] にしています。
そのままがいい場合は、color指定を無くしてください。
name
は、喋っている人のアイコンの「名前」を入力します。指定しない場合、名前は表示されないようになっています。
icon
は、アイコンに指定したいの画像URLを入力します。
指定しない場合、デフォルト画像が表示されます。
テーマフォルダの下記の場所にデフォルト画像を置いておくと、指定なしで表示されます。
テーマフォルダ/images/speech-default.png
※アイコンサイズは、幅・高さともに200~300px程度の正方形の画像がおすすめです。
デフォルト画像以外に複数のキャラクターを使いたい場合は、あらかじめ「メディア」にアップロードしておいて、その画像のURLをicon
に入力して使います。
[speech color="red" name="キャラ名" icon="ここに画像のURLを入れる"]セリフを入れる[/speech]
アップした画像のURLは「メディア>ライブラリ」で確認できます。
[ ファイルのURL ] の箇所に記載してあるパス(URL)をコピーして、上記の [ ここに画像のURLを入れる ] のところに貼り付けて使用してください。
実際に、サイト上に表示される吹き出し
出力されるHTML
吹き出しショートコードを管理画面から挿入すると、サイト上のHTMLはこのように出力されます。
<div class="speechballoon">
<div class="icon">
<img src="画像URL" alt="名前">
<span>名前</span>
</div>
<div style="border-color:#eeeeee;background-color: #eeeeee;" class="ball">
<p>ここにセリフを入れます</p>
</div>
</div>
見た目を整えるためのSCSS
SCSS
.speechballoon {
margin: 2em 0;
&::after {
display: table;
clear: both;
content: '';
}
.ball {
display: inline-block;
position: relative;
margin-left: 2rem;
max-width: calc(100% - 7rem);
background-color: #eee;
border-color: #eee;
border-radius: 10px;
padding: 7px 15px;
@media screen and (min-width: 768px) {
margin-left: 20px;
max-width: calc(100% - 100px);
padding: 15px;
}
p{
&:last-child{
margin-bottom: 0;
}
}
}
.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;
}
.icon {
float: left;
width: 5rem;
@media screen and (min-width: 768px) {
width: 80px;
}
}
.icon > img {
max-width: 100%;
border-radius: 50%;
margin-bottom: 0;
}
.icon > span {
display: block;
margin-top: 0.5rem;
text-align: center;
font-size: 0.9rem;
@media screen and (min-width: 768px) {
font-size: 12px;
}
}
}
CSSの知識があれば、ぜひオリジナルデザインも作成してみてくださいね!
アレンジやカスタマイズをご希望の方は、お気軽にご連絡ください。
AddQuicktagなどのプラグインでショートコードを登録してけば簡単に利用できますし、使用頻度も増えそうですね。