エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


WordPress投稿にPHPを記述するショートコードの使い方add_shortcode

      2015/06/14

WordPressの投稿ページで PHPの処理をさせるショートコード

 

WordPressのショートコードとは?

 
WordPressをブログとして日記などを書いている場合は、投稿の中に PHPの処理を記述したいと思う場面はほとんどないと思いますが、CMSとして利用している場合は、PHPの処理を記述したい、と思う場面もあるでしょう。
 
そんな方にとっての記事です。
 
 
WordPressを CMSとして、企業のサイトやサービスサイトを構築している場合は、投稿ページや固定ページとして編集しているページの中には何かしらの処理を実行した情報を表示させたい、という場面に出くわすこともあるでしょう。
 
そんな時に真っ先に思いつくのは、記事を記述する部分に直接 PHPのソースコードを書いて、それが実行されればいいな、という考えです。
 
もちろんそのためのプラグインも用意されています。
投稿記事の中に PHPのスクリプトを埋め込めるようにするプラグインには
 runPHP
 Exec-PHP
 Executable PHP widget
といったものがあります。
 
これを使えば投稿記事の中にも PHPのスクリプトを埋め込むことができ、自由度が格段にアップします。
しかし、自由度がアップするということは、その分セキュリティが甘くなることにもつながりますので、違う方法を考えた方がよさそうなのです。
 
下記のサイトでは面白おかしく書いてありますが、「なぜ PHPを記述するのにプラグインを使うの?」というところに真理があるのではないでしょうか。
 http://wp-d.org/2013/07/10/4931/
 
PHPのコードを記述できる技術がある方であれば、WordPressが本来的に提供している機能を利用するべきでしょう。
 
 
そして、その違う方法が WordPressにはあらかじめ用意されています。
それは、「ショートコード」と言われる仕組みで、add_shortcode関数を記述して利用します。
 
この add_shortcode関数を使ったショートコードの仕組みを使うことで、PHPの処理を呼び出し、結果を表示させることができるようになりますので、投稿ページに直接 PHPのスクリプトを書かなくても PHPの処理を実行させることができる仕組みです。
もちろん、記述できる言語は PHPに限りません。
 
 

ショートコードの使い方

 
ショートコードとは、「functions.php」に関数を作成し、それを add_shortcodeによって呼び出して表示させる仕組みのことです。
 
 
サンプルのコードを作ってみましょう。
 
ショートコードの関数を記述するファイルは「functions.php」になります。
functions.phpが置いてある場所は、下記のファイルになります。

 
functions.phpが置いてある場所については、「WordPressの functions.phpがある場所」に詳しく書いています。
 
 
このファイルに、下記の様に関数を追記します。
ファイル内であればどこに書いても問題ありませんが、一番下あたりに追記しておけば分かりやすいでしょう。
———————————–

———————————–
 
「add_shortcode();」で関数を呼び出し、ショートコードとして処理をする仕様になっていて、下記の様に記述します。
———————————–

———————————–
 
これで、ショートコードを書いたページが表示されると、関数が実行され、その結果をページに表示させることができる、という仕組みです。
 
そして、表示させたい WordPressの投稿ページに下記の様に「add_shortcode」の第 1引数で指定した変数名(shortcode1)を「[ ]」で囲んだものを記述します。

 
これで、「shortcode1Func」の関数で処理された内容が編集されます。
 
 
「[shortcode1]」の記述方法は、例えば「Contact Form 7」などのプラグインを使う場合に、指定されたショートコードをページに編集することでお問い合わせフォームを表示させることができるようになりますので、受け入れやすい仕様だと思います。
 
「Contact Form 7」は、WordPressのメールフォームとして有名なプラグインです。
Contact Form 7使い方詳細解説・WordPressメールフォーム」に記事を書いていますのでこちらも参考にしてください。
 
 


 

ショートコードをもう少し使ってみましょう

 
ショートコードで利用する関数の中でも WordPressの関数も実行できます。
 
例えば、下記の様にブログタイトルにテキストをを追加したものを返すこともできます。
———————————–

———————————–
 
呼び出し方は先ほどの「[shortcode1]」と同じです。
 
 
引数を渡して、引数に応じて処理をさせることもできます。
 
———————————–

———————————–
 
これに対して、下記の様にショートコードを記述することで引数を与えて処理をさせることができます。

 
ショートコードで引数をセットして、そこでセットした変数名を指定して関数の中で変数を受け取る処理となります。
 
「’text1′ => ‘X’,」の「=> ‘X’」の部分は、引数がなかった場合のデフォルト値を設定している部分になります。
デフォルト値を設定していない変数に値が入らなかった場合は、nullで処理され、特にエラーは発生しません。
 
また、下記の様に「=」の前後にスペースを入れたり、変数の順番を変えても問題はありません。
 

 
 

ショートコードをテンプレートで呼び出す方法

 
ショートコードは、そもそも PHPを実行できない投稿ページや固定ページで処理をさせるための仕組みですが、同じ仕組みを使ってテンプレートで実行することも可能です。
 
下記の様にテンプレートファイルに記述することで実行が可能です。
 

 
 

ショートコードをウィジェットに呼び出す方法

 
投稿ページや固定ページに add_shortcodeを使ったショートコードを記述して、PHPの処理が実行できるようになりましたので、そのショートコードを同じようにウィジェットに編集すればウィジェットでも実行できるのだと思っていました。
でも、そのままでは実行できないんですよね。
 
ウィジェットでショートコードを実行する方法は「WordPressのウィジェットでショートコードを使う方法add_filter」に書きましたので、併せてご覧ください。
 
 

ショートコードを使った処理

 
ショートコードは、PHPの関数を実行する処理ですので、どんな処理でも作成することができます。
 
そんなわけで、投稿ページや固定ページに共通して表示したい HTMLをパーツ化して任意のページに表示させる、というショートコードを作ってみました。
 
詳しくは、「WordPress 任意のファイルを読み込むショートコードの処理」を参照ください。
 
 

PHPのソースを宣言するのはショートタグ

 
この記事では WordPressのショートコードの話を書いていますが、PHPのソースコードであることを宣言する「<?php …… ?>」タグを「<? …… ?>」として省略形で記述する方法を「ショートタグ」と言います。
 
ただ似てるっていうだけの話ですが、ショートタグについては「サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない」に記事を書いていますので、良ければ参考にしてみてください。
(2015.02.26追記)

 - WordPress

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

Category Order and Taxonomy Terms Orderでカテゴリ・タクソノミーのタームの順番を並び替える

標準機能では行えないカテゴリやタクソノミーの並び替えを行うプラグインCategory Order and Taxonomy Terms Orderの紹介です。

WordPressで使うおススメ FTP、テキストエディタ、圧縮解凍ソフト

WordPressサイトを構築、運用するために必要となるFTPソフト、テキストエディタ、圧縮解凍ソフトのオススメソフトを紹介。

CSV Importerで WordPressにcsvを取込む

WordPressに csvファイルを取り込む CSV Importerの使い方の解説です。

Advanced Custom Fields(ACF)のアドオン・繰り返しフィールドの使い方解説

Advanced Custom Fieldsのアドオン・繰り返しフィールドについて解説。繰り返しフィールドは投稿者が入力フィールドを追加しながら情報を入力できるフィールドを提供。

Theme My Loginの日本語翻訳ファイル Ver.6.4.5対応

Theme My Loginの日本語翻訳ファイルのダウンロードページ。WordPressの翻訳ファイルの設置方法、注意点、翻訳ファイルの作成方法なども解説。

WordPressでダブルクォートなどの文字が自動変換?原因と対処方法

ダブルクォート、シングルクォート、HTMLタグなどが自動変換関数によって入力と違う形で表示されます。原因を2つの関数ごとに説明し、対応方法を3パターン提示します。

WP Reviewを使ってWordPressのレビューサイトを構築

レビューサイトを構築するプラグインです。複数の評価者による評価点投稿やページごとに配色を変更する機能、機能満載なウィジェットなどレビューサイト構築に最適です。

Multi RatingでWordPressの口コミサイトを構築

口コミの評価点を投稿する機能に特化。評価点を複数設定することができ、投稿後の評価点を編集することができる数少ないプラグイン。日本語にも対応。おススメ。

Captchaを使って WordPressのコメントスパム対策をする

コメントスパム対策として入力させない対策の一つとしてCAPTCHAという方法がありそれを簡単に実装できるプラグインCaptchaの解説です。

実測比較・レンタルサーバスピード選手権!WordPressが速いのは?

WordPressが一番速く動くレンタルサーバはどれだ!実際にこのエス技研ブログをコピーして8つのサーバを比較。結果はヘテムル、X10、さくらプレミアムが同レベルで優秀。