質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

1201閲覧

wordpress:ショートコードで検索フォームを表示すると$_POSTが取れない。

rakiamusic

総合スコア19

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2020/03/18 17:28

編集2020/03/19 02:27

外部DBから商品情報を取得して、ワードプレスの固定ページに表示するプログラムを作成しています。

現在の状況

表題の通り、ショートコードを使用して固定ページに検索フォームを表示し、
商品検索を行いたいですが$_POSTが取れず動かない(削除案内ページに遷移する)状態です。

※ショートコードを使用しない場合は問題なく検索結果の表示が可能です。

やりたいこと

ショートコードで表示した検索フォームから、
商品検索を行うにはどうすれば良いでしょうか?

どなたかご教授頂ければ助かります。

wordpress

1[myphp file='search'] //固定ページのショートコード

php

1-----------search.php------------------- 2 3//フォームを表示 4$form='<form method="post"> 5<input type="text" name="name" placeholder="商品名入力"> 6<input type="submit" value="送信"> 7</form>'; 8echo $form; 9 10//フォームデータを取得 ↓★ここの$_POST["name"]に何も入ってこない状態です。 11$name = htmlspecialchars($_POST["name"], ENT_QUOTES, 'UTF-8'); 12 13省略〜DBから製品情報を取得するプログラム 14 15//該当結果を返す 16return $result; 17 18//htmlを生成 19if($result){ 20 $html .= "<table>"; 21 $html .= "<tr><th>カテゴリ名</th><th>タイトル</th></tr>"; 22 foreach ($result as $val){ 23 $html .= "<tr><th>".$val["Data"]["category"]."</th>"; 24 $html .= "<th>".$val["Data"]["title"]."</th></tr>"; 25 } 26 $html .= "</table>"; 27 echo $html; 28 29}else{ 30 echo "検索結果はありませんでした。"; 31} 32

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tabuu

2020/03/18 23:15

ショートコードを使用した場合、しない場合のそれぞれの出力されたHTMLのソースはどのようになっていますか?
rakiamusic

2020/03/19 02:25 編集

ありがとう御座います。 以下のようになっています。 ########### ショートコード使わず表示 ########### //URL https://test.jp/test/wp-content/themes/mytheme/pricelist-search.php //sorce <form method="post"> <input type="text" name="name" placeholder="商品名入力"> <input type="submit" value="送信"> </form> 検索後(URLは変わらず) //sorce <form method="post"> <input type="text" name="name" placeholder="商品名入力"> <input type="submit" value="送信"> </form> <p>検索結果</p> <table> <tr><th>カテゴリ名</th><th>タイトル</th></tr> <tr><th>おもちゃ</th><th>ミニカー1</th></tr> <tr><th>おもちゃ</th><th>ミニカー2</th></tr> </table> ########### ショートコードあり ########### //URL https://test.jp/test/searchtest/ //sorce <form method="post"> <input type="text" name="name" placeholder="商品名入力"> <input type="submit" value="送信"> </form> 検索後(URLは変わらず画面が遷移) 「あなたがアクセスしようとしたページは削除されたかURLが変更されています。」が表示される。
tabuu

2020/03/19 03:30

ここに書かれたsourceはブラウザが実際に出力したHTMLでしょうか? そうであれば、開発者ツールのNetowrkタブでPOSTのリクエスト内容に差が無いかご確認ください。 ※情報は正確にお願いします。 質問内容でsearch.phpのソースコードを提示されていますが、どちらのURLでも使われていません。 ショートコードあり、なしでURLも異なりますが、PHPのソースコードは完全に同一でしょうか?
rakiamusic

2020/03/19 06:38

tabuu様 実際にブラウザが出力したHTMLですが 今後、正確な情報を記載するように気をつけます。 現在解決しまして、原因はinputタグのnameでした。 このたびはお手間を頂き誠に有難う御座いました。
guest

回答1

0

ベストアンサー

ショートコードで表示したらというよりWPに組み込んだら
という問題であるかと思います

nameって名前がダメです

WP_queryがURLパラメータから投稿のスラッグとして受け取る値です

この他このWP_queryのパラメータとして設定されているキーは
全てではないにしろ大半をWPがURLパラメータから受け取ってクエリ生成に用います

WPのページにURLパラメータを付してフォーム送信する場合は
確実にユニークとなるようなnameを設定するのが無難です

投稿2020/03/19 05:01

KazuhiroHatano

総合スコア7802

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rakiamusic

2020/03/19 06:41

KazuhiroHatano様 有難う御座います! nameをユニークにしたところ解決しました。 WP_queryについて勉強になります。 有難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問