Dynamisch wechselnde Navigationslinks (next und previous) über AJAX

In meiner WordPress-Site habe ich in der Schleife von single.php ein Select-Tag, in dem die Optionen die Posts der aktuellen Kategorie sind, die über eine benutzerdefinierte Abfrage zurückgegeben werden.

Beim Ändern der ausgewählten Option habe ich viele JavaScript-functionen, die gut funktionieren, aber die letzte function unter ihnen (function f_next-vorherige) scheint nicht zu funktionieren.

Ziel dieser function ist es, die nächsten und vorherigen Links zu aktualisieren, ohne die Seite neu laden zu müssen.

Der Code in Bezug auf Navigationslinks (nächste und vorherige) in meiner Vorlage funktioniert gut und ist oben:

 

Der JavaScript-Code dieser function ist:

 function f_next-previous(id) { $.ajax({ cache: true, type: "GET", timeout: 5000, url: 'wp-content/themes/twentyten/pages/next-previous.php?p='+id, success: function(msg) { $('#nav-above').html(msg); }, error: function(msg) { alert("Your browser broke!"); return false; } }); } 

Der Inhalt der Datei next-previous.php ist:

 query(array( 'post__in' => array($p))); if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?>    

Wenn Sie diese php-Datei testen, indem Sie ihr einen Wert für den Parameter p geben, erhalten Sie ein logisches Ergebnis im Browser. Jquery und functionsskripte sind gut enthalten und alle AJAX auf meiner Website sind in Ordnung. Was fehlt mir bei dieser Arbeit ????

Solutions Collecting From Web of "Dynamisch wechselnde Navigationslinks (next und previous) über AJAX"

ich habe es gefunden

Zuerst möchte ich bemerken, dass der Ansatz, den ich in meiner Frage erwähnt habe, gemäß fast Tutorials schlecht ist, die über AJAX in WordPress sprechen. Also habe ich beschlossen, den Ansatz zu ändern und das integrierte AJAX von WordPress zu verwenden.

Mit anderen Worten, der beste Weg für meine Situation ist die Verwendung der wp-admin / admin-ajax.php. AJAX-Anfragen sollten an diese Datei gerichtet werden. Ich weiß, dass der “admin” Teil des Dateinamens ein bisschen irreführend ist. aber alle Anfragen im Frontend (der Betrachtungsseite) sowie das Admin-Panel können in admin-ajax.php verarbeitet werden, mit vielen Vorteilen, insbesondere für die Sicherheit.

Die Schritte sind:

1.Der JavaScript-Code, der die AJAX-Anfrage übermittelt, sollte etwa so aussehen:

  $(document).ready(function() { $('.select2').change(function(e) { e.preventDefault(); var v = $('.select2 option:selected').val(); $.ajax({ type: "GET", url: "wp-admin/admin-ajax.php", // check the exact URL for your situation dataType: 'html', data: ({ action: 'nextPrevious', id: v}), success: function(data){ $('#nav-above').html(data); }, error: function(data) { alert("Your browser broke!"); return false; } }); }); }); 

Beachten Sie, dass Sie die Anforderungen von WordPress beachten sollten, indem Sie das JS-Skript footer.php ( footer.php in footer.php vor wp-footer() footer.php wp-footer() )

2- Handhabung der Aktion:

functions.php Sie in der functions.php Ihres Themes (oder direkt in Ihrer Plugin-Datei) Folgendes hinzu:

 add_action('wp_ajax_nextPrevious', 'nextPrevious'); add_action('wp_ajax_nopriv_nextPrevious', 'nextPrevious'); 

und definieren in der gleichen Datei nextPrevious Callback-function wie nextPrevious :

 function nextPrevious() { $p= $_GET['id']; $my_query = new WP_Query(); $my_query->query(array( 'post__in' => array($p))); if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?>   < ?php endwhile; endif; wp_reset_query(); die(); } 

Vergessen Sie nicht die Bainternet , es ist obligatorisch (danke Bainternet ).

Für weitere Details über AJAX in WordPress, Google erste Seite Tutorials sind gut.