Web/DTP
投稿や固定ページでPHPを実行する
はち
更新日:2021/08/05
はちです。2015年も終わりですね。
今年1年は色々な取り組みをしましたが、やっぱりWordpressに触る機会がとくに多かったと思います。
WordPressの投稿・固定ページの投稿時にPHPを実行するには
WordPressをお使いの方はなんとなくわかるかと思いますが、Wordpressの投稿や固定ページ機能の中、いわゆる「記事」の中では直接PHPを書いて実行することが出来ません。
記事を書く際にPHPはどうやって実行するのか?
普段、「投稿」機能を使用しているときは、あまりページ内でPHPを独自で書いて…というのをやりたいと思うシーンは少ないように思います。
しかし、「固定ページ」機能を使っている際は、結構使いたいと思うシーンがあります。
例えば以下のようなとき。
- 時限式のバナーを設置したい
- ページ内で独自にアンケートをしてみたい
などです。
では、そういう時はどうすれば良いでしょうか。
その1:Exec-PHPプラグインを使う←非推奨
「Exec-PHP」というプラグインがあります。
このプラグインを導入することで、任意のコードをベタ書きして簡単に実行することが出来てしまいます。
一見、ものすごく便利に見えますがExec-PHPは、PHPのeval()という関数を使用して、コードを実行します。
このeval()という関数はPHPのリファレンスでも、危険なコードとして記載されております。
リファレンス→http://php.net/manual/ja/function.eval.php
また、プラグインの最終更新日がカナリ古いこともあり、導入はしないほうが懸命です。
その2:ショートコードを使う←推奨
代わりの手段というか、現在の正式な手段として「ショートコード」というものがあります。
いきなり「ショートコード」と言われても、ピンと来ないと思いますが、「ショートコード」とは、Wordpressで使用中のテンプレートフォルダ内にある「functions.php」に関数を記述し、「投稿記事」や「固定ページ」内の表示したい箇所に[ショートコード名]を記述することで、「functions.php」内で設定しておいた関数を呼び出すことができる機能です。
ショートコードのサンプル
function.phpに下記のサンプルを追記します。
1 2 3 4 |
function jisaku_shortcode() { return "自作ショートコード表示テスト"; } add_shortcode('jisaku', 'jisaku_shortcode'); |
add_shortcode()の1つ目のパラメータは、ショートコードで実行する時の名前。
2つ目のパラメータは、実際に定義している関数名 となります。
記事内で使う際の書き方
[jisaku]と記載することで、上記のショートコードに書いた処理を実行することが出来ます。
実装してみました。
[getTime]
↓実装サンプル↓
1 2 3 4 5 |
function getTime_sc() { $nowdatetime = date_i18n("Y-m-d H:i:s"); return "あなたがアクセスした時間は".$nowdatetime."です。"; } add_shortcode('getTime', 'getTime_sc'); |
さいごに
地味かもしれませんがカナリ役に立つので、PHPを使ってあれこれしたい際はショートコードを使って行くことをお薦めします。
※functions.phpを変更する前には、念のためバックアップもお忘れなく!