WordPress記事内でプラグインを使わずにPHP,JavaScriptプログラムを動かす
公開日:
:
最終更新日:2014/04/19
初心者がWordPressでブログを作る JavaScript, PHP, WordPress, カスタマイズ, プラグイン
WordPressのカスタマイズをしていると、
「記事内や固定ページ内にPHPやJavaScriptを記述したい!」
という欲望がムクムクと膨らんでくると思います。
しかし、現状の仕様ではWordPressの記事内にPHPなどのスクリプト言語を記述することはできません。
当サイトの以下の記事では、記事内でPHPとJavaScriptのプログラムを動作させています。
一体どうやっているのか?
実現の方法をご説明します。
プラグインを使って記事内にPHPを記述する
世の中には便利なプラグインが溢れていて、プラグインを探すのが趣味のような方もいらっしゃるのではないでしょうか。
例に漏れず、PHPを記述できるようになるプラグインもいくつか存在するようです。
WP記事内にPHPを記述するプラグインの例
こういうプラグインが有名です。
私も以前、Exec-PHPを使ったことがあり、とても便利だったのを覚えていますがそれも今は昔。
プラグインを使わない理由
そんな便利なプラグインですが、当サイトでは極力プラグインは使わないようにしています。
理由は以下の通りです。
・WordPress本体のバージョンアップで使えなくなることがある
・プラグインの更新で使えなくなることがある
・他のプラグインとコンフリクトして正常動作をしなくなることがある
・プラグインを外すと過去の記事が崩れるなどの影響が出ることがある
しかも、上で紹介したプラグインは、この記事執筆時点(2014年4月)で2年以上もアップデートされていないです。
それはええのんかな?
プラグインを使わずにWordPress記事内でPHPプログラムを動かす
さて、本題。
プラグインを使わずに、WordPressの記事や固定ページ内でPHPファイルをインクルードし、PHPやJavaScriptプログラムを実行する方法を紹介します。
プラグインを使わずにWP記事内でPHPを実行するための手順
「functions.php」内にコードを記述する
まず、テーマ関数ファイル「functions.php」内に以下のコードを記述します。
|
1 2 3 4 5 6 7 8 9 |
function PHP_Include($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); include(get_theme_root() . '/' . get_template() . "/myphpfiles/$file.php"); return ob_get_clean(); } add_shortcode('phpinclude', 'PHP_Include'); |
テーマフォルダ内にPHPファイル管理用フォルダを作成する
次に、有効にしているテーマフォルダ内に「myphpfiles」というフォルダを作成し、そのフォルダ内に実行したいPHPファイルを配置します。
※フォルダ名は何でも良いですが、その場合はコード内のinclude関数内の「myphpfiles」という記述を作成したフォルダ名に合わせて変更してください。
例えば「myphpcode.php」というファイルを実行したい場合は、こんな感じです。
(ワードプレスディレクトリ)>wp-content>themes>(テーマフォルダ)>myphpfiles>myphpcode.php
ショートコードでPHPファイルを指定
あとは、記事や固定ページ内でPHPプログラムを実行したい場所に、以下のショートコードを書くと、「myphpfiles」フォルダ内にあるPHPファイル「myphpcode.php」を呼び出して実行してくれます。
|
1 |
[phpinclude file='myphpcode'] |
意外に簡単でしたね♪
phpコードを書く
あとは好きなようにプログラムをガリガリ書いてください。
参考)How to Develop a PHP File Include Plugin for WordPress(『SitePoint.com』より)
サンプルコード
簡単なプログラムを書いて、実行してみましょう。
「myphpcode.php」内に以下のコードを書いてみてください。
|
1 2 3 |
<?php echo 'PHP is running in the WordPress article!'; ?> |
※PHPの文法上、このプログラムでは末尾の「?>」は省略できますが、分かり易くするために書いておきます。
次に、WordPressの記事を新規作成して、記事内に以下のコードをコピペしてみてください。
|
1 2 3 4 |
ここに表示される。 ↓↓↓↓↓ [phpinclude file='myphpcode'] ↑↑↑↑↑ |
※このとき、必ずテキストエディッタを用いてください。ビジュアルエディタを用いると、ショートコードを正常に読み込まない可能性があります。
…とは言え、WordPressでPHPを動かしたいなんて思う人が、ビジュアルエディタを使っているとも思えませんがww
下書き保存して、プレビューで見てみましょう。
記事内に以下のように表示されたら成功です!
↓↓↓↓↓
PHP is running in the WordPress article!
↑↑↑↑↑
JavaScriptはPHPファイルの中に記述すればOK
JavaScriptを実行したければ、PHPファイル内にJavaScriptコードを書けばOKです。
さきほど作ったファイル「myphpcode.php」の中の「?>」の下に以下のコードを追記してみましょう。
|
1 2 3 4 5 6 7 8 9 10 11 |
<!-- JS表示用HTML --> <div id="jsview"></div> <!-- /JS表示用HTML --> <!-- javascript --> <script type="text/javascript"> (function($){ $("#jsview").html("JavaScript is running in the WordPress article, too!!"); })(jQuery); </script> <!-- /javascript --> |
これをプレビューしてみると、以下のように表示されていればOKです。
↓↓↓↓↓
PHP is running in the WordPress article!
JavaScript is running in the WordPress article, too!!
↑↑↑↑↑
ちなみに、上の例ではJavaScriptのライブラリのひとつであるjQueryを使っています。WordPressはデフォルトでjQueryが使えるようになってはいるのですが、WordPressの中ではjQueryの短縮オブジェクト名「$」が使えないという制限があるため、以下を参考にしてWordPress内でも「$」が使える方法で記述しています。
参考)WordPressでjQueryを使うときに、問題なく動作させる為の基礎知識やTipsと、動かない場合の対処例(『かちびと.net』より)
子テーマを使っている場合の注意点
当サイトもそうですが、子テーマを使ってカスタマイズを行っている方も多いと思います。
その場合は、子テーマフォルダ配下に「myphpfiles」フォルダを作成し、子テーマの「functions.php」内に書くコードを以下のように変更します。
|
1 2 3 4 5 6 7 8 9 |
function PHP_Include($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); include(get_theme_root() . '/' . get_stylesheet() . "/myphpfiles/$file.php"); return ob_get_clean(); } add_shortcode('phpinclude', 'PHP_Include'); |
関数 include() 内で呼び出している get_template() 関数を、get_stylesheet() に変更しています。これは、子テーマを扱っている場合はよくやるので、頭の片隅に置いておくとよいでしょう。
参考)WordPress の関連 URL、パスを呼び出す関数、定数色々(『WordPressの開発テクニック集 WP Tips』より)
セキュリティ上の注意点
この方法は、セキュリティ上のリスクを抱えています。
例えば、マルチサイト環境や複数ユーザーで管理している環境では利用しない方がいいかもしれません。
全ての管理者ユーザーがPHPを実行できてしまいます。
使い方を誤ると、このプラグインの存在自体がセキュリティホールになる可能性があります。
PHPファイルを管理するフォルダのアクセス権限を設定するなどの対策を講じる必要があります。
また、管理者権限を盗まれたりした場合、悪意のある攻撃者がスクリプトを実行し放題となります。
(ま、管理者権限を盗まれたらどの道アウトですがww)
記事内に直接PHPプログラムを書く訳ではないため、「Exec-PHP」などよりは危険度は低いですが、以上のリスクがあることを充分に理解した上で、自己責任の上で運用してください。
当サイトでの使用例
当サイトでは、例えば以下の記事が、この方法を使って書かれています。
フォームに値を入力して「計算」ボタンをクリックすると、PHPプログラムで計算を実行して、計算結果とグラフを表示します。
グラフの描画についてはjQueryプラグインのjqPlotを利用しています。詳しくは以下の記事を参照ください。
>> 【WordPress】見栄えのいいグラフを動的に描画できるjQueryプラグイン「jqPlot」をWPで使用する方法
スポンサードリンク
関連記事
-
-
【WordPress】見栄えのいいグラフを動的に描画できるjQueryプラグイン「jqPlot」をWPで使用する方法
当サイトの以下の記事では、数値計算を実行した後、計算結果をグラフ表示しています。 >>
-
-
WordPressテーマ【STINGER】子テーマのスマホ用スタイルシート「smart.css」を自力でカスタマイズする
WorpPressテーマ「STINGER」は、WordPressの初心者でも簡単に設定できるテンプレ