B3S
menu close

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に下記のサンプルを追記します。

add_shortcode()の1つ目のパラメータは、ショートコードで実行する時の名前。
2つ目のパラメータは、実際に定義している関数名 となります。

記事内で使う際の書き方

[jisaku]と記載することで、上記のショートコードに書いた処理を実行することが出来ます。

実装してみました。

[getTime]

↓実装サンプル↓

さいごに

地味かもしれませんがカナリ役に立つので、PHPを使ってあれこれしたい際はショートコードを使って行くことをお薦めします。
※functions.phpを変更する前には、念のためバックアップもお忘れなく!