WP投稿記事本文中にPHP構文を使う場合にはExec-PHP

先日、WordPressで固定ページ主体のサイトを作っていた時のこと。

まず、外部エディタでサイトを作成してからWordPressに組み込むという手順で進めていました。

エディタではうまく作成でき、IE他、すべてのブラウザでチェックを行い、無事問題なく表示されていました。

そして、早速、WordPressに組み込む作業に取り掛かりました。

ヘッダー、サイドバー、フッターなどの共通部分はもちろんテンプレートを作成し、中身は投稿記事本文中にhtmlをコピペしました。

これで完了と思い、いざサイトを表示させてみると、サイドバーがカラム落ちしているだけではなく、大幅にレイアウトが崩れていました。

これはどうしたことかとひとつひとつチェックをしてみましたが、cssも特に問題ありませんでした。

なにより、エディタで作成したファイルをブラウザで見ても崩れはありません。

何度も見直した結果、どうやらレイアウト崩れを起こしている箇所が、画像が入っているフォルダへのパスを以下のようなテンプレートタグで記述している箇所でした。

 

<img src="<?php bloginfo('template_url') ?>●●●.jpg" />

 

お恥ずかしい話ですが、うっかり、WordPress記事本文中ではPHPは効かないということを忘れていたのです。

テンプレートタグといえどもPHP構文です。

投稿記事本文中でPHPを使用する場合は、PHPを有効にしなければなりません。

プラグインの『Exec-PHP』の存在を思い出し、早速インストールしてみると、思った通り、一発でレイアウト崩れも解消されていました。

ブログでは、あまり投稿記事本文中にPHPを使用するということはないかもしれませんが、固定ページで、例えば、トップページにブログの新着情報を掲載するなどでPHPを使用する場合もあるかと思います。

もし投稿記事本文中でPHPを使用しなければならい状況が出てきた場合は、『Exec-PHP』をインストールしておくと便利かもしれません。

『Exec-PHP』の使い方

他のプラグインと同様に、WordPressのダッシュボードの[プラグイン]→[新規追加]で『Exec-PHP』を検索。

おそらく一番最初に出てきますので、[いますぐインストール]→[有効化]します。

このままでもすぐに使えますが、固定ページに限らず、ブログなども含め、新規投稿を書くために[新規投稿記事の追加]画面の上部に、以下のような警告文が表示されてしまいます。

Exec-PHP WYSIWYG Conversion Warning. Saving this article will render all contained PHP code permanently unuseful. Even if you are saving this article through the Code editor. You can turn off this warning in your user profile. Ignore this warning in case this article does not contain PHP code. Read the Exec-PHP documentation if you are unsure what to do next.

この警告文が出たままExec-PHPを使用し続けても、今のところ特に問題は出ていませんが、この警告文を以下の設定を行うことにより、表示させないようにすることもできます。

WordPressのダッシュボードの[ユーザー]→[あなたのプロフィール]→[Exec-PHP Settings]にチェックを入れ、[プロフィールを更新]ボタンをクリックし保存します。

exec-phpの警告文

これで先ほどの警告文が表示されないようになりました。

『Exec-PHP』に関して追記

上述のように、これまで、WordPressの記事本文中で、PHP構文を記述する際には、とても重宝した『Exec-PHP』なのですが、その後、『Exec-PHP』の利用停止をせざるを得なくなり、現在は利用しておりません。

その後も折あるごとに、『Exec-PHP』はセキュリティに問題があるので、あまり使わない方が良いとの記事も見かけていたのですが、特に支障がない為、使用し続けていました。

しかし、PHP7.2へのバージョンアップを行う際に、ついに『Exec-PHP』の存在が支障をきたすことになったのです。

経緯については⇒「PHP7.2 画面が真っ白になった時のプラグインへの対策」を参照。

上記記事で詳細を掲載していますが、要するに、『Exec-PHP』とPHP7.2との互換性が無く、PHP7.2に上げた際に、WordPressサイトが表示されず、画面が真っ白になってしまうという現象が生じてしまいました。

ちなみに、その際、事前に『Exec-PHP』のバージョンは最新のものに更新していたのですが、それでも互換性が無かったようです。

仕方ないので、『Exec-PHP』を停止にして初めて、PHP7.2にバージョンアップができたという経緯があります。

従って、もし、これからPHP7.2のバージョンアップをしようとされている方は、いずれ使えなくなると予想されますので、『Exec-PHP』に代わるプラグインを探すか、あるいは、プラグインに頼らず、何らかの対応をする必要があるのではないでしょうか。

プラグインを使わない方法としては、function.phpに動作させたいPHPコードを記述し、ショートコードを定義し、そのショートコードを記事本文中に記載し、呼び出すという方法もあります。

『Insert PHP Code Snippet』で代用

今回、上記function.phpでショートコードを作成するという方法はとらず、プラグインで対処することにしました。

『Exec-PHP』に代わるプラグインとして、『Insert PHP Code Snippet』で代用することにしました。

『Insert PHP Code Snippet』の使い方は、とても簡単でした。

『Insert PHP Code Snippet』をインストールし、有効化すると、管理画面の左メニュー欄に[XYZ PHP Code]という項目が追加されますので、[XYZ PHP Code]をクリックします。

そして、[PHP Code Snippets]ページの[Add New PHP Code Snippet]ボタンを押します。

php-code-snippetsの使い方1

すると、PHPコードを追加するページに切り替わりますので、まず、[Tracking Name]に任意の名称を記入します。

名称は実際に記事に挿入するショートコードに含まれるもので、日本語とアンダーバーは使えないそうです。

次に[PHP code]欄に、こちらが動作させたいPHPコードを記入し、[Creat]ボタンを押します。

php-code-snippets使い方2

[Snippet Short Code]欄にショートコードが表示されていますので、[xyz-ips snippet=”○○○”]の括弧([])ごとコピーして、動作させたいページの箇所にペーストします。

php-code-snippetsの使い方3

確認して、ちゃんと動いていれば完了です。