一向に進まないマッチングサイト作り、ちょっと挫折気味ですが・・萎えてはいけない萎えてはいけない。
ということで今回は表題の通り「フロントページから思ったフォームと項目で投稿し、思ったように表示する」こと
何がしたいのか、混沌としてきたのでもう一度整理
マッチングサイトの投稿でやるべきこと
マッチングサイトと言えばやはりワードプレスサイトであることが分からないように、フロントページから投稿させること。この投稿でやりたいことは・・・
1.フロントページに入力してもらう値はできるだけ細かく項目を設けること
2.項目は投稿内容に合うようになるべく決まったデータを入力してもらうようにすること
3.フロントページから投稿するにあたっては必ずユーザー登録させること(スパム対策)
4.フロントページから投稿されたものが記事としていい形で表示できるようにすること
ですね。
これを実装するのにプラグイン使いまくりで作るには苦労しました(というか現在進行形)。
マッチングサイトの投稿でやるべきことを実現するプラグインたち
フロントページに任意のフォームを作れるプラグイン「WP User Frontend」
フロントページから記事の投稿を可能にするプラグインはいろいろありましたが、ほとんどがバックエンドの機能である「タイトル」「本文」「カテゴリー」「タグ」などをフロントエンドに表示するというもので、ユーザー権限とセットになっているものもありました。実に何十個とプラグインを導入してみましたが、「思ったフォームで入力してもらう」というのが難しいようで、半ばあきらめかけていましたが、ようやく見つけました。プラグインの名前は「WP User Frontend」。
この「WP User Frontend」を含め試したプラグインは大抵英語のみのもので、半分位翻訳したところで「機能が希望と違う・・・」と捨てて来たので今回は翻訳なしでチャレンジ。使えるようだったら翻訳すればいいやという感覚で試しました。
このプラグインは
・フロントエンドからの投稿
・登録必須なので、投稿フォームを呼び出したときにログイン判定をしてログインしていなければログイン画面(これもフロントエンド用)を出すようになっている
・カスタムフィールドが使えるので、任意の項目と答えが作れる。もちろんテキストだけでなく、選択方式も使える
ひとまずこれを使ってみることにしました。
ちなみにACF(Advanced Custom Fields)とCustom Post Type UIとFront End Form Extension for ACF (Free)を使ってもこのプラグインと同じ動作ができそうでしたが、3つもプラグイン使うことになるので今回はパスしました。
テーマをいじらなくても自動でテンプレートを挿入できる「Simple Content Templates」
投稿のテンプレートを作るのは知識がないとなかなか大変そうで、しかも今回使う「Atahualpa」テーマは複雑でさらにハードルが高い。「WP User Frontend」で入力した項目は表題と答えが順番に羅列はしてくれますが味気ない。そこで、フロントエンドから投稿した段階で作っておいた疑似テンプレート(本文にテキストなどとフィールドに入力した値)が自動で挿入できたら・・・なんて夢のような機能を探したら、ありました。
この「Simple Content Templates」であらかじめ疑似テンプレートを作っておくと、投稿を新規作成する段階で自動的にWordPressの投稿本文へコード挿入してくれるスグレモノ。難点は全部の記事作成時に挿入されてしまう点ですが、マッチングサイトはフリマの商品登録などといった1つの投稿形式しか扱わない可能性が高いのでひとまず使ってみることにしました。まあ、知識が身について投稿テンプレートを触れるようになったら後々考えればいいのでひとまず動かすこと優先。
ちなみに本文は何も入力しないようにして、「Add post url」プラグインを使ってそこにコード書けば一緒のこと?とも思ったのですが、これは何か他に使おうと思うので「Simple Content Templates」を使うことにしました。
この2つのプラグインで「マッチングサイトの投稿でやるべきこと」はクリアできそうです。
それぞれのプラグインの解説は設定しながら書いていくのでできたら記事書いてリンク張ろうと思ってますのでお楽しみに。
・・・問題発生・・・
「WP User Frontend」で作ったフォームに入力して投稿すると「Simple Content Templates」が動作しないことが発覚!!
とりあえず「WP User Frontend」に表示機能があるのでそれを使ってみることにします。
が、ちょっと格好は悪いですが裏ワザ的に、
「WP User Frontend」のフォーム要素として、記事の本文が挿入できる(通常のフロントエンド投稿機能では普通です)ので、これを1行表示した上でこの中にコードを書いておけばテンプレート化できる、まさに青天の霹靂です。フォームを表示したときにこの項目が表示されてしまいますが、「管理用」などと記載しておけばある程度コード改変されることは避けられるのでは?と安易な発想。
参考
テーマにカスタム投稿タイプを作り、専用のテンプレートを作成して表示すれば、上記の問題は解決できます。参考までに「Simplicity2」テーマでテンプレートを作る方法を紹介します。他のテーマでもファイル数やファイル名は違いますが、構造は共通なので見てみてくださいね。