Filtern von benutzerdefinierten Posts mit Ajax

Ich habe in anderen Fragen gesucht, auf Google gesucht … und nichts bekommen.

Ich muss die Beiträge von einem benutzerdefinierten Beitragstyp basierend auf dem ausgewählten Wert filtern.

Ich habe einen anderen Teil der Seite, wo ich Ajax verwende und alles funktioniert gut. Ich habe versucht, der gleichen Logik zu folgen, aber jedes Mal, wenn ich die Auswahloption ändere, bekomme ich statt der Posts eine ‘0’.

Es gibt keinen Fehler auf der Konsole und ich kann nicht herausfinden, wo ich falsch liege.

Hier ist meine functionen.php:

add_action( 'wp_ajax_load-filter', 'load_filter' ); add_action( 'wp_ajax_nopriv_load-filter', 'load_filter' ); function load_filter() { $filterValue = esc_sql( $_POST ); if ( ! wp_verify_nonce( $filterValue['nonce'], 'ds_nonce_security_key' ) ) { wp_die( 'Ocorreu um erro. Por favor, tente novamente' ); } if ( ! isset( $filterValue['opt_selected'] ) || empty( $filterValue['opt_selected'] ) ) { wp_die( 'Nenhum termo foi escolhido' ); } if ( $filterValue['opt_selected'] == 'mais-recente'){ $adsUser = array( 'post_type' => 'cadastro_anuncios', 'author' => $curauthID, 'orderBy' => 'post_date', 'order' => 'DESC', ); } else if ( $filterValue['opt_selected'] == 'mais-antigo'){ $adsUser = array( 'post_type' => 'cadastro_anuncios', 'author' => $curauthID, 'orderBy' => 'post_date', 'order' => 'ASC', ); } else if ( $filterValue['opt_selected'] == 'mais-barato'){ $adsUser = array( 'post_type' => 'cadastro_anuncios', 'author' => $curauthID, 'metaKey' => 'preco_anuncio', 'orderBy' => 'meta_value', 'order' => 'ASC', ); } else if ( $filterValue['opt_selected'] == 'mais-caro'){ $adsUser = array( 'post_type' => 'cadastro_anuncios', 'author' => $curauthID, 'metaKey' => 'preco_anuncio', 'orderBy' => 'meta_value', 'order' => 'DESC', ); }else{} $queryAdsUser = new WP_Query( $adsUser ); if ( $queryAdsUser->have_posts() ) : while ( $queryAdsUser->have_posts() ) : $queryAdsUser->the_post(); ?> <a href="https://wordpress.stackexchange.com/questions/284765/filtering-custom-posts-with-ajax/">

<?php endif; wp_die(); //stop function once you've echoed (returned) what you need.

Hier ist mein jQuery / Ajax-Bit:

 $("#opt_filter").change(function () { var opt_filter = $("#opt_filter").val(); $.ajax({ type: "POST", url: clocal.ajaxurl, dataType: "json", data: { 'action': 'load_filter', 'opt_selected': opt_filter, }, success: function(response) { $("#list-of-posts").append(response); //return false; } }); }); 

Hier ist die Seite, die ich versuche, den Inhalt zu zeigen:

   Mais recente   Mais antigo   Mais barato   Mais caro   

Solutions Collecting From Web of "Filtern von benutzerdefinierten Posts mit Ajax"

Wie von @mmm gezeigt, musste ich nur die ‘append ()’ für ‘html ()’ ändern. Und die Verwendung von ‘-‘ anstelle von ‘_’ im ‘Aktion’ Teil.

Ich bat ihn, es als Antwort zu posten, damit ich die Frage abschließen konnte, aber ich denke, er hat es nicht gesehen.

Also, mein endgültiger AJAX Code ist:

 $("#opt_filter").change(function () { var opt_filter = $("#opt_filter").val(); $.ajax({ type: "POST", url: clocal.ajaxurl, dataType: "json", data: { 'action': 'load-filter', 'opt_selected': opt_filter, }, success: function(response) { $("#list-of-posts").html(response); //return false; } }); });