Php WordPress中的AJAX搜索

Php WordPress中的AJAX搜索,php,jquery,ajax,wordpress,search,Php,Jquery,Ajax,Wordpress,Search,我的目标是“ajaxify”WordPress搜索。到目前为止,我已经编写了一个AJAX调用,它将用户提交的查询字符串传递给我的PHP处理程序。我正在努力解决的部分是: 1 PHP处理程序 WordPress已经有了自己的PHP搜索脚本,我想利用它。如何将其集成到PHP处理程序中?有没有简单的方法,或者我需要自己重写搜索脚本 2 AJAX响应 如何将搜索结果从PHP处理程序传递回脚本?我会把整个HTML作为字符串传递吗?类似于echo-json\u-encode($html) 我意识到我的问题相

我的目标是“ajaxify”WordPress搜索。到目前为止,我已经编写了一个AJAX调用,它将用户提交的查询字符串传递给我的PHP处理程序。我正在努力解决的部分是:

1 PHP处理程序

WordPress已经有了自己的PHP搜索脚本,我想利用它。如何将其集成到PHP处理程序中?有没有简单的方法,或者我需要自己重写搜索脚本

2 AJAX响应

如何将搜索结果从PHP处理程序传递回脚本?我会把整个HTML作为字符串传递吗?类似于
echo-json\u-encode($html)

我意识到我的问题相当广泛,所以不需要精确的代码示例。对于我应该采取的方法,我更需要一些高层次的想法


提前感谢。

Wordpress'搜索处理程序实际上根本不是一个处理程序。它是
WP\u查询
类的一部分。从技术上讲,有一些特殊的方法可以解析搜索字符串并返回相关结果,但您不必对这些方法做任何处理。要使用Wordpress搜索帖子,只需将
s
参数添加到查询中,如下所示:

 $args = array(
   'post_type' => 'post',
   'posts_per_page' => -1,
   's' => 'foobar'
 );
 $query = new WP_Query($args);

 return json_encode($query);
请确保您在一个文档中编写AJAX,这样人们就不能在您的数据库中提交自己的查询。Wordpress将阻止SQL注入,但它仍然比抱歉更安全

function SearchConstructor(value){
    function myAjaxCall(){
        $.ajax({
            // Your AJAX Call
        })
        .done(function( msg ) {
            return msg;
        });
    }

    this.get = function(){
        return myAjaxCall.call(this);
    }
};
下面是关于保护函数的内容。

我是的作者,所以我可以在这里为您提供一些帮助

你肯定应该熟悉你喜欢的方法。这样,您的代码就足够灵活,可以处理您或使用您的代码的人将来可能希望配置WordPress的所有不同方式

<> >而不是只使用<代码> JSONY-EnCODE()/Cyto>发送响应,请考虑使用新的和函数来包含一些额外的状态信息,这些信息在调试时可能会有用。 最后,请记住我的搜索插件是麻省理工学院授权的,所以请随意翻阅代码,看看我是如何做的。这可能比你想做的要复杂得多,但你可能会从中得到一些提示


祝你好运

如果需要考虑数据传输,我建议将数据作为JSON对象发送回,而不是完整的HTML。您将保存字节和字节。您有权访问内置的PHP搜索脚本函数吗?您可以撕开文件,将其代码复制/粘贴到您自己的函数中。只是从一个广泛的AJAX/PHP的角度思考(来自于与vBulletin的大量合作,从未与WordPress合作过)。感谢您的编辑!我应该找到所有格代词!感谢您的评论,我将研究JSON对象方法一旦您获得数据,通过JSON对象数组循环并使用javascript/jQuery创建HTML就相当简单了。这样的话,客户端会很繁重,因此,无论您试图限制处理的哪一方(传输还是客户端CPU/浏览器),您都应该在哪一方出错。关于处理在哪里完成的好提示,我肯定会研究一下,以减轻服务器的负担谢谢您提供的有关搜索处理程序的信息。在这种情况下,我不能做一些类似于
global$wp\u查询;返回json_encode($wp_query)在我的PHP处理程序中?关于受保护的函数-我从未想过有人试图提交他们自己的db查询!你有没有可能给出一个如何编写的快速示例?你肯定可以使用全局查询。这可能会给你奇怪的结果,但你可以试试!至于受保护的函数,我会将其添加到我的答案中。我想如果设置了
s
,那么全局查询将与搜索查询相同?如果我的PHP处理程序中的代码正在运行,
s
将始终被设置……啊,不是在本例中。您正在实例化一个新查询。只要AJAX处理程序没有对全局查询对象进行任何设置(您必须显式设置),就不应该影响全局查询对象。
wp_send_json_success
wp_send_json_error
看起来很有趣-感谢您突出显示了它们,我肯定会在我的解决方案中使用它们,正在检查你的插件。。。看起来很棒,会很有帮助的!