我正在制作一个过滤器保管箱,以显示和更改每页的当前帖子。 这是我的代码:
<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);
})
但它不起作用。看起来像网址示例:http://localhost/wordpress/category/tin-tuc/?order=date&showposts=5#listPosts不会工作。它仍然显示10个帖子(默认wp设置),我只有10个帖子。 我怎样才能使它工作?请求你的帮助!
答案 0 :(得分:1)
在WordPress中使用Ajax需要遵循一些特定的步骤,如下所述:https://codex.wordpress.org/AJAX_in_Plugins
主要有以下几点:
add_action( 'wp_ajax_my_action', 'my_action_callback' );
每次ajax调用都应添加以上内容。
var data = {
'action': 'my_action',
'orderBy': jQuery('#orderBy').val(),
'viewPostCount': jQuery('#viewPostCount').val()
};
您需要将其与其他数据一起传递,例如viewPostCount&amp; orderBy。
您的ajax函数应该被命名为my_action_callback
add_action
。
function my_action_callback() {
// do whatever
wp_die(); // this is required to terminate immediately and return a proper response
}