WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです

WordPressでオリジナルのショートコードを作るための知識(初歩の初歩)

公開日:2017(平成29)年5月15日/最終更新日:

Knowledge Base Wordpress パソコン カスタマイズ 設定



【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

WordPressのプラグインなどでよく使われるショートコード。[]で囲まれた記号の中に特定の呼び出し文字列を入れると何かが表示されるというアレですね。おなじみだと思います。

すごく複雑なことができるようですが、今回は本当に本当に基本的なショートコードの作り方と、自身のサイトで必要となったカスタムフィールドの値を表示するためのショートコードの作り方の2つを紹介します。

なぜ後者の対応が必要になったのかというと、「Advanced Custom Fields」などのプラグインを使えばフォームに入力した文字列などをテンプレートへ呼び出して表示できる・・・という機能を使っていて、かつ、テンプレートではなく投稿や固定ページの本文へ任意に挿入できないかという壁に当たったからです。

テンプレートへカスタムフィールドの値を表示するように設定するにはphpコードを表示したい場所へ記述すれば済むのですが、WordPress標準ではセキュリティ上の問題から投稿や固定ページの本文へ直接phpコードを記述して動作させることができないようになっているのはご存じですよね?

これを可能にするために「EXEC PHP」などのプラグインを使って動くようにすれば解決するのですが、それだと複数のユーザー、特に誰でもユーザー登録して投稿するようなサイトでは悪意のあるコードなどを投稿されかねません(実はこれがセキュリティ上の問題であろうと私は認識しています。管理者だけが投稿を行うサイトでは特に使用に問題はないと思います)。

私以外でも同じことをしたい人はきっといらっしゃるだろうと思い、備忘録をかねて本当に本当に触り部分だけ紹介します。今後いろいろできるようになったら追記するかもしれません。

基本的なショートコードの書き方

公式にはWordPress日本語公式サイト上で解説されている「ショートコードAPI」というのを使うようです(自信がなくすみません)。いろいろ書かれていますが、1つだけ紹介すると

「ショートコードで呼び出された文章です」という文字を本文に挿入した[bunsyou]というショートコードで表現しようとすると

function bunsyou_short() {
return "ショートコードで呼び出された文章です";
}
add_shortcode('bunsyou', 'bunsyou_short'); 

というふうにテーマのfunctions.phpへ追記します(functions.phpは重要なファイルですから、必ずバックアップを取って不具合に備えてくださいね)。

実際に投稿へ[bunsyou]というショートコードを入れてプレビューしてみると「ショートコードで呼び出された文章です」と表示されますね。これが本当の本当の基本のようです。

ちょっとだけ解説すると

「function bunsyou_short()」という先頭のコードと「add_shortcode(‘bunsyou’, ‘bunsyou_short‘);」という末尾のコードの赤字部分はプログラム名(命令の名前)なのでなるべく他で使われないような文字列にして同じものを入れなければなりません。

また、「add_shortcode(‘bunsyou‘, ‘bunsyou_short’);」の赤字の部分が[]で囲まれたショートコードの中へ記述する文字になります。

要するに、[bunsyou]と書かれたものが本文の中にあったら、「return」の後に入力された文字列を表示しなさいねという内容なんですね。

定型文章を簡単に呼び出すにはこの方法でOKです。何となく簡単に思えてきますね。

ただ、これではちょっと使い道が少ないので、文頭に書いたようにカスタムフィールドの値を呼び出す方法を次で紹介します

カスタムフィールドの値を投稿本文へショートコードで呼び出す方法

今まで長い長い前置きを読んでいただきありがとうございます。ここからが今回の記事の本題です。

カスタムフィールドの値をショートコードを使って投稿や固定ページの本文へ表示するには

function get_customfields() {
$hensuu = get_post_meta(get_the_ID(), 'field1', true);
return $hensuu;
}
add_shortcode('viewcustomfield', 'get_customfields');

とfunctions.phpへ記述します。

前の基本事項が前提になります。「get_customfields」は同じ文字を!ですね。

そして「field1」というカスタムフィールド名に入力されている文字列を[viewcustomfield]というショートコードが書かれていたら呼び出すという内容です。

また、
「$hensuu = get_post_meta(get_the_ID(), ‘field1’, true);」という形で値を取得し(変数ですね)、

「return $hensuu;」で出力しています

案外この書き方がテーマの編集などでも活躍すると思います

基本形が分かっていれば簡単ですね。

QA AnalyticsQA Analytics

おまけ ショートコードの困りごと

完全におまけ情報ですが、これを使えばパラメーターのあるショートコードのパラメーター値をショートコードで呼び出せるのでは?と考えてしまいそうですが、実はショートコードのパラメーター値にショートコードは使えなくなっているようです。

例えば[ショートコード名 〇〇=”××”]みたいなショートコードの××にカスタムフィールドの値を取得するショートコードを挿入したら・・・という使い方です。

仕様としてこれは無理なようですから、その場合にはphpを使うしかなさそうですね。