web-dev-qa-db-ja.com

フォーム送信を処理するページを作成する

私は現在、いくつかのカスタム投稿タイプ「ショップ」(実際には投稿よりもページに似ている)と、それらの投稿タイプにリンクされたカスタム分類「製品」を持っています。

ユーザーが送信時に選択した商品に関連するショップ(タイトルおよびその他の投稿メタ)を一覧表示するページを(ショートコードで)選択できるフォームを作成しようとしています(私は)。 s).

私はフォームを持っていますが、投稿とそれに続く表示ページを処理するのが最善の方法であるかどうかわからないだけです。

add_rewrite_endpoint() 状態のコーデックスページに気づきました

これはあらゆることに使用できます。

  • ajaxハンドラー
  • フォーム送信ハンドラ
  • 代替通知ハンドラ

しかし、これを達成する方法についてこれ以上の情報はありません。

フォーム送信の取り扱いに関する指針があれば素晴らしいでしょう。ありがとう。

編集:これについて、さらにフォーム送信ページに、選択した用語を表すNice URLにリダイレクトさせます。例えば

  1. ユーザーが商品の「本」を選択し、送信します
  2. フォームが処理URLに送信するまたは何らかの種類のフックが送信をキャッチする
  3. ブラウザは "shop/books"にリダイレクトされます
  4. 「本」商品のタグが付けられた「ショップ」ページが表示される

私の質問は次のように分類できます。

  1. フォームのaction属性でどのURLを使用しますか?これでも必要ですか?
  2. フォーム送信はどこで処理しますか?特定のファイルを作成しますか、それともある種のアクションフックを登録できますか。私は他のURLにリダイレクトするためにLocationヘッダを送信したいので、これはブラウザに出力が送信される前に行われる必要があることを覚えておいてください。
  3. "shop /%product%"リクエストを受け入れてそれに応じて結果を表示するように何かを設定するにはどうすればいいですか?

長々とした質問ですみませんが、私はWordpress APIとドキュメンテーションに慣れるのに苦労しています。

5
Phil Brown

これは実際にはとても簡単です(少なくとも#1と#2はそうです):

  1. テーマテンプレートファイルをロードする任意のURLを使用できます。例えば、あなたはWordPress " ページ "とあなたの を作成することができます。 )ページテンプレート PHPの$_POST配列を使って<form>値を取得できます。

  2. 正当な理由がない限り、リダイレクトを行う必要はありません。できますが、私はあなたが必要としているとは思わないし、それは単にあなたの仕事をより複雑にするだけです。あなたが本当に したいのであれば、この答え はその方法を教えてくれます。

  3. あなたの "shops/%product%" URLであなたが達成しようとしていることに混乱しています。最初は、カスタム投稿タイプとして「店舗」、分類法として「商品」を選んだのは間違っているようです (あなたが多くの異なった店を代表しようとしているのでなければ、すなわちあなたのサイトが多くの異なった商人のためのマーケットプレイスになろうとしているのであれば。 だから私はあなたに代わりに "Product"のカスタム投稿タイプを作成したいと思うようです。 (分類法)をクリックすると、カスタム投稿タイプを登録すると、タイプproducts/%product%のURLが表示されます。それとも、#3のために何をしようとしているのか誤解していませんか。

5
MikeSchinkel