2016-07-10 20 views
1

Ich mache eine Filter Dropbox zum Anzeigen und Ändern der aktuellen Post pro Seite. Hier ist mein Code:Ajax Url Wordpress mit Parameter

 <select name="order" id="orderBy"> 
     <option value="date" selected="selected">News</option> 
     <option value="orderByFeatured">Featured News</option> 
     <option value="orderByViews">Most viewed posts</option> 
     </select> 
     <select name="showposts" id="viewPostCount"> 
     <option value="12" selected="selected">Views : Default</option> 
     <option value="2">Views : 2</option> 
     <option value="3">Views : 3</option> 
     <option value="8">Views : 8</option> 
     <option value="16">Views : 16</option> 
     <option value="20">Views : 20</option> 
     </select> 

    jQuery('#orderBy,#viewPostCount').change(function() { 
    var orderBy = jQuery('#orderBy').val(); 
    var viewPostCount = jQuery('#viewPostCount').val(); 

    var targetURL = 'http://localhost/wordpress/category/tin-tuc/?order=' + orderBy + '&showposts=' + viewPostCount + ' #listPosts'; 
    jQuery('#listPosts').html('<div id="listPosts"><div class="waiting" style="height:300px;"></div></div>').load(targetURL); 
    }) 

Aber es ist work.Look nicht wie die URL Beispiel: http://localhost/wordpress/category/tin-tuc/?order=date&showposts=5#listPosts wont work.It ist noch zeigen 10 Beiträge (Standard wp-Einstellung) und ich hatte nur 10 Beiträge. Wie kann ich es funktionieren lassen? Tks für Ihre Hilfe!

+0

laden Sie die gesamte Ausgabe der Seite in die #listPosts div? Es ist überhaupt nicht klug. Lesen Sie über die Verwendung von Ajax mit Wordpress (es gibt eine eingebaute Option für diesen Zweck). –

+0

Ja, wenn die URL funktioniert, denke ich, dass es die Ausgabe in #listPosts div zeigen soll, aber selbst wenn ich diese URL im Webbrowser tippe, funktioniert das nicht. – ngocdung

Antwort

0

Mit Ajax mit Wordpress erfordert einige spezifische Schritte befolgt werden, wie hier erwähnt: https://codex.wordpress.org/AJAX_in_Plugins

vor allem die folgenden:

  1. add_action('wp_ajax_my_action', 'my_action_callback');

Above für jede Ajax-Aufruf hinzugefügt werden soll.

  1. In Ihrer Ajax-Anforderung, müssen Sie die Parameter zu übergeben:

var data = { 'action': 'my_action', 'orderBy': jQuery('#orderBy').val(), 'viewPostCount': jQuery('#viewPostCount').val() };

Sie müssen dies mit anderen Daten entlang passieren, wie in Ihrem Fall , viewPostCount & orderBy.

  1. Ihre Ajax-Funktion my_action_callback benannt werden soll, wie in den add_action hinzugefügt wird.

    function my_action_callback() { // do whatever wp_die(); // this is required to terminate immediately and return a proper response }