脱 Exec-PHP|Post Snippets で快適 PHP・ショートコードの活用

プラグイン&WebAPI活用ガイドブック

WordPressで記事中にWebAPI等を活用しようと、投稿の編集画面で直接PHPを記述しても記事にはソースコードが表示されるだけで、表示されるであろうと思う自分が意図するものが表示されない。

WordPressに精通し、専門知識がある方なら自らテーマの編集を行ったり、プラグインを開発するなりで問題は解決出来るでしょうが、そうでない場合はもう諦めてしまうか、一から学習するか、はたまた他に何か他に解決策はないかと考えます。

直ぐに諦めるのは嫌だし、無の状態から一から学習するなんて面倒で自力じゃとても無理。それでだいたいこの辺でプラグインの使用でなんとかなるんじゃないかと、あれこれネット上を調べまくり徘徊するわけです。

WordPressは世界中で普及し、機能拡張が容易に出来るプラグインが多数開発されています。それなら、PHPプログラムを記事投稿の編集時に使用できるようにする物があっても良いのではないかと考えるのも不思議ではありません。

禁断の Exec-PHP の導入

多くの場合、ここでまずたどり着く代表的なのがExec-PHPではないのでしょうか。(他にもいくつか似たようなものもあるみたいですが。)

Exec-PHP

これを使えばPHPのプログラムがいとも簡単に実行できる。

我が意を得たりと、先人の皆様の知恵や経験を拝借しすぐさまプラグインのインストール、有効化の一連の作業の後、実際に投稿の編集画面に直接PHPを記述するのでした。

出来た、出来た! 簡単、簡単!なのです。

悩み無用、プラグイン一発ですべて解決。

これでやりたいことは出来るようになった。取り敢えず満足なわけです。


Supported by 楽天ウェブサービス

こんな感じで楽天ウェブサービスの楽天市場商品検索APIを使ってPHPファイルを作成すれば楽天市場からキーワードにマッチした商品を表示させることが出来ます。

正直これでほぼ目的は達成されたわけですが、何かしっくりこない、ずっと気になることがありました。

脱 Exec-PHP のススメ

気になっていたのは、Exec-PHPを紹介されている方の殆どが使用に対してあまり積極的でなく、どちらかと言うと使用するのは控えておくのが懸命ではないかと言った意見が多く見られることでした。

当初はあまり気にもせず、別にこれといったトラブルもないのでそのままの状態で使っていました。

しかし、最近になって改めてExec-PHPに関する記事に触れることがあり、そこにはExec-PHPの使用は単に自サイトだけに被害が及ぶだけでなく、脆弱性を突いてウィルスなどを仕掛けられた場合、サイトを訪れた人達に対しても被害が及ぶ場合があるとあります。

ただ自分さえ良ければ、最悪自分だけが被害を被るくらいならしょうがないと言った安易な考えではどうもマズイなと思い、Exec-PHPの代わりとなる新たなもの探すことにしました。

カスタムフィールドという選択肢

記事冒頭にあるこの記事のアイキャッチ画像でもある本です。

アマゾンで中古本を購入しました。

「WordPressプラグイン&WebAPI 活用ガイドブック」ですが、出版日(2013/01/29)を見ても分かるように既に出版から丸4年も経過している本です。

購入前に「なか身!検索」の目次を見てある程度内容は把握し覚悟はできていたので文句はありませんが、流石に記事の内容は賞味期限の過ぎたものもあれば、WebAPIのサービスが終了しているものもあります。しかし、私のように根本的に知識が乏しい人間にとってはそれなりのありがたいヒントとなる事柄も多々あります。

そのひとつが、PHPコードをテーマテンプレートに挿入し、カスタムフィールドを使って記事を作成するというものです。

カスタムフィールドなど今回はじめて知ったのですが、「これはいける!」とばかりに簡単なPHPコードでテストしてみました。

しかしこれが何というのか、上手くいく事もあれば上手くいかない場合もあります。何がどうしてそういった症状になるのか、どこをどう修正すれば良いのかさっぱり分かりません。

基礎からコツコツ学んできたのでなく、いつもその時々の切り貼りだらけの小手先だけのにわか知識では何ともなりません。

変に素人がテーマのテンプレートをいじくり回すも一向に良い結果は望めず最終的には敢え無く撤収となりました。

Post Snippets ショートコードなら何とかなる!

意気消沈するもカスタムフィールドについてあれこれ試行錯誤をする中、ショートコードの存在を知りました。

具体的にどう使うものなのか、自分が使いこなせるものかを調べている時、「Exec-PHPは危険!記事内PHPを Post Snippets で一元化しよう」という記事にたどり着き、この記事が大変わかりやすくとても参考になりました。

英語がトンチンカンな自分にとってこういったサイトは頼りになります。

 こんにちはライトニングです。 私めがPHPを語るなんて甚だ厚かましい話ではありますが、それでもめげずに、使ってみて気に入ったプラグイン「Post Snippets」をご紹介したいと思います。 既にこのプラグインに関しては数多くの紹介記事が

Post Snippetsについて下手に私がしゃしゃり出てあれこれ知ったかぶりの能書きを語るより、詳しい解説は上記のサイトにおまかせするとして、私がこのプラグイン使って何をどうやったかまとめておきます。大したことでもないので皆様にはあまり参考にはならないかもしれませんが、、、。

Post Snippets

HTMLにインラインフレームというものがあります。ご存知かとは思われますが、ページ内に別のページを表示させるものです。

このインラインフレームと同じようなことをWordPress上でショートコードを使って行います。

楽天市場商品検索APIを使ってWordPress関連の商品を表示しているのは、別ページにあるPHPファイルを読み込んでこのページに表示させたものです。

PHPのソースだとこんな感じ。単純明快、わずか数行で解決できる。

<?php 
$url = "http://〇〇sample.com/rakuten.php?query=WordPress";
    $html = file_get_contents($url);
    echo $html;
?>

プログラムファイルを用意しサーバーの適当なところにアップしいつでも呼び出せるようにしておけば、あとは「Post Snippets」の設定画面で必要項目を記入するだけで、PHPをWordPressの投稿編集ページに直接書き込んだのと同じことが出来る。

Post Snippets 設定画面

Snippetの記入欄では最初の <?php と最後の ?> を削除する。

$url = "http://〇〇sample.com/rakuten.php?query={keyword}";
    $html = file_get_contents($url);
    echo $html;

Titleは後で自分にわかるものならなんでも良いがここではrakutenとしておいた。

Variablesにはkeywordと入力して、ShortcodeとPHP Codeにチェックを入れる。

設定画面のSnippet内の{keyword}の部分が変数となり、投稿時の画面のkeywordに対応している。keyword:に続く空欄に検索したいものを入力する。

Post Snippets 投稿画面

wordpressと記入してInsertボタンをクリックするとショートコードで投稿の編集画面には

Supported by 楽天ウェブサービス
と表示される。

プレビューしたり記事を公開すればPHPによるWebAPIで取得した情報が画面に表示される。

元となるPHPのプログラムがまともに動き、Post Snippetsの設定さえ間違わなければいとも簡単である。

ライトニングさんのサイトでPost Snippetsの設定方法の解説がなければさっぱりダメだったかもしれないですが。本当に「Exec-PHPは危険!記事内PHPを Post Snippets で一元化しよう」という記事には助けられました。

Wikipediaの情報を表示する

「WordPress プラグイン&WebAPIの活用ガイドブック」の中で一例としてウィキペディアの情報を表示する「Sinple API Wikipedia」というのが掲載されていたので試してみました。

ポール・マッカートニー
ジェームズ・ポール・マッカートニー(Sir James Paul McCartney, MBE, Hon RAM, FRCM、1942年6月18日 - )は、イギリスのミュージシャン。シンガーソングライターであり、世界で最も有名なマルチプレイヤーの一人でもある。 ファーストネームはジェームズだが、父親も同じファーストネームのためミドルネームのポールを主に用いている。 『ギネス世界記録』に「ポピュラー音楽史上最も成功した作曲家」として認定されている。 1960年代、ロックバンド・ザ・ビートルズのメンバーとして、ジョン・レノンとともに数多くの楽曲を作詞・作曲し、メインボーカルを務めた(レノン=マッカートニーを参照)。解散後は、ソロ歌手およびウイングス(ポール・マッカートニー&ウイングス)などのメンバーとして活躍。デビューから半世紀以上経過した2016年現在でも、第一線で活躍している。左利き。 世界で最も有名なポピュラーミュージシャン、シンガーソングライターの一人である。
(by SimpleAPI:WikipediaAPI)

当たり障りのないところで「ポール・マッカートニー」をキーワードに情報を表示させてみました。これだけだと何処かでコピーしたものを単に貼り付けただけにも見えるけど、Wikipedia APIを駆使しております。

ここででの情報はwikipediaの記述をダイジェストとし表示されるらしく、詳しくはリンク先の本家wikipediaで確認できます。

まとめとして

WordPressでPHPが使えるというのはそれはそれで面白いけど、ただただ実験的に試してみましたという感じでしかない。

根本的にコンテンツが充実していないと楽天の商品を並べたり、Wikipediaの情報を表示したりしてもそれは「枯れ木も山の賑わい」でしかないし、もっと役に立つ実用的な事ができないかと考えるものの、なかなか良いアイデアも簡単には浮かんできそうもありません。

まあ、素晴らしいアイデアがあったとしてもそれを形にする知恵や知識がないのが現状なのですが、、、。

しかし、今回はとりあえず「脱 Exec-PHP」に成功したということで良しとしましょうか。

スポンサーリンク