Вы можете сделать это таким образом. Просто замените его на ваш.
jQuery(function($){
var searchRequest;
$('.search-autocomplete').autoComplete({
minChars: 2,
autoFocus: true,
source: function(name, suggest){
try { searchRequest.abort(); } catch(e){}
searchRequest = $.post(global.ajax, { search: name, action: 'search_site' }, function(data) {
var results = [];
for (var index = 0; index < data.results.length; index++)
if (~(data.results[index]['title']+' '+data.results[index]['link']).toLowerCase().indexOf(name)) results.push(data.results[index]);
suggest(results);
});
},
renderItem: function (item, search){
search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
return '<div class="autocomplete-suggestion" data-title="'+item['title']+'" data-link="'+item['link']+'" data-val="'+search+'">'+ item['title'].replace(re, "<b>$1</b>") + '</div>';
},
onSelect: function(e, term, item) {
var link = item.data('link');
window.open(link);
}
});
});
Ваш код PHP должен быть
function ja_ajax_search() {
$results = new WP_Query( array(
'post_type' => array( 'knowledge_base' ),
'post_status' => 'publish',
'nopaging' => true,
'posts_per_page'=> 100,
's' => stripslashes( $_POST['search'] ),
) );
$items = array();
if ( !empty( $results->posts ) ) {
foreach ( $results->posts as $result ) {
$item = array();
$item['title'] = $result->post_title;
$item['link'] = get_the_permalink($result->ID);
$items[] = $item;
}
}
echo json_encode(array('results'=>$items));
die();
}
add_action( 'wp_ajax_search_site','ja_ajax_search' );
add_action( 'wp_ajax_nopriv_search_site', 'ja_ajax_search' );
Я не тестировал, но сообщите мне результаты, чтобы я мог помочь вам, если он не работал.