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が置いてある場所は、下記のファイルになります。
1 |
/{WordPressがインストールされている場所}/wp-content/themes/{テーマ名}/functions.php |
functions.phpが置いてある場所については、「WordPressの functions.phpがある場所」に詳しく書いています。
このファイルに、下記の様に関数を追記します。
ファイル内であればどこに書いても問題ありませんが、一番下あたりに追記しておけば分かりやすいでしょう。
———————————–
1 2 3 4 |
function shortcode1Func() { return "ショートコードの実験。"; } add_shortcode('shortcode1', 'shortcode1Func'); |
———————————–
「add_shortcode();」で関数を呼び出し、ショートコードとして処理をする仕様になっていて、下記の様に記述します。
———————————–
1 |
add_shortcode('ショートコード名', '関数名'); |
———————————–
これで、ショートコードを書いたページが表示されると、関数が実行され、その結果をページに表示させることができる、という仕組みです。
そして、表示させたい WordPressの投稿ページに下記の様に「add_shortcode」の第 1引数で指定した変数名(shortcode1)を「[ ]」で囲んだものを記述します。
1 |
[shortcode1] |
これで、「shortcode1Func」の関数で処理された内容が編集されます。
「[shortcode1]」の記述方法は、例えば「Contact Form 7」などのプラグインを使う場合に、指定されたショートコードをページに編集することでお問い合わせフォームを表示させることができるようになりますので、受け入れやすい仕様だと思います。
「Contact Form 7」は、WordPressのメールフォームとして有名なプラグインです。
「Contact Form 7使い方詳細解説・WordPressメールフォーム」に記事を書いていますのでこちらも参考にしてください。
いちばんやさしいWordPressの教本 人気講師が教える本格Webサイトの作り方 第2版 WordPress 4.x対応
- 石川 栄和,大串 肇,星野 邦敏
- インプレス
- 価格¥2,223(2025/04/23 16:18時点)
- 発売日2014/11/14
- 商品ランキング724,118位
ショートコードをもう少し使ってみましょう
ショートコードで利用する関数の中でも WordPressの関数も実行できます。
例えば、下記の様にブログタイトルにテキストをを追加したものを返すこともできます。
———————————–
1 2 3 4 |
function shortcode1Func() { return get_bloginfo('name') . 'エス技研'; } add_shortcode('shortcode1', 'shortcode1Func'); |
———————————–
呼び出し方は先ほどの「[shortcode1]」と同じです。
引数を渡して、引数に応じて処理をさせることもできます。
———————————–
1 2 3 4 5 6 7 8 9 |
function shortcode1Func($arg) { extract ( shortcode_atts ( array ( 'text1' => 'X', 'text2' => 'Y', 'text3' => 'Z', ), $arg ) ); return $text1 . $text2 . $text3; } add_shortcode('shortcode1', 'shortcode1Func'); |
———————————–
これに対して、下記の様にショートコードを記述することで引数を与えて処理をさせることができます。
1 |
[shortcode1 text1=あ text2=い text3=う] |
ショートコードで引数をセットして、そこでセットした変数名を指定して関数の中で変数を受け取る処理となります。
「’text1′ => ‘X’,」の「=> ‘X’」の部分は、引数がなかった場合のデフォルト値を設定している部分になります。
デフォルト値を設定していない変数に値が入らなかった場合は、nullで処理され、特にエラーは発生しません。
また、下記の様に「=」の前後にスペースを入れたり、変数の順番を変えても問題はありません。
1 2 |
[shortcode1 text1 = あ text2 = い text3 = う] [shortcode1 text1=あ text3=う text2=い] |
ショートコードをテンプレートで呼び出す方法
ショートコードは、そもそも PHPを実行できない投稿ページや固定ページで処理をさせるための仕組みですが、同じ仕組みを使ってテンプレートで実行することも可能です。
下記の様にテンプレートファイルに記述することで実行が可能です。
1 |
<?php echo do_shortcode('[shortcode1]'); ?> |
ショートコードをウィジェットに呼び出す方法
投稿ページや固定ページに add_shortcodeを使ったショートコードを記述して、PHPの処理が実行できるようになりましたので、そのショートコードを同じようにウィジェットに編集すればウィジェットでも実行できるのだと思っていました。
でも、そのままでは実行できないんですよね。
ウィジェットでショートコードを実行する方法は「WordPressのウィジェットでショートコードを使う方法add_filter」に書きましたので、併せてご覧ください。
ショートコードを使った処理
ショートコードは、PHPの関数を実行する処理ですので、どんな処理でも作成することができます。
そんなわけで、投稿ページや固定ページに共通して表示したい HTMLをパーツ化して任意のページに表示させる、というショートコードを作ってみました。
詳しくは、「WordPress 任意のファイルを読み込むショートコードの処理」を参照ください。
PHPのソースを宣言するのはショートタグ
この記事では WordPressのショートコードの話を書いていますが、PHPのソースコードであることを宣言する「<?php …… ?>」タグを「<? …… ?>」として省略形で記述する方法を「ショートタグ」と言います。
ただ似てるっていうだけの話ですが、ショートタグについては「サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない」に記事を書いていますので、良ければ参考にしてみてください。
(2015.02.26追記)
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
評価点投票プラグイン10個を比較!WordPressで口コミサイトを構築
口コミサイトを作るために必要な評価点、レビューを投稿できるプラグインを探して評価。10プラグインをチェックし、8プラグインは詳細解説付き。
-
-
Category OrderでWordPressのカテゴリを並替えよう
Category Orderは基本機能では並び替えができないカテゴリを並び替える機能を提供するプラグインです。ドラッグ&ドロップで並び替えができる簡単インターフェイスです。
-
-
Export to Textで WordPressを csv出力
WordPressのデータを csv出力する Export to Textの使い方を解説しています。
-
-
AddQuicktagを使って WordPressの投稿を楽にする
投稿時にタグの入力を楽にしてくれるプラグイン「AddQuicktag」の使い方の説明です。クリック一つでタグを編集できます。
-
-
WP jQuery LightBoxでWordPressの画像を簡単に見やすくする方法解説
画像のリンクに対して LightBox効果を簡単に追加するプラグイン。インストールして数項目にチェックを入れるだけで設定完了。属性を追加することで機能も追加できる。
-
-
Search RegexでWordPress投稿の文字列を検索・置換する使い方解説
WordPressの投稿テキストを検索、置換するプラグイン Search Regexの使い方の詳細解説です。
-
-
P3(Plugin Performance Profiler)で負荷が高いプラグインを調査し表示スピードアップ!
まずは正確に現状把握を!P3(Plugin Performance Profiler)を使ってプラグインの処理時間を確認!簡単操作で対応すべきプラグインが一目瞭然になります!
-
-
WordPress 画面が真っ白になる不具合があった場合の対応の一つ
WordPressで画面が真っ白になる不具合があった場合の対応方法の説明です。PHPでエラーが起こっている場合がほとんどですがその対処方法です。
-
-
WordPress初心者向け講座・詳細解説データベースとは何か?
データベースとは何か?を言葉の意味の説明なども含めエクセルと比較しながら説明しています。
-
-
Advanced Custom Fields(ACF)のアドオン・ギャラリーの使い方解説
Advanced Custom Fieldsのアドオン・ギャラリーの解説記事。複数の画像を入力できる優れもので、画像のサイズ、容量などでの制限ができ、より厳密な管理が可能。