WordPress投稿ページにPHP利用→ショートコードを使おう!
2017/01/31
こんにちは、okutani(@okutani_t)です。WordPressではPHPを使って動的なサイトを構築しています。しかし、投稿ページや固定ページでは、そのままPHPを利用することができません。
「Exec-PHP」等のプラグインを使うことで、投稿ページからPHPを利用することができますが、この方法はセキュリティ上あまりよろしくないようです。
今回はプラグインを使わずにショートコードを使って投稿ページでPHPを使う方法を紹介します。
WordPress設定ファイルをいじっていくので、適宜サイトのバックアップをとってから作業していきましょうね。
では、さっそくショートコードを使ったPHPの利用方法をみていきましょう。
スポンサーリンク
PHPファイルの作成
投稿ページに直接、PHPを記述することができないため、次の手順で利用していきます。
- 実際の処理を書いたPHPファイルの用意
- functions.phpからPHPファイルの読み込み、ショートコードを作成
- 投稿ページからショートコードを利用する
上記の手順で、PHPを投稿ページで利用できます。
まずはショートコードについての説明を見ていきましょう。
ショートコードについて
ショートコードは「functions.php」に関数(便利に使えるプログラムの処理のかたまりのこと)を用意しておき、投稿ページからその関数を読み込むことで、記述した処理をおこなうことができる機能です。
説明だけではわかりにくいと思いますので、サンプルを用意してみました。
<?php
function shortcode_func() {
return "Hello! WordPress";
}
add_shortcode('sc1', 'shortcode_func');
この「add_shortcode()」の一つ目の引数「sc1」を投稿ページから呼ぶことで、2つ目の引数「shortcode_func」から「returnの中身」が返ってきます。
投稿ページから下記のコードを記述し、投稿してみてください。
[sc1]
たったこれだけです。記事内に「Hello! WordPress」と表示されていれば成功です。
決まり文句などをショートコードにしておけば、すっきりかつ簡単に投稿ページに文を挿入することができますね。
PHPファイルをショートコードから読み込む
では、ショートコードを使って実際にPHPファイルを読み込んでみましょう。
ショートコードは「functions.php」に記述していきます。
<?php
function short_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'default'
), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/$file.php");
return ob_get_clean();
}
add_shortcode('myphp1', 'short_php');
もし子テーマを使っている場合は、7行目の記述を下記のとおりに書き換えます。
include(get_theme_root() . '/' . get_template() . "/$file.php");
↓
include(STYLESHEETPATH . "/$file.php");
「STYLESHEETPATH」を利用することで、子テーマのcssファイルまでのパスを取得することができます。極力、子テーマで利用するのが好ましいですね。
上記の関数を用意することで、ショートコード用に準備しておいたPHPファイルを次の形で呼び出すことができます。
[myphp1 file='foo']
「file=’PHPファイル名’」とすることで、読み込みたいPHPファイルを指定できます。
サンプルとして、「foo.php」を用意して、ちゃんと記事内で読み込めるか確認してみましょう。functions.phpと同じ場所にfoo.phpを作成し、下記コードを記述します。
<?php echo 'Hello! myphp';
これで記事に「Hello! myphp」と表示されていれば、ショートコードを使ったPHP呼び出しができています。
これで、PHPを投稿ページで使うことができますね。
まとめ
プラグインを使わずに、PHPを投稿ページで利用することができました。
一度設置してしまえば、かんたんにPHPが利用できるようになりますね。ぜひ試してみてください。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク