WordPressのプラグインで独自のページを作る方法がわからない
WordPressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればいいのか?開発している宿の予約プラグインで、一般の人が見るカレンダーや予約フォームなどを、どう実装すればいいのか?例えばショッピングカートのページなども同様です。
ショートコードを使う方法
簡単に思いついたのは「ショートコード」。これを作って固定ページで予約フォームなどを用意しておきショートコードを貼り付ける方法です。
固定ページなので上下に好きな文章や画像をいれることが簡単です。多くのプラグインで使われているスタンダードな方法です。
専用のファイル(テンプレート)を用意する方法
次に考えたのは専用のテンプレートファイルを用意する方法。実際に実現できるのかどうかはわかりません(キリッ。これはショートコードよりもカスタマイズの自由度が増します。しかしショートコードよりもカスタマイズが難しいのではないかと思います。
ショートコードも同様ですがバージョナップなども面倒になりそうです。
実物を調べてみる
そこで、実際にどうやって実現されているのか?Welcart e-Commerceというショッピングカートプラグインを探って見ることにしました。
最初に調べたのは「カートに入れる」ボタンの form action の値です。
<form action="http://********.jp/usces-cart" method="post">
コレを見るとドメイン直下の「usces-cart」へ飛びます。サーバーのフォルダを確認してみても、当然ですがこのような名前のフォルダやファイルは存在していません。意味がよく分からないので、プラグインフォルダの中身を覗いてみます。そういえば前にカートのデザイン調整したことあったのに忘れてました。
ここで使われているHTMLはプラグインフォルダ内のtempletes/cart/cart.php というファイルのようです。ソースを見て検索して確認しました。このファイルは変数の設定が並べてあるファイルで、これらの変数を別の場所から読み込んでいるようです。詳しく見ると templates フォルダ内のファイルはほとんどこんな感じで変数への代入がファイルになっています。
そこで「cart/cart.php」を読み込んでいるファイルを検索して探しだしてみます。するとたったひとつのファイルで読み込まれていることを発見しました。
/classes/usceshop.class.php
function filter_cartContent($content) { global $post; $html = ''; switch($this->page){ case 'cart': $temp_path = apply_filters('usces_template_path_cart', USCES_PLUGIN_DIR . '/templates/cart/cart.php'); include( $temp_path ); break;
8000行近くある大きなファイルです。後半部分に以上のような読み込み部分があります。
ここから関数「filter_cartContent」を追いかけたり「$this->page」を追いかけたり…挫折しました(涙)。$pageへの読み込みが私には理解出来ませんでした。
というわけで、スタンダードな固定ページへのショートコードが一番いいですね!というヘタレ記事になりました〜。
リベンジで違うプラグインを探検してみます。今度は理解できたら記事にします。すいません。
Sponsored Link
関連記事
-
ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」
前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(12)空室管理画面 C
空室情報のデータベース処理を一気に終えました。ごちゃごちゃしてきたので、もっとスッキリ書く方法が無い
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(3)
前回のソースがイマイチだったので若干書き直しました。しかし、これで正しいのかも疑問なんですが、取り敢
-
WordPressのプラグイン開発を効率的にするフレームワークたち
Wordpressでプラグインを作っていて「フレームワーク使えないのかな?」と疑問を持ちました。そこ
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(6)初期設定画面
ここまでで、ひと通りの仕組みというか流れは理解できたような気がします。まずは初期設定画面から制作して
ご質問は掲示板へお願いいたします。