Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php wordpress中的自定义搜索_Php_Wordpress_Search_Form Submit - Fatal编程技术网

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);