2016-10-10 2 views
1

나는 워드 프레스에서 자동 완성을 추가하는 데 아무런 노력을하지 않고 있습니다. 내 functions.php에서Wordpress 및 jquery 자동 완성 메타 키

: 내 autocomplete.js에서

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

돌아 가기 내 functions.php에서
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); 

:

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 URL은? AJAX에 무엇을 부를 지 알려줄 필요가 있습니다. –

+0

확인. 나는 그것을했지만 여전히 작동하지 : – Tatiana

+0

$ ("#busca") .autocomplete ({ \t 출처 : 기능 (요청, 응답) { \t $ 아약스 ({ \t \t URL : 자동 완성 - 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에서 IN

:

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