WordPressで記事中にWebAPI等を活用しようと、投稿の編集画面で直接PHPを記述しても記事にはソースコードが表示されるだけで、表示されるであろうと思う自分が意図するものが表示されない。
WordPressに精通し、専門知識がある方なら自らテーマの編集を行ったり、プラグインを開発するなりで問題は解決出来るでしょうが、そうでない場合はもう諦めてしまうか、一から学習するか、はたまた他に何か他に解決策はないかと考えます。
直ぐに諦めるのは嫌だし、無の状態から一から学習するなんて面倒で自力じゃとても無理。それでだいたいこの辺でプラグインの使用でなんとかなるんじゃないかと、あれこれネット上を調べまくり徘徊するわけです。
WordPressは世界中で普及し、機能拡張が容易に出来るプラグインが多数開発されています。それなら、PHPプログラムを記事投稿の編集時に使用できるようにする物があっても良いのではないかと考えるのも不思議ではありません。
目次
禁断の Exec-PHP の導入
多くの場合、ここでまずたどり着く代表的なのがExec-PHPではないのでしょうか。(他にもいくつか似たようなものもあるみたいですが。)
これを使えばPHPのプログラムがいとも簡単に実行できる。
我が意を得たりと、先人の皆様の知恵や経験を拝借しすぐさまプラグインのインストール、有効化の一連の作業の後、実際に投稿の編集画面に直接PHPを記述するのでした。
出来た、出来た! 簡単、簡単!なのです。
悩み無用、プラグイン一発ですべて解決。
これでやりたいことは出来るようになった。取り敢えず満足なわけです。
![いちばんやさしいWordPressの教本 第5版 5.x対応 人気講師が教える本格Webサイトの作り方 (いちばんやさしい教本シリーズ) [ 石川 栄和 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![いちばんやさしい WordPress 入門教室 [ 佐々木恵 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![1冊ですべて身につくWordPress入門講座 [ Mana ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![ビジネスサイトを作って学ぶWordPressの教科書 Ver.5x対応版 [ プライム・ストラテジー ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![WordPress 本格Webサイト構築パーフェクトマスター [第2版] [ 音賀鳴海 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![[改訂版]WordPress 仕事の現場でサッと使える! デザイン教科書[WordPress 5.x対応版] [ 中島真洋=著/ロクナナワークショップ=監修 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![本当によくわかるWordPressの教科書 改訂2版 [ 赤司 達彦 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![エンジニアのためのWordPress開発入門 (Engineer’s Libraryシリーズ) [ 野島祐慈 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![WordPressレッスンブック 5.x対応版 [ エビスコム ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
![WordPress Perfect GuideBook 5.x対応版 [ 佐々木恵 ]](https://ukeuri.com/wp/wp-content/themes/simplicity2/images/1x1.trans.gif)
Supported by 楽天ウェブサービス
こんな感じで楽天ウェブサービスの楽天市場商品検索APIを使ってPHPファイルを作成すれば楽天市場からキーワードにマッチした商品を表示させることが出来ます。
正直これでほぼ目的は達成されたわけですが、何かしっくりこない、ずっと気になることがありました。
脱 Exec-PHP のススメ
気になっていたのは、Exec-PHPを紹介されている方の殆どが使用に対してあまり積極的でなく、どちらかと言うと使用するのは控えておくのが懸命ではないかと言った意見が多く見られることでした。
当初はあまり気にもせず、別にこれといったトラブルもないのでそのままの状態で使っていました。
しかし、最近になって改めてExec-PHPに関する記事に触れることがあり、そこにはExec-PHPの使用は単に自サイトだけに被害が及ぶだけでなく、脆弱性を突いてウィルスなどを仕掛けられた場合、サイトを訪れた人達に対しても被害が及ぶ場合があるとあります。
ただ自分さえ良ければ、最悪自分だけが被害を被るくらいならしょうがないと言った安易な考えではどうもマズイなと思い、Exec-PHPの代わりとなる新たなもの探すことにしました。
カスタムフィールドという選択肢
[amazonjs asin=”4798126128″ locale=”JP” title=”WordPressプラグイン & WebAPI 活用ガイドブック Version 3.x対応”]
記事冒頭にあるこの記事のアイキャッチ画像でもある本です。
アマゾンで中古本を購入しました。
「WordPressプラグイン&WebAPI 活用ガイドブック」ですが、出版日(2013/01/29)を見ても分かるように既に出版から丸4年も経過している本です。
購入前に「なか身!検索」の目次を見てある程度内容は把握し覚悟はできていたので文句はありませんが、流石に記事の内容は賞味期限の過ぎたものもあれば、WebAPIのサービスが終了しているものもあります。しかし、私のように根本的に知識が乏しい人間にとってはそれなりのありがたいヒントとなる事柄も多々あります。
そのひとつが、PHPコードをテーマテンプレートに挿入し、カスタムフィールドを使って記事を作成するというものです。
カスタムフィールドなど今回はじめて知ったのですが、「これはいける!」とばかりに簡単なPHPコードでテストしてみました。
しかしこれが何というのか、上手くいく事もあれば上手くいかない場合もあります。何がどうしてそういった症状になるのか、どこをどう修正すれば良いのかさっぱり分かりません。
基礎からコツコツ学んできたのでなく、いつもその時々の切り貼りだらけの小手先だけのにわか知識では何ともなりません。
変に素人がテーマのテンプレートをいじくり回すも一向に良い結果は望めず最終的には敢え無く撤収となりました。
Post Snippets ショートコードなら何とかなる!
意気消沈するもカスタムフィールドについてあれこれ試行錯誤をする中、ショートコードの存在を知りました。
具体的にどう使うものなのか、自分が使いこなせるものかを調べている時、「Exec-PHPは危険!記事内PHPを 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の投稿編集ページに直接書き込んだのと同じことが出来る。
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:に続く空欄に検索したいものを入力する。
wordpressと記入してInsertボタンをクリックするとショートコードで投稿の編集画面には
Supported by 楽天ウェブサービス
と表示される。
プレビューしたり記事を公開すればPHPによるWebAPIで取得した情報が画面に表示される。
元となるPHPのプログラムがまともに動き、Post Snippetsの設定さえ間違わなければいとも簡単である。
ライトニングさんのサイトでPost Snippetsの設定方法の解説がなければさっぱりダメだったかもしれないですが。本当に「Exec-PHPは危険!記事内PHPを Post Snippets で一元化しよう」という記事には助けられました。
Wikipediaの情報を表示する
「WordPress プラグイン&WebAPIの活用ガイドブック」の中で一例としてウィキペディアの情報を表示する「Sinple API Wikipedia」というのが掲載されていたので試してみました。
(by SimpleAPI:WikipediaAPI)
当たり障りのないところで「ポール・マッカートニー」をキーワードに情報を表示させてみました。これだけだと何処かでコピーしたものを単に貼り付けただけにも見えるけど、Wikipedia APIを駆使しております。
ここででの情報はwikipediaの記述をダイジェストとし表示されるらしく、詳しくはリンク先の本家wikipediaで確認できます。
まとめとして
WordPressでPHPが使えるというのはそれはそれで面白いけど、ただただ実験的に試してみましたという感じでしかない。
根本的にコンテンツが充実していないと楽天の商品を並べたり、Wikipediaの情報を表示したりしてもそれは「枯れ木も山の賑わい」でしかないし、もっと役に立つ実用的な事ができないかと考えるものの、なかなか良いアイデアも簡単には浮かんできそうもありません。
まあ、素晴らしいアイデアがあったとしてもそれを形にする知恵や知識がないのが現状なのですが、、、。
しかし、今回はとりあえず「脱 Exec-PHP」に成功したということで良しとしましょうか。