
先日、ショートコードの基本の記事を書きました。
まだショートコード自体ががよくわかっていない方は是非こちらの記事から読んでみてくださいね。
今回は、基本の続きで「自己完結型」のショートコードを作成していきます。
自己完結型のショートコードとは?
ショートコードには自己完結型と囲み型の2つのタイプがあります。
自己完結型
自己完結型はショートコードを一度だけ書いて完結するものになります。閉じるショートコードは不要です。自己完結型の書き方は下記になります。
[shortcode]
囲み型
一方、囲み方は開始のショートコードと終わりのショートコードでコンテンツを囲みます。囲み方の書き方は下記になります。HTMLのdivタグなどと似ていますね。
[shortcode]コンテンツ[/shortcode]
囲み型の記事もチェック
[related id=2250]
自己完結型のショートコードの基本
では自己完結型の簡単なコードを作成していきましょう。前回、ショートコードの基本でやったものが自己完結型でしたので、こちらでも同じコードでやっていきます。functions.phpに下記のコードを追加します。
function.php
//ショートコードで「hello shortcode!」と出力
function hello_func() {
return "hello shortcode!";
}
add_shortcode('hello', 'hello_func');
ショートコードは作成できましたので次に投稿入力画面でショートコードを入力します。
ショートコード
[hello]
出力
hello shortcode!
サイトで投稿を確認して「hello shortcode!」と表示されていればOKです。
自己完結型のショートコードに属性を追加する
ここからが楽しくなっていくところです。先ほどのショートコードでは「hello shortcode!」としか出力できません。これでは不便なのでユーザーがショートコードに属性を入力して、その値を出力するようにしたいと思います。
function.php
//ショートコードでユーザーが入力した属性の値を出力
function userword_func( $atts ) {
$atts = shortcode_atts(
array(
'word' => '値が入力されていません',
), $atts, 'userword' );
return $atts['word'];
}
add_shortcode( 'userword', 'userword_func' );
ショートコードが作成できました。詳細は後ほど解説しますので投稿入力画面でショートコードを入力します。
ショートコード
[userword word=テスト]
出力
テスト
サイトで「テスト」と出力されていればOKです。また、「word=◯◯◯」の部分を変えてみて、属性の値が正しく出力されるかも確認しましょう。
コードの解説
shortcode_atts
$atts = shortcode_atts(
3行目に出てくるshortcode_attsを簡単に説明すると、ユーザーが属性に値を指定していればそれを出力して、属性の値が未入力だった場合はあらかじめ指定したデフォルトの値を出力する、という指定ができます。
使い方
shortcode_atts( $pairs , $atts, $shortcode );
| 項目 | 形式 | 必須/任意 | 初期値 | 説明 |
|---|---|---|---|---|
| $pairs | 配列 | 必須 | なし | サポートするすべての属性の名前とデフォルト値。 |
| $atts | 配列 | 必須 | なし | ユーザーがショートコードタグに指定した属性。 |
| $shortcode | 文字列 | 任意 | なし | shortcode_atts_{$shortcode} フィルターに使われるショートコード名。これを指定すると、他のコードが属性をフィルターするために shortcode_atts_{$shortcode} フィルターを使用できます。このパラメータはオプションですが、互換性を最大にするため常に含めるべきです。 |
今回は下記のようにしました。
array(
'word' => '値が入力されていません',
), $atts, 'userword' );
- 属性名を「word」
- 「word」のデフォルト値を「値が入力されていません」
これでユーザーが属性を入力して入ればその値を、入力していなければ「値が入力されていません」と出力します。属性を追加する応用編さらにもう少し応用したものを作成したいと思います。属性を複数にする先ほどまでは1つの属性でしたが、複数にすることも可能です。
function.php
//ショートコードでユーザーが入力した複数の属性の値を出力
function multiple_userword_func( $atts ) {
$atts = shortcode_atts(
array(
'word1' => 'word1の値が入力されていません',
'word2' => 'word2の値が入力されていません',
), $atts, 'multiple' );
return $atts['word1'] . $atts['word2'];
}
add_shortcode( 'multiple', 'multiple_userword_func' );
ショートコード
[multiple word1=今日は word2=晴れ]
出力
今日は晴れ
消費税を計算して出力数値を計算したり、判別することも可能です。
function.php
//ショートコードでユーザーが入力した属性の値を税込にして出力
function tax_func( $atts ) {
$atts = shortcode_atts(
array(
'price' => '金額が入力されていません',
), $atts, 'tax' );
if(ctype_digit($atts['price'])):
return $atts['price'] * 1.1;
else:
return $atts['price'];
endif;
}
add_shortcode( 'tax', 'tax_func' );
ショートコード
[tax price=100]
出力
110
7行目
ユーザーが必ず数値を入力してくれるとは限りません。数値でない場合、そのまま消費税を掛け算してしまうとphpのエラーとなってしまいます。ですので「ctype_digit」で数値の判定をして数値の場合のみ消費税を掛け算します。
WEBデザイナー・フロントエンドのスキルを確実に身につけたい方へ
「WEBデザインやフロントエンドを学びたい」と思い立ったとき、多くの方がまず独学を選びます。
しかし、独学では「何をどこから学べばいいかわからない」「つまずいたときに誰にも聞けない」といった壁にぶつかることも少なくありません。
一方、スクールで学べば、正しい順序で、現場で使えるスキルを効率よく習得することができます。最短ルートでスキルを身につけたい方には、スクール学習がおすすめです。
かすが私は26歳で印刷業からWEBデザイナーを目指して学び始めましたが、やはり独学に限界を感じ短期スクールで学びました。本気でスキルを身につけたいならスクールはマジで行った方が良いです!
- カリキュラムが体系化されているため、基礎から応用まで無駄なく学べる
- 現役のプロから実践的なフィードバックを受けられる
- わからないことをすぐに質問・解決できる環境がある
- 制作課題を通じて、ポートフォリオが作成できる
- 学習仲間や講師とのつながりが、モチベーション維持につながる
- カリキュラムが現場で必要とされる技術に対応しているか
- 現役デザイナー・エンジニアが講師として在籍しているか
- ポートフォリオ制作のサポートが充実しているか
- 卒業後の就職・転職支援が用意されているか
- オンライン・通学など、自分の生活スタイルに合った受講形式か
遠回りせず、確実にスキルを身につけたいなら、プロに教わるのが一番の近道です。
WEBデザイナー・フロントエンドエンジニアとして一歩踏み出したいあなたにぴったりのスクールを、下記の記事でご紹介しています。ぜひチェックしてみてください。


WordPressのショートコード「自己完結型」まとめ
- ショートコードには自己完結型と囲み型の2つがある
- 属性を複数追加できる
- 数値の計算などの処理もできる
前回のショートコードの基本と比べるとかなりできることが増えてきました。属性値を受け取って関数で処理するという流れなので、できることは無限にあります。そしてまださらに囲み型のショートコードもありますので次回はそちらを詳しく解説していきます。是非ご覧ください。
[related id=2250]









