外部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
ショートコードを使用した場合、しない場合のそれぞれの出力されたHTMLのソースはどのようになっていますか?
ありがとう御座います。
以下のようになっています。
########### ショートコード使わず表示 ###########
//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が変更されています。」が表示される。
ここに書かれたsourceはブラウザが実際に出力したHTMLでしょうか?
そうであれば、開発者ツールのNetowrkタブでPOSTのリクエスト内容に差が無いかご確認ください。
※情報は正確にお願いします。
質問内容でsearch.phpのソースコードを提示されていますが、どちらのURLでも使われていません。
ショートコードあり、なしでURLも異なりますが、PHPのソースコードは完全に同一でしょうか?
tabuu様
実際にブラウザが出力したHTMLですが
今後、正確な情報を記載するように気をつけます。
現在解決しまして、原因はinputタグのnameでした。
このたびはお手間を頂き誠に有難う御座いました。
回答1件
あなたの回答
tips
プレビュー