Acción Ajax de WP que no recoge el parámetro de cadena de consulta

2

No estoy seguro de por qué esto no funciona ... mi acción se está pasando y la función correcta se está activando desde mi ajax, pero la devolución de llamada no está recibiendo mi parámetro query .

Mi ajax (usando bloodhound.js ejecutándose desde las pantallas administrativas, así que no hay necesidad de localize ):

new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
  url: ajaxurl,
  prepare: function(query,settings){
    settings.url = settings.url + '?query=' + query + '&action=' + 'find_posts'
    return settings;
    }
  }
})

Si no está familiarizado con Bloodhound, la consulta que presenta se ve así:

admin-ajax.php?query=fdsafpasdjflkdsajkfg&action=find_posts

Aquí fdsafpasdjflkdsajkfg es solo la cadena de búsqueda que escribí (en frustración). Entonces, sé que está enviando las cadenas de consulta correctas, y también lo sé porque el error que recibo se deriva de la acción correcta que se está ejecutando.

Mi error es

  

Error fatal de PHP: llamar a una función miembro esc_like () en nulo

Se deriva de esto:

add_action( 'wp_ajax_find_posts', 'find_posts' );

function find_posts(){
$query = $_GET['query'];
$value = '%'.$wpdb->esc_like($query).'%'; //ERROR HERE
$sql = $wpdb->prepare("SELECT ID, post_title 
        FROM {$wpdb->prefix}posts
        WHERE post_title LIKE %s
        ORDERBY BY ID", $value);
    $posts = $wpdb->get_results($sql);
    return json_encode($posts);
    wp_die();
}

Entonces, la pregunta es, ¿por qué $_GET['query']; se resuelve en null cuando está en mi cadena de consulta?

    
pregunta Summer Developer 06.08.2018 - 21:15

1 respuesta

4

Agregue global $wpdb; en la función find_posts() , antes de usar $wpdb ;

    
respondido por el nmr 06.08.2018 - 21:34

Lea otras preguntas en las etiquetas