wordpressでショートコードを利用する。
wordpressでショートコードを利用し、固定ページ内で検索したSQL結果を同じページ内に返すためにはどうすればよろしいでしょうか。
やりたいことは以下の通りです。
固定ページ内にフォームを設置し、指定されたキーワードをPOSTして同一ページ内で渡し、
そのPOSTされたデータをSQLに付加してデータベース内を検索します。
/** 検索フォームを設置する。
*
*/
print "<form action=\"http://www.abcd.com/?page_id=22\" method=\"post\">";
//同一ページ内に返すためにはパーマリンクを使うとの情報があったのでパーマリンクの値を直接しています。
print "<input type=\"text\" name=\"search\">";
print "<input type=\"submit\" value=\"検索\">";
print "</form>";
/**
* 検索フォームに検索ワードが指定されている場合は、LIKE検索する。
*/
if ( isset( $_POST['search'] ) ) {
$search = $_POST['search'];
$search = "'%{".$search."}%'";
$sql = $pdo->query("SELECT a,b,c,d FROM table WHERE (concat(a,b,c,d) LIKE :search");
$data = pager_search($sql);
} else {
$sql = $pdo->query("SELECT a,b,c,d FROM table");
$data = pager_search($sql);
}
データベースを検索した結果は、$sqlに格納されpager_search()関数に渡されます。
しかし、
Fatal error: Call to a member function fetchAll() on a non-object in /var/www/html/wp-content/themes/kotetsu/functions.php on line 332
検索結果が空白のようで、pager_search()内のfetchall()でエラーとなります。
なお、SELECT a,b,c,d FROM table WHERE (concat(a,b,c,d) LIKE %{ISBN}%; としてデータベース内で直接SQL文を発行すると正常に検索結果が表示されます。
$sqlに空白ではなく、検索結果を格納するためにはほかにどのような処理が必要になるのでしょうか。
お力添えを頂けますと幸いでございます。
よろしくお願い申し上げます。
お礼
ありがとうございます! 助かりました。