Php wordpress中的自定义搜索
我创建了一个自定义模板,我需要在其中创建一个搜索表单,并将结果显示在一个简单的列表中。我尝试以这种方式创建表单:Php wordpress中的自定义搜索,php,wordpress,search,form-submit,Php,Wordpress,Search,Form Submit,我创建了一个自定义模板,我需要在其中创建一个搜索表单,并将结果显示在一个简单的列表中。我尝试以这种方式创建表单: <form role="form" action="../wp-content/api/search-json.php?key" method="post" id="searchform"> <div class="form-group"> <input id="search-protocol" type="text" cla
<form role="form" action="../wp-content/api/search-json.php?key" method="post" id="searchform">
<div class="form-group">
<input id="search-protocol" type="text" class="form-control" name="typeahead"/>
</div>
<button type="submit" class="btn btn-default">Cerca</button>
</form>
search-json.php页面如下:
<?php
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
global $wpdb;
$key=$_GET['key'];
$wpdb->get_results("SELECT * FROM list WHERE code LIKE '%{$key}%'");
$json = $wpdb->last_result;
echo json_encode($json);
?>
但是我不能展示结果。我需要一个非常简单的列表。如果要处理$\u GET['key'],则表单必须使用GET方法。或者您可以将其更改为$key=$\u POST['key'] 另外,我不查看$key变量在表单中的输入位置。应该是这样的
<input id="search-protocol" type="text" class="form-control" name="key"/>
也许只需要使用get_search_表单,wordpress的函数
如果需要,您可以重写该函数,只需在主题中创建一个searchform.php。如果我在$key=$\u POST['key']中进行更改,我会遇到一个内部服务器错误:如何将结果放入输入下的列表中?好的,很抱歉,我忘记了;$key=$\u POST['key']之后。。但是它在页面中用json重定向我,而不过滤查询。。我需要在输入过滤下面显示一个列表,我在输入页面上用JSON写的值是您查询的结果吗?您是否更改了输入字段的名称?我现在正在使用您的表单。但simple会将整个json带到search-json.php页面。似乎查询只是从列表中选择*而没有任何WHERE条件请检查-可能您的表包含前缀。还可以尝试使用$prepare=$wpdb->prepareSELECT*从列表中选择代码,如%s,$key$结果=$wpdb->get_results$prepare;
<form role="form" action="../wp-content/api/search-json.php" method="post" id="searchform">
<div class="form-group">
<input id="search-protocol" type="text" class="form-control" name="key"/>
</div>
<button type="submit" class="btn btn-default">Cerca</button>
</form>
$prepare = $wpdb->prepare("SELECT * FROM list WHERE code LIKE %s", $key);
$results = $wpdb->get_results($prepare);
echo json_encode($results);