Suchergebnisse können nicht mit AJAX geladen werden

Ich versuche, die Suchergebnisse auf meiner Seite zu laden, ohne sie erneut zu laden. Ich habe bereits mehrere Ansätze ausprobiert, aber ich kann immer noch nicht funktionieren, obwohl ich die bestätigte Lösung von jemand anderem benutzt habe.

Bitte finden Sie den Code unten:

  • search-post-results.php (im Include-Ordner)

     

    Search Result for :

    <div id="post-" class="posts">

    <a href="https://wordpress.stackexchange.com/questions/199751/cant-load-search-results-with-ajax/">

  • functionen.php

     add_action('wp_ajax_nopriv_wpa56343_search', 'wpa56343_search',100); add_action('wp_ajax_wpa56343_search', 'wpa56343_search',100); function wpa56343_search() { global $wp_query; $search = $_POST['search_val']; $args = array( 's' => $search, 'posts_per_page' => 5 ); $wp_query = new WP_Query($args); get_template_part('includes/search-post-results'); exit; } 
  • HTML-Formular

      
  • jQuery

      jQuery(document).ready(function () { jQuery("#searchsubmit").click(function (e) { e.preventDefault(); var search_val = jQuery("#s").val(); jQuery.post( "", { action:'wpa56343_search', search_string:search_val }, function (response) { jQuery('body').append(response); } } }); });  
  • Anstatt Ergebnisse auf derselben Seite mit meiner Vorlage zu erhalten, gehe ich einfach zu URL / s? = Search_val und eine Standard-Suchergebnisvorlage wird geladen.

    Danke für die Hilfe.

    E: Langsam vorwärts bewegen. Nach dem Verwenden des obigen Codes ist der Fehler, den ich bekomme, Uncaught ReferenceError: wpa56343_search ist nicht definiert.

    Solutions Collecting From Web of "Suchergebnisse können nicht mit AJAX geladen werden"

    Das JavaScript sollte sein:

      

    Und der AJAX-Handler-Code in Ihrer functions.php sollte sein:

     function wpa56343_search() { if ( ! isset( $_POST['search'] ) ) exit; query_posts( array( 'posts_per_page' => 5, 'no_found_rows' => true, 'post_type' => get_post_types( array( 'public' => true ) ), 's' => wp_unslash( ( string ) $_POST['search'] ), ) ); get_template_part( 'includes/search-post-results' ); exit; } add_action( 'wp_ajax_nopriv_wpa56343_search', 'wpa56343_search', 100 ); add_action( 'wp_ajax_wpa56343_search', 'wpa56343_search', 100 ); 

    Normalerweise sollten Sie query_posts vermeiden, aber es ist in diesem Kontext vollkommen gültig, da wir eine isolierte globale Abfrage für die Verwendung von search-post-results.php .