ワードプレスで自作したショートコードをプラグイン化してみましょう。

プラグインの基本の形が分かれば、貼りつけるだけ、
みたいな感じで簡単にできると思います。

ここでは最初にショートコード作成法の基本をサンプルを使って見つつ、続いて実際にそのショートコードをプラグイン化してみます。

ショートコードの事は分かってる!という場合には、
目次の「2. プラグイン化する」から直接見てみてください。

※)ワードプレスのプラグイン作成の基本は以下で解説してます。
【WordPress】プラグイン作成法を分かりやすく解説!

ショートコード作成の基本

まずはショートコードの基本の確認から。

ワードプレスでショートコードを自作するには、
以下の形式で記述するだけになりますね。

  • 【関数名】:関数名は他と被らないように付ける
  • 【$属性】:ショートコードの引数が入る連想配列。
    ショートコードで指定する引数がこの$属性に連想配列で引き渡される
    (引数がない場合には省略可)
  • 【ショートコード名】:ショートコードで指定する文字列(名前)

参照)ショートコードAPI(ワードプレス公式)

ここを押さえた上で、実際にプラグイン化してみます。

ショートコードの基本を更に具体的に確認する場合には、
以下のサンプルを見てみてください。

【Sample1】引数がない例

引数がない場合のショートコード例

単純に”本日を「年月日」の形式で表示するだけ”、
といった【引数なしのショートコード】を考えてみる。

【想定するショートコード】

  • 1)ショートコード名:show_today とした
  • 2)引数:なし
  • 3)ショートコードの結果:「xx年xx月xx日」の形式で本日を表示する

このショートコードを実現するには、例えば以下のようなコードになりますね。

【ショートコードのコード例】

  • 1行目:関数名を「jin_shortcode_show_today」とした(引数無し)
  • 2行目:xxxx年xx月xx日の形式で本日を返す(表示させる)
  • 3行目:ショートコード名(show_today)と、
    それに対して実行する関数名(jin_shortcode_show_today)を書く

(メモ)命名規則(関数名や変数名など)

  • 変数、アクション、関数の名前にはアルファベット小文字を使う。
  • camelCase は使わない
    (複数の単語で命名する場合、単語の区切りを明確にするために単語の先頭を大文字する、という形は使わない)
  • 単語を区切る場合にはアンダースコア( _ )を使う
  • 不必要に変数名を省略しない(分かりやすくするため)

参照)
ワードプレス:PHPコーディング規約(ワードプレス公式)
(⇒「命名規則」より)

関連)
日付と時刻の書式(ワードプレス公式)

【Sample2】引数が1つの例

引数が1つあるショートコード例

引数が1つと言えば、芸能人をよく扱うトレンド記事や、
そうでなくても人物のプロフィールを書く場合に良くある「生年月日からの年齢表示」がありますね。

1つの引数(生年月日)を与えることで、
現在の年齢を計算して表示するショートコードを考えてみる。

(これを入れておくと、年が変わった時の記事更新がいらなくて楽!笑)

【想定するショートコード】

  • 1)ショートコード名:cal_age とする
  • 2)引数:ymd(の1つ)のみとする
  • 3)ymd:生年月日の形式を、年(4ケタの西暦)+月(2桁)+日(2桁)とする
  • 4)ショートコードの結果:「xx歳」と「歳」を付けて返す

これを実際のショートコードとして書いてみると
たとえば以下のようになりますね。

【ショートコードのコード例】

  • 1行目:
    ショートコードで実行される関数名を
    「jin_shortcode_cal_age」として、
    引数(ymd)を配列「$attr」で受ける
  • 2~5行目:
    配列「$attr」から ショートコードで指定された引数 ymd の値を取り出す。
    shortcode_atts() を使って、引数が指定されてなかったり、想定と異なる引数の場合には除外して初期値を使う、ということをする
  • 8行目:
    初期値の場合には、不明、とする
  • 11行目:
    本日を、ymdと同じ形式で取得(西暦4桁+月2桁+日2桁)。
  • 12行目:
    本日から生年月日を引いて年齢を計(端数はfoorを使って切り捨て)
  • 15行目:結果を返す
  • 17行目:ショートコード名( cal_age)と、それに対して実行される関数名(jin_shortcode_cal_age)を記述

引数が必要なショートコードでは、上の2行目~4行目のように shortcode_atts() を使い、存在しない引数が指定されたり、そもそも引数が無かったりする場合を考慮する必要がある、っていうのがポイントになりますね。

参照)
関数リファレンス/shortcode atts

関連)
日付と時刻の書式(ワードプレス公式)
date関数(php公式)
floor関数(php公式)

【Sample3】引数が2つ以上の例

引数が2つ以上あるショートコード例

引数が2つ以上でも上の例同様 shortcode_atts() を使って、引数のチェックはしっかり行います。

複数の引数を使う場合というと、
例えば、商標系の記事(物販アフィリエイト系の記事)でよくありそうな、

・商品の初回購入価格がxxx円
・2回目以降の価格がyyy円
・最低購入回数といった縛りが3回

みたいな場合、
最低購入回数購入時の合計金額から、
1回あたりの金額(その商品の1つあたりの平均価格)を出す、

といった計算がありますね。

【想定するショートコード】

  • 1)ショートコード名:heikin_tanka とする
  • 2)引数:3つ
    ・shokai(初回のお値段)、
    ・nikaime(2回目以降のお値段)、
    ・shibari(最低購入回数といった縛りの回数)
  • 3)shokai, nikaime, shibari:単純に数値で入れる
  • 4)ショートコードの結果:
    千円以上の場合には「x,xxx円」と3桁区切りの「,」を付け、
    最後に「円」を付けて返す

さて引数が3つになりましたが、引数が1つの場合とやり方は同じで、
実際のコードはたとえば以下のような感じ。

【ショートコードのコード例】

  • 1行目:
    ショートコードで実行される関数名を「jin_shortcode_heikin_tanka」とし、
    3つの引数(shokai、nikaime、shibari)を連想配列「$args」で受ける
  • 2行目~6行目:
    • 引数が1つの例の場合と同様に、shortcode_atts() を使って引数をチェック。
      (想定している引数がなければ shortcode_atts() 内で指定している値を使う。想定外の引数があれば取り除く)
    • shortcode_atts() のチェック結果を配列 $a に入れる。
  • 8行目~10行目:
    配列「$a」から ショートコードで指定された3つの属性(引数)の値を各々取り出す
  • 12,13行目:
    16行目の割り算で0で割ることがないようにエラーチェックを入れておく
  • 16行目:
    最低購入回数分購入した時の平均単価を計算。
    (round関数 を使って四捨五入)
  • 18行目:
    • number_format関数を使って、3桁区切りにする
      (3桁ごとに " , "を付ける)
    • 最後に「円」を付けて返す
  • 23行目:
    ショートコード名( heikin_tanka )と、
    それに対して実行される関数名( jin_shortcode_heikin_tanka )を記述

参照)
関数リファレンス/shortcode atts

関連)
round関数(php公式)
number_format関数(php公式)

プラグイン化する

作ったショートコードをプラグイン化するのは簡単で、
プラグインの基本形に当てはめればOK。

つまりプラグイン情報ヘッダーに加えて、プラグイン用のコードを追加する、ってことになりますね。

・プラグインの基本形は以下参照
【WordPress】プラグイン作成法とサンプルから有効化まで

プラグイン情報ヘッダーで最低必要なのはプラグイン名称のみですが、
例として、簡単な説明やバージョン、著作者ぐらいも付けて以下のような感じ。

  • 2行目~7行目:プラグインの情報ヘッダー
    必須は「Plugin Name」のみ。
    ここではおまけとして、Description, Version, Authorも記載。
  • 9行目~12行目:ショート用のコードを貼りつけ

※)情報ヘッダーなどプラグインの基本形はこちらの記事参照

これだけでショートコードもプラグイン化できるなんて、簡単すぎる!

これを基本に、上の方で解説した「ショートコードサンプル1」(引数がない例)をプラグイン化してみると、以下のようになりますね。

【Sample1】プラグイン化(引数がない例)

  • 2行目から7行目の情報ヘッダーを適宜変更
  • 9行目~12行目:ショートコードのサンプル1(引数がない例)を貼りつけ

プラグインの情報ヘッダーに加えて、ショートコード用のコードを追加しただけ。

実際にプラグインをインストールすると以下のように表示されます。

情報ヘッダーで設定した以下もしっかり表示されてます。

・プラグイン名(jin-shortcode-sample01)
・簡単な説明(ショートコードのプラグイン化のテスト(引数がない例))
・バージョン(0.1)
・作者(Jinなのだ)

実際動作させてみたところはこちら

このショートコードの実際の動作を試してみると、以下のようになりますね。

※)ショートコードをコピペで記事中に貼り付けると、
自動的にショートコードブロックに貼り付けられます。
(テスト環境はワードプレス5.8.2:テーマはCocoon))

動作を試した年月日が「2021年11月15日」なので、そのように表示されました。

【Sample2】プラグイン化(引数が1つの例)

  • 2行目から7行目の情報ヘッダーを適宜変更
  • 9行目~25行目:こちらもショートコードのサンプル2(引数が1つの例)を貼りつけただけ

こちらも実際プラグインをインストールして有効すると、
以下のようにプラグインの一覧で表示されます。

プラグイン名から、簡単な説明、バージョン、作者、と、
プラグインの情報ヘッダーで設定した値(文字列)が表示されているのが分かります。

実際動作させてみたところはこちら

実際このショートコードを記事の中で使ってみると...

このテストをしたのが2021年11月15日。
誕生日を2001年1月2日としたので、20歳と表示されました。

【Sample3】プラグイン化(引数が2つ以上の例)

  • 2行目から7行目の情報ヘッダーを適宜変更
  • 9行目~31行目:こちらもショートコードのサンプル3(引数が2つ以上の例)を貼りつけただけ

実際にこのプラグインをインストールして有効化すると、
プラグイン一覧で以下のように表示されます。

プラグインファイル中の情報ヘッダーで設定した値もしっかり表示されてますね。

実際動作せてみたところはこちら

初回の購入金額を300円、
2回目以降の価格を3,000円、
最低購入回数を3回としたので、
1回あたりの価格の計算は以下になります。

3回合計金額 = 300円(初回)+3,000円×2(2回目、3回目)
= 6,300円。

この3回合計金額を3で割るので、2,100円。

正しく動作できてますね。

【Sample4】複数のショートコードをまとめてプラグイン化

ここまでの例は、1つのショートコードに対してそれをプラグイン化するというもの。

でも1つのプラグインで複数のショートコードを含めたい、
ということもありますね。

この場合には、ここまで見てきたのと同様、
単にその複数のショートコードを入れればOK。

複数の自作ショートコードをまとめて1つのプラグインにするには、
単にそれらショートコードをまとめて記載すればOK。

  • 12行目~16行目:ショートコードSample1を記述
  • 21行目~37行目:ショートコードSample2を記述
  • 44行目~66行目:ショートコードSample3を記述

プラグインファイル内に、単に複数のショートコードの記述を入れてるだけ。
簡単にできますね。^-^)

ショートコードをプラグイン化したら、
実際に動作するかテストしてみてくださいね。
テスト環境を作って試すのがおススメ

プラグインファイルの保存やアップロードの仕方については以下参照。

【WordPress】プラグイン作成法とサンプルから有効化まで

今回のポイント

ワードプレスで、ショートコードをプラグイン化するには、プラグインの基本形さえ押さえておけば、あとは作ったショートコードのコードを貼りつけるだけで簡単にできますね。

ポイントはプラグインの基本形を押さえておくこと。
(情報ヘッダーを付けて、その下に実行したい関数を書く)

これさえ分かれば、すぐプラグイン化ができると思います。

またブログで収益化をしたい、ブログのスキルをもっと得たい、そのスキルがお金に変わると嬉しいな、などあれば、以下のメルマガにも登録してみてくださいね。

早期退職して海外で奮闘する JIN のメールマガジン

時間や場所に縛られず稼いだJINが教える

~ 最短で月収10万円稼げるようになる方法 ~

お名前(全角文字)

隣のあの人にも、思わず教えたくなる秘密

配信停止は、いつでもできます

迷惑メールは一切配信されませんので、ご安心くださいね

自らの手で未来を変える力を手に入れる!