最近、SANGOを購入して気に入って様々なブログで愛用しているみっぴーです!(^^)
今回は、吹き出しのカスタマイズに挑戦しました!
吹き出しの色変更とショートコードで複数のキャラを呼び出せるようにするカスタマイズです。
メインで使う画像と名前は、SANGOのカスタマイザーで登録すれば下記のショートコードで呼び出せるようになっていますよね。
[say]ここに文章[/say]
しかし、二つ目以降のキャラを使う時は毎回記事で下記のように入力しないといけません。
[say name="名前" img="画像のURL"]ここに文章[/say]
でも、ある程度使うキャラって決まってくるし・・・
ぱん猫
みっぴー
ぱん猫
ねこ
ってことで今回は、カスタマイザーに画像と名前を登録できるようにして、ショートコードで呼び出せるようにしてみました!
みっぴー
ねこ
みっぴー
心の声みたいな感じだね!
みっぴー(@bennriya_mi)です~。
アイキャッチを変えただけで、広告表示回数が5倍になりました。(こっそり独り言)
今回、そのアイキャッチを誰でも使えるようにテンプレにしました。
詳しくは、下記にて
目次
今回の吹き出しカスタマイズの内容
みっぴー
今回の吹き出しカスタマイズの内容をまとめると下記の通りです。
- カスタマイザーで画像と名前を登録できるキャラを増やす
- カスタマイザーで登録したキャラをショートコードで呼び出す
- それぞれ別の吹き出しのデザインや色を指定可能
- デザインを心の声風にする
修正するファイル
今回のカスタマイズで編集するファイルは下記の通りです。
- functions.php
- style.css
functions.php
のファイルを編集する場合は、必ずバックアップを取った上で編集してください。functions.php
の記入を誤るとブログの画面が真っ白になって管理画面にさえも入れなくなります。編集は慎重に行ってください。万が一、真っ白になった場合は「[WordPress]functions.phpを編集後に画面が真っ白になった時の対処法と注意点」を参考にしてください。
[WordPress]functions.phpを編集後に画面が真っ白になった時の対処法と注意点
吹き出しの色変更とショートコードの追加方法
みっぴー
今回の吹き出しの色変更とショートコードで呼び出すキャラの追加カスタマイズの手順は下記の通りです。
- STEP.1カスタマイザーの項目追加「
functions.php
」にこれから紹介するコードを追記して吹き出しに関する設定をカスタマイザーに新たに追加します。 - STEP.2ショートコードを定義「
functions.php
」にこれから紹介するコードを追記して新しいショートコードを定義します。 - STEP.3CSSを定義「
style.css
」に新しいCSSを追加して吹き出しのスタイルを変更します。
1.カスタマイザーの項目追加
みっぴー
まずは、カスタマイザーに吹き出しで使う画像と名前を登録できる項目を増やしていきます。
下記のコードを追加するとカスタマイザーの画面の一番下に「吹き出しショートコード追加設定」という項目が追加されていると思います。
functions.php
に下記を追加すればオッケーです。
functions.php
の編集前は、バックアップを取ってくださいね。
下記は、吹き出しで使えるキャラを2つ追加するコードになります。なので、もしそれ以上増やしたい場合は、コードの下の「2つ以上キャラを追加したい場合」を確認してください。
/*********************
カスタマイザーに吹き出しキャラ追加
*********************/
function my_theme_customize_register( $wp_customize ) {
$wp_customize->add_section( 'sayori', array(
'title' => '吹き出しショートコード追加設定', // 項目名
'priority' => 200, // 優先順位
));
//オリジナルの吹き出し画像1
$wp_customize->add_setting('sayori1_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayori1_image_upload', array(
'settings' => 'sayori1_image_upload',
'label' => '「sayori1」で呼び出すキャラ設定',
'description' => '<small>「sayori1」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前1
$wp_customize->add_setting('sayori1_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayori1_name', array(
'settings' => 'sayori1_name',
'description' => '「sayori1」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
//オリジナルの吹き出し画像2
$wp_customize->add_setting('sayori2_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayori2_image_upload', array(
'settings' => 'sayori2_image_upload',
'label' => '「sayori2」で呼び出すキャラ設定',
'description' => '<small>「sayori2」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前2
$wp_customize->add_setting('sayori2_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayori2_name', array(
'settings' => 'sayori2_name',
'description' => '「sayori2」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
//2つ以上追加する時はこの下に追加していく
(繰り返し追加部分)
//2つ以上追加する時はこの上に追加していく
}
add_action( 'customize_register', 'my_theme_customize_register' );
レンタルサーバーのFTPにログインしてください。
編集するブログのファイルが入ってるところまで進んでください。
みっぴー
それから下記の通り進んでいくとfunctions.php
があります。
ブログ名/wp-content/themes/お使いのテーマ/functions.php
子テーマでカスタマイズをしている人は、子テーマの中のfunctions.php
に追記してください。
2つ以上キャラを追加したい場合
上記は、2つキャラを追加するコードなのでそれ以上追加したい場合は下記を参考にしてください。
ぱん猫
↓カスタマイザーを2つ以上追加↓
もし2つ以上のキャラを追加したい場合は下記の「sayori1」の赤文字の部分の数字を3とか4に変えて追加していけばオッケーです。
数字を全部変えないで保存するとエラーになって真っ白になると思うので間違えないようによーく確認してくださいね。
//オリジナルの吹き出し画像1
$wp_customize->add_setting('sayori1_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayori1_image_upload', array(
'settings' => 'sayori1_image_upload',
'label' => '「sayori1」で呼び出すキャラ設定',
'description' => '<small>「sayori1」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前1
$wp_customize->add_setting('sayori1_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayori1_name', array(
'settings' => 'sayori1_name',
'description' => '「sayori1」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
上記の追加部分の数字をどんどん増やしていけば、何個でも追加出来ます!
上記の追加部分を1つ追加した例を見たい場合は、下記を参考にしてください。
/*********************
カスタマイザーに吹き出しキャラ追加
*********************/
function my_theme_customize_register( $wp_customize ) {
$wp_customize->add_section( 'sayori', array(
'title' => '吹き出しショートコード追加設定', // 項目名
'priority' => 200, // 優先順位
));
//オリジナルの吹き出し画像1
$wp_customize->add_setting('sayori1_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayori1_image_upload', array(
'settings' => 'sayori1_image_upload',
'label' => '「sayori1」で呼び出すキャラ設定',
'description' => '<small>「sayori1」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前1
$wp_customize->add_setting('sayori1_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayori1_name', array(
'settings' => 'sayori1_name',
'description' => '「sayori1」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
//オリジナルの吹き出し画像2
$wp_customize->add_setting('sayori2_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayori2_image_upload', array(
'settings' => 'sayori2_image_upload',
'label' => '「sayori2」で呼び出すキャラ設定',
'description' => '<small>「sayori2」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前2
$wp_customize->add_setting('sayori2_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayori2_name', array(
'settings' => 'sayori2_name',
'description' => '「sayori2」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
//2つ以上追加する時はこの下に追加していく
//オリジナルの吹き出し画像3
$wp_customize->add_setting('sayori3_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayori3_image_upload', array(
'settings' => 'sayori3_image_upload',
'label' => '「sayori3」で呼び出すキャラ設定',
'description' => '<small>「sayori3」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前3
$wp_customize->add_setting('sayori3_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayori3_name', array(
'settings' => 'sayori3_name',
'description' => '「sayori3」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
//2つ以上追加する時はこの上に追加していく
}
add_action( 'customize_register', 'my_theme_customize_register' );
2.ショートコードを定義
みっぴー
次にfunctions.php
にショートコードを定義するコードを追加します。
さっき追加したコードの下に下記をそのままコピーして貼り付けて保存してください。
/*********************
会話ふきだしショートコード1
*********************/
add_shortcode('sayori1', 'sayori1_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコード1
*********************/
function sayori1_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayori1_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayori1_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scori1">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scori1">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
/*********************
会話ふきだしショートコード2
*********************/
add_shortcode('sayori2', 'sayori2_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコード2
*********************/
function sayori2_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayori2_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayori2_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scori2">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scori2">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
//2つ以上追加する時はこの下に追加していく
(繰り返し追加部分)
//2つ以上追加する時はこの上に追加していく
2つ以上キャラを追加したい場合
上記は、2つキャラを追加するコードなのでそれ以上追加したい場合は下記を参考にしてください。
ぱん猫
ねこ
↓ショートコードを2つ以上追加↓
もし2つ以上のキャラを追加したい場合は下記の「sayori1」と「scori1」の赤文字の部分の数字を3とか4に変えて追加していけばオッケーです。
※「scori1」の部分がCSSのclassなので、これから指定するclass名は同一のものにしてくださいね。
/*********************
会話ふきだしショートコード1
*********************/
add_shortcode('sayori1', 'sayori1_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコード1
*********************/
function sayori1_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayori1_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayori1_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scori1">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scori1">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
上記の追加部分の数字をどんどん増やしていけば、何個でも追加出来ます!
上記の追加部分を1つ追加した例を見たい場合は、下記を参考にしてください。
/*********************
会話ふきだしショートコード1
*********************/
add_shortcode('sayori1', 'sayori1_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコード1
*********************/
function sayori1_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayori1_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayori1_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scori1">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scori1">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
/*********************
会話ふきだしショートコード2
*********************/
add_shortcode('sayori2', 'sayori2_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコード2
*********************/
function sayori2_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayori2_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayori2_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scori2">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scori2">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
//2つ以上追加する時はこの下に追加していく
/*********************
会話ふきだしショートコード3
*********************/
add_shortcode('sayori3', 'sayori3_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコード3
*********************/
function sayori3_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayori3_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayori3_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scori3">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scori3">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
//2つ以上追加する時はこの上に追加していく
3.CSSを定義
みっぴー
最後にこれまで設定してきたショートコードで呼び出す吹き出しのデザインをstyle.css
に追加していきます。
/*--------------------------------------
ふきだしの色を変える(オリジナル左の1)
--------------------------------------*/
.scori1 ul,
.scori1 ol {
margin: 5px 0;
padding: 0 0 0 1.4em;
border: none;
box-shadow: none;
background: transparent;
}
.scori1 {
display: inline-block;
text-align: left;
padding: 13px;
border: solid 0.5px #aaa;/*外枠の色*/
border-radius: 12px;
background: #F4B798;/*吹き出しの色*/
word-break: break-all;
}
.scori1:before {
display: inline-block;
position: absolute;
top: 18px;
left: -21px;
border: 11px solid transparent;
border-right: 11px solid #aaa;/*外枠の色*/
content: "";
}
.scori1:after {
display: inline-block;
position: absolute;
top: 18px;
left: -20.5px;
border: 11px solid transparent;
border-right: 11px solid #F4B798;/*吹き出しの色*/
content: "";
}
.scori1 p {
margin: 0;
padding: 0;
}
@media only screen and (min-width: 481px) {
.scori1:before,
.scori1:after {
top: 30px;
}
}
/*--------------------------------------
ふきだしの色を変える(オリジナル右の1)
--------------------------------------*/
.right .scori1:before,
.right .scori1:after {
right: -21px;
left: auto;
border: 11px solid transparent;
border-left: 11px solid #aaa;/*外枠の色*/
}
.right .scori1:after {
right: -20px;
border-left-color: #F4B798;/*吹き出しの色*/
}
/*--------------------------------------
ふきだしの色を変える(オリジナル左の2)
--------------------------------------*/
.scori2 ul,
.scori2 ol {
margin: 5px 0;
padding: 0 0 0 1.4em;
border: none;
box-shadow: none;
background: transparent;
}
.scori2 {
display: inline-block;
text-align: left;
padding: 13px;
border: solid 0.5px #aaa;/*外枠の色*/
border-radius: 12px;
background: #FFE2B3;/*吹き出しの色*/
word-break: break-all;
}
.scori2:before {
display: inline-block;
position: absolute;
top: 18px;
left: -21px;
border: 11px solid transparent;
border-right: 11px solid #aaa;/*外枠の色*/
content: "";
}
.scori2:after {
display: inline-block;
position: absolute;
top: 18px;
left: -20.5px;
border: 11px solid transparent;
border-right: 11px solid #FFE2B3;/*吹き出しの色*/
content: "";
}
.scori2 p {
margin: 0;
padding: 0;
}
@media only screen and (min-width: 481px) {
.scori2:before,
.scori2:after {
top: 30px;
}
}
/*--------------------------------------
ふきだしの色を変える(オリジナル右の2)
--------------------------------------*/
.right .scori2:before,
.right .scori2:after {
right: -21px;
left: auto;
border: 11px solid transparent;
border-left: 11px solid #aaa;/*外枠の色*/
}
.right .scori2:after {
right: -20px;
border-left-color: #FFE2B3;/*吹き出しの色*/
}
色を変えたい時は、/*吹き出しの色*/と説明が書いてあるところを変更すれば色変更が可能です。
吹き出しの外枠の色を変えたい場合は、/*外枠の色*/の部分を変更してください。
2つ以上キャラを追加したい場合
上記は、2つキャラを追加するCSSなのでそれ以上追加したい場合は下記を参考にしてください。
ぱん猫
ねこ
↓CSSを2つ以上追加↓
もし2つ以上のキャラを追加したい場合は下記の「scori1」の赤文字の部分の数字を3とか4に変えて追加していけばオッケーです。
2のショートコード定義の時に追加したclass名と同一になるようにしてくださいね。
/*--------------------------------------
ふきだしの色を変える(オリジナル左の1)
--------------------------------------*/
.scori1 ul,
.scori1 ol {
margin: 5px 0;
padding: 0 0 0 1.4em;
border: none;
box-shadow: none;
background: transparent;
}
.scori1 {
display: inline-block;
text-align: left;
padding: 13px;
border: solid 0.5px #aaa;/*外枠の色*/
border-radius: 12px;
background: #F4B798;/*吹き出しの色*/
word-break: break-all;
}
.scori1:before {
display: inline-block;
position: absolute;
top: 18px;
left: -21px;
border: 11px solid transparent;
border-right: 11px solid #aaa;/*外枠の色*/
content: "";
}
.scori1:after {
display: inline-block;
position: absolute;
top: 18px;
left: -20.5px;
border: 11px solid transparent;
border-right: 11px solid #F4B798;/*吹き出しの色*/
content: "";
}
.scori1 p {
margin: 0;
padding: 0;
}
@media only screen and (min-width: 481px) {
.scori1:before,
.scori1:after {
top: 30px;
}
}
/*--------------------------------------
ふきだしの色を変える(オリジナル右の1)
--------------------------------------*/
.right .scori1:before,
.right .scori1:after {
right: -21px;
left: auto;
border: 11px solid transparent;
border-left: 11px solid #aaa;/*外枠の色*/
}
.right .scori1:after {
right: -20px;
border-left-color: #F4B798;/*吹き出しの色*/
}
吹き出しのデザインを心の声風に変更したい場合
吹き出しのデザイン変更をしていきます!
みっぴー
みっぴー
手順は、上記で説明したものとほぼ同じです!
- STEP.1カスタマイザーの項目追加「
functions.php
」にこれから紹介するコードを追記して吹き出しに関する設定をカスタマイザーに新たに追加します。 - STEP.2ショートコードを定義「
functions.php
」にこれから紹介するコードを追記して新しいショートコードを定義します。 - STEP.3CSSを定義「
style.css
」に新しいCSSを追加して吹き出しのスタイルを変更します。
1.カスタマイザーの項目追加
functions.php
に下記のコードを追加してください。
※すでに上記で説明した手順を追加している人は、下記の間の部分だけ2キャラ以上追加する人の手順にある(繰り返し追加部分)に追加してください。
//すでに上記を追加済の場合はここから下を追加
この間のコードを(繰り返し追加部分)に追加してください。
//すでに追加済の場合はここから上を追加
/*********************
カスタマイザーに吹き出しキャラ追加
*********************/
function my_theme_customize_register( $wp_customize ) {
$wp_customize->add_section( 'sayori', array(
'title' => '吹き出しショートコード追加設定', // 項目名
'priority' => 200, // 優先順位
));
//すでに上記を追加済の場合はここから下を追加
//オリジナルの吹き出し画像k1
$wp_customize->add_setting('sayorik1_image_upload', array(
'type' => 'option',
array(
'sanitize_callback' => 'theme_slug_sanitize_file',
),
));
if (class_exists('WP_Customize_Image_Control')):
$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'sayorik1_image_upload', array(
'settings' => 'sayorik1_image_upload',
'label' => '「sayorik1」で呼び出すキャラ設定',
'description' => '<small>「sayorik1」で呼び出す画像を登録してください。</small>',
'section' => 'sayori',
)));
endif;
//オリジナルの吹き出しの名前k1
$wp_customize->add_setting('sayorik1_name', array(
'type' => 'option',
'transport' => 'postMessage',
array('sanitize_callback' => 'wp_filter_nohtml_kses'),
));
$wp_customize->add_control('sayorik1_name', array(
'settings' => 'sayorik1_name',
'description' => '「sayorik1」の名前',
'input_attrs' => array('placeholder' => '表示しない場合は空欄に'),
'section' => 'sayori',
'type' => 'text',
));
//すでに追加済の場合はここから上を追加
}
add_action( 'customize_register', 'my_theme_customize_register' );
2.ショートコードを定義
次にショートコードを定義していきます。
/*********************
会話ふきだしショートコードk1
*********************/
add_shortcode('sayorik1', 'sayorik1_what'); //会話形式の吹き出し
/*********************
会話ふきだしショートコードk1
*********************/
function sayorik1_what($atts, $content = null)
{
$img = (isset($atts['img'])) ? esc_url($atts['img']) : esc_url(get_option('sayorik1_image_upload'));
$name = (isset($atts['name'])) ? esc_attr($atts['name']) : esc_attr(get_option('sayorik1_name'));
if (isset($atts['from'])) {
$from = ($atts['from'] == "right") ? "right" : "left"; //入力が無ければleftに
} else {
$from = "left";
}
if ($from == "right") { //右に吹き出し
$output = <<<EOF
<div class="say {$from}">
<div class="chatting"><div class="scorik1">{$content}</div></div>
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
</div>
EOF;
} else { //左に吹き出し
$output = <<<EOF
<div class="say {$from}">
<p class="faceicon"><img src="{$img}"><span>{$name}</span></p>
<div class="chatting"><div class="scorik1">{$content}</div></div>
</div>
EOF;
} //endif
return $output;
}
3.CSSを定義
最後にstyle.css
にCSSを追加してください。
下記のコードをコピペして貼り付けてください。
色変更などお好きなものに変えてくださいね。
/*--------------------------------------
ふきだしのデザインを変える(心の声風)
--------------------------------------*/
.scorik1 {
display: inline-block;
position: relative;
text-align: left;
padding: 13px;
border: solid 0.5px #aaa;/*外枠の色*/
border-radius: 12px;
background: #FCECEA;/*吹き出しの色*/
word-break: break-all;
margin: 0 0 2em 26px;
}
.scorik1:before{
display: inline-block;
position: absolute;
content: "";
left: -38px;
width: 10px;
height: 9px;
bottom: 15px;
background: #FCECEA;
border: solid 0.4px #aaa;
border-radius: 50%;
}
.scorik1:after{
display: inline-block;
position: absolute;
content: "";
left: -23px;
width: 16px;
height: 14px;
bottom: 20px;
background: #FCECEA;
border: solid 0.4px #aaa;
border-radius: 50%;
}
.scorik1 p {
margin: 0;
padding: 0;
}
/*--------------------------------------
ふきだしの色を変える(心の声風の右)
--------------------------------------*/
.right .scorik1 {
margin: 0 26px 2em 0;
}
.right .scorik1:before {
right: -38px;
left: auto;
}
.right .scorik1:after {
right: -20px;
left: auto;
}
ショートコードの使い方
みっぴー
デフォルトのショートコード
デフォルトのショートコードは、下記でしたね。
[say]ここに文章[/say]
今回追加したショートコード
今回追加したショートコードを使うには下記のように入力してくださいね。
もしclass名などを自分で変更している場合は、それに合わせて変更してくださいね。
右側に画像を出す場合もSANGOの設定どおりに from="right"
を追加すればオッケーです。
みっぴー
sayori1で追加したキャラの左側
[sayori1]ここに文章[/sayori1]
ぱん猫
sayori1で追加したキャラの右側
[sayori1 from="right"]ここに文章[/sayori1]
ねこ
今回追加したショートコード(心の声風)
みっぴー
吹き出しのデザイン変更(心の声風)を呼び出す時のショートコードは下記です。
心の声風の左側
[sayorik1]ここに文章[/sayorik1]
みっぴー
心の声風の右側
[sayorik1 from="right"]ここに文章[/sayorik1]
みっぴー
これで、メインで使うキャラをショートコードで何個でも呼び出せます!(^^)
おまけ:デフォルトの色を変えたい場合は
とこれまで色々と説明してきましたが、とにかくデフォルトの色を変えたいだけ!という方は下記のCSSをstyle.css
に追記すればオッケーです。
/*吹き出しの色*/と/*外枠の色*/の部分を好きな色に変更して使って下さいね!
/*--------------------------------------
ふきだしの色を変える(デフォルトの左)
--------------------------------------*/
.sc {
border: solid 0.5px #aaa;/*外枠の色*/
background: #FCECEA;/*吹き出しの色*/
}
.sc:before {
left: -20.5px;
border: 11px solid transparent;
border-right: 11px solid #aaa;/*外枠の色*/
content: "";
}
.sc:after {
display: inline-block;
position: absolute;
border: 11px solid transparent;
border-right: 11px solid #FCECEA;/*吹き出しの色*/
content: "";
}
/*--------------------------------------
ふきだしの色を変える(デフォルトの右)
--------------------------------------*/
.right .sc:before,
.right .sc:after {
right: -21px;
left: auto;
border: 11px solid transparent;
border-left: 11px solid #aaa;/*外枠の色*/
}
.right .sc:after {
right: -20px;
border-left-color: #FCECEA;/*吹き出しの色*/
}
みっぴー
ぱん猫
はじめまして!
WordPressを利用していて、こちらの「吹き出しのデザイン・色の変更とショートコード追加」の記事を参考にさせていただき、無事編集が完了できました!!
注意文のように、実際に画面が真っ白になることも多々あり苦労しましたが、リカバリーも成功したのは良い思い出です…笑
さて、今回こちらでお聞きしたいのは、このfunction.phpに『画像を登録する方法』です。
‘description’ => ‘「sayori1」で呼び出す画像を登録してください。’,
↑上記のように、呼び出す画像をここに登録すれば良いのかは理解できたのですが、登録するには画像のURLを添付するのか、それとも別のコードを編集するのかよくわからなかったため、ご連絡させていただきました。
※ちなみに、画像のURLでは解決せず…
ぜひ、またブログにて方法を書いていただいたり、ご教示いただけますと幸いですm(_ _)m
みっぴーさんのブログ、とてもわかりやすくてWordPress初心者としてはとても心強いです。
どうぞよろしくお願いいたします!
けん×2さん、コメントありがとうございます!(*´ω`*)
お返事が遅くなってしまって申し訳ありません!
とてもわかりやすくてと言って頂き、とても嬉しいです(^^)ありがとうございます♪
function.phpに『画像を登録する方法』とのご質問でしたが、functions.phpに上記のコードをそのままコピペして貼り付けて頂くと、WordPressの管理画面の中にある「外観」⇒「カスタマイズ」の中に画像を登録する項目が出てくるので、そちらで画像を登録して頂く感じになります。
外観⇒カスタマイズを開くと一番下に「吹き出しショートコード追加設定」という設定項目が増えていると思うのですが、いかがでしょうか?
その項目の中に画像の選択ボタンを押して、画像を選択して、上にある青い「公開」ボタンを押してください。
それで画像登録が出来ると思います!
もし、まだ出来なければ教えてください(*^-^*)