Hat ein Autocomplete-Feld seit Monaten funktioniert, funktioniert aber nicht mehr, wenn es nicht angemeldet ist? Ich bin mir nicht sicher, wann, aber innerhalb der letzten Tage oder Wochen (WordPress wurde kürzlich nicht aktualisiert).
bereits; add_action ('wp_ajax_filter_schools', 'filter_schools'); add_action ('wp_ajax_nopriv_filter_schools', 'filter_schools');
in functions.php und es gibt nirgendwo Fehler.
Antwort, die ich bekomme, wenn ich nicht angemeldet bin, ist;
von der Safari ... * URL anfordern: http: //www.payingforit.org.uk/wp-admin/admin-ajax.php? term = Holywe & action = filter_schools & postType = Schule Anforderungsmethode: GET Status Code: 302 Gefunden *
jede Hilfe willkommen! Dc.
JQuery-Code
$( "#userSelectedSchool" ).bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
}).autocomplete({
source: function( request, response ) {
$.getJSON( "/wp-admin/admin-ajax.php", {
term: extractLast( request.term ), action: 'filter_schools', postType: 'school'
}, response );
dataToBeSent = {
term: extractLast( request.term ), action: 'filter_schools', postType: 'school'
}
console.log(request.term);
}, select: function( event, ui ) {
var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.id );
// add placeholder to get the comma-and-space at the end // ui.item.label
terms.push( "" );
this.value = ui.item.label;
$('input[name=userSchool]').val(ui.item.urn)
return false;
}, open: function() { $('.ui-menu').width(300) }
});
Funktion in functions.php
add_action('wp_ajax_filter_schools', 'filter_schools');
add_action('wp_ajax_nopriv_filter_schools', 'filter_schools');
function filter_schools(){
global $wpdb; // this is how you get access to the database
$str = $_GET['term'];
$action = $_POST['action'];
$postType = $_POST['postType'];
$finalArgs = array (
'posts_per_page'=>5,
'order' => 'ASC',
'post_type' => 'school'
);
$searchSchools = new WP_Query( $finalArgs );
$mypostids = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '".$str."%' ");
$args = array(
'post__in'=> $mypostids,
'post_type'=>'school',
'orderby'=>'title',
'order'=>'asc'
);
$res = new WP_Query($args);
while( $res->have_posts() ) : $res->the_post();
global $post;
$EstablishmentNumber = get_post_meta($post->ID,'EstablishmentNumber', true);
$URN = get_post_meta($post->ID,'URN', true);
$add = get_post_meta($post->ID,'address', true);
$schl = array('post_id'=>$post->ID,'id'=>$EstablishmentNumber, 'label'=>$post->post_title.', '.$add['town'].' '.$add['postcode'] , 'value'=>$EstablishmentNumber, 'urn'=>$URN );
$matchedSchools[] = $schl;
endwhile;
echo json_encode($matchedSchools);
wp_reset_postdata();
die(); // this is required to return a proper result
}
Endgültiger Arbeitscode vor der Funktion filter_schools ().
quelle