带参数

时间:2016-07-10 13:39:38

标签: php jquery ajax wordpress

我正在制作一个过滤器保管箱,以显示和更改每页的当前帖子。 这是我的代码:

      <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个帖子。 我怎样才能使它工作?请求你的帮助!

1 个答案:

答案 0 :(得分:1)

在WordPress中使用Ajax需要遵循一些特定的步骤,如下所述:https://codex.wordpress.org/AJAX_in_Plugins

主要有以下几点:

  1. add_action( 'wp_ajax_my_action', 'my_action_callback' );
  2. 每次ajax调用都应添加以上内容。

    1. 在您的ajax请求中,您需要传递参数:
    2. var data = { 'action': 'my_action', 'orderBy': jQuery('#orderBy').val(), 'viewPostCount': jQuery('#viewPostCount').val() };

      您需要将其与其他数据一起传递,例如viewPostCount&amp; orderBy。

      1. 您的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 }