2016-10-10 22 views
1

我一直在尝试没有成功,在我的WordPress的添加自动完成。WordPress的和jQuery的自动完成元键

在我的functions.php:

// Loads files with autocomplete 
wp_register_script('jquery-ui', get_template_directory_uri() . '/js/jquery-ui.min.js', array('jquery')); 
wp_enqueue_script('jquery-ui'); 
wp_register_style('jquery-style', get_template_directory_uri() . '/js/jquery-ui.css'); 
wp_enqueue_style('jquery-style'); 
wp_register_script('autocomplete-ui', get_template_directory_uri() . '/js/autocomplete.js', array('jquery')); 
wp_localize_script('autocomplete-ui', 'autocomplete-object', array('url' => admin_url('admin-ajax.php'))); 
wp_enqueue_script('autocomplete-ui'); 

在我autocomplete.js

function ($) { 
    'use strict'; 

$(function() { 

$("#busca").autocomplete({ 
    source: function(request, response) { 
    $.ajax({ 
     type: 'GET', 
     dataType: "json", 
     data: { 
      action: "autocompleteCallback", 
      term: request.term 
      }, 
     success: function (data) { 

      }, }); } }); }); }(jQuery); 

回到我的functions.php:

function acCallback() { 
    global $wpdb; 
    $search = $_REQUEST['term']; 
    $query = $wpdb->get_results("SELECT $wpdb->postmeta.meta_value FROM $wpdb->postmeta WHERE postmeta.meta_value LIKE \'' . $search . '%\' AND post_type = \'NAME OF CUSTOM POST TITLE \' 
AND $wpdb->postmeta.meta_key = 'produto'"); 

    $tab = array(); 
    foreach ($query->posts as $p): 
    $tab[] =array('value'=>$p->postmeta.meta_value); 
     endforeach; 

      echo(json_encode($tab)); 
      exit; 
} 

add_action('wp_ajax_autocompleteCallback', 'acCallback'); 
add_action('wp_ajax_nopriv_autocompleteCallback', 'acCallback'); 

没有出现在我的自动完成...我的错误是什么?感谢您的帮助

+0

哪里是AJAX网址是什么?我想你需要告诉AJAX要调用什么。 –

+0

好的。我做到了,但仍然没有工作: – Tatiana

+0

$( “#busca”).autocomplete({ \t来源:函数(请求,响应){ \t $阿贾克斯({ \t \t网址:自动完成,object.ajax_url, – Tatiana

回答

0

我知道了!我不得不做出一些改变,更主要的是:

在我autocomplete.js

.... 
success: function (data) { 
    response($.map(data, function(item) { 
    return { 
    value: item.meta_value, 
    id :item.meta_id 
    }; 
    })); 
    }; 

而且在我的functions.php:

global $wpdb; 
    $search = $_GET['term']; 
    $query = $wpdb->get_results("SELECT DISTINCT meta_id, meta_value FROM wp_postmeta WHERE meta_key='NAME OF META KEY' AND meta_value LIKE '".$search."%' "); 


$suggestions = array(); 
foreach($query as $row) { 
    array_push($suggestions, array(
      'meta_value' => $row->meta_value, 
      'meta_id' => $row->meta_id 
     ) 
    ); 
} 
echo json_encode($suggestions); 
exit();