有可能覆盖wordpress中的suggest.js函数吗?

时间:2015-05-08 16:39:15

标签: php jquery wordpress

Wordpress使用suggest.js来帮助自动完成查询,我正在使用它。

然而,当我的php查找返回一个数组时,我不希望该字段显示为json_encoded数据。据我所知,在suggest.js中没有简单的方法来拦截 displayItems javascript函数,这样它就会首先解析返回的数据并只显示某些字段。

我的scripts.js中的函数如下:

./configure -platform win32-g++ -xplatform linux-arm-gnueabihf-g++ .....

fetch_ajax_products_list 是一个php函数,它返回一个带有三个元素(id,title和guid)的json_encoded数组,它正确地传递为 this.value 。我只想显示标题,但选中后,字段将更新以显示guid。复杂的是标题可以复制,因此如果没有id字段,则无法基于选择创建新的SQL查询。

我没有看到任何改变建议返回数据方式的方法,所以我猜它需要被覆盖。

Google没有为suggest.js提供太多帮助。

我希望这是有道理的,任何帮助都会非常感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

一种解决方案是修改wp-inludes/js/jquery/suggest.js以接受选项filter

options.filter = options.filter || function(txt) {
    return txt;
}

然后通过过滤器传递响应。

items = parseTxt(options.filter(txt), q);

设置

$("#producturl").suggest(ajaxurl + "?action=fetch_ajax_products_list" ,
{
    delay: 50,
    minchars: 1,
    filter: function(response) {
        // JSON.parse, etc.
    },
    onSelect: function() {
        do_something(this.value);
    }
});

整个修改后的脚本here。已修改的行297-299125