为什么Ajax在某些wordpress钩子上不起作用?

时间:2019-03-25 19:48:42

标签: javascript php jquery ajax wordpress

我构建了一个ajax函数,当我将其钩接到admin_head或admin_notices钩子时,它可以完美地工作,但是当我将其钩接到manage_posts_extra_tablenav钩子时,它不起作用,而不是执行ajax调用,它只是重新加载页面和URL页面重新加载后打开的页面是

Request URL: http://localhost/wc/wp-admin/edit.php?s=&post_status=all&post_type=product&_wpnonce=c1a10340ac&_wp_http_referer=%2Fwc%2Fwp-admin%2Fedit.php%3Fs%26post_status%3Dall%26post_type%3Dproduct%26action%3D-1%26product_cat%26product_type%26stock_status%26paged%3D1%26action2%3D-1&action=-1&product_cat=&product_type=&stock_status=&paged=1&action2=-1

,该上部链接执行302重定向到该链接

http://localhost/wc/wp-admin/edit.php?s&post_status=all&post_type=product&action=-1&product_cat&product_type&stock_status&paged=1&action2=-1

这是我的代码,但是两个动作都连接到相同的功能,但是顶部的版本工作正常,而另一个钩子上的版本不起作用,所以我想知道是什么原因以及如何解决它? / p>

add_action( 'manage_posts_extra_tablenav', 'apm_update_all_products_ajax' );
add_action('admin_notices', 'apm_update_all_products_ajax');

function apm_update_all_products_ajax() {
  $product_ids = wc_get_products( array( 'return' => 'ids', 'limit' => -1 ) );
  ?>
    <div class="apm_bulk_update_prices_wrap alignleft actions">
  <button class="button apm_update_prices" id="update_prices" onclick="apm_update_all_products()">Update All Products</button>
    <p id="apm_bulk_status">test</p>
    </div>
          <script type="text/javascript" >
            product_ids = <?php echo json_encode($product_ids); ?>;
            product_ids_n = product_ids.length;
            product_ids_step = 0;
      function apm_update_all_products() {
                product_id = product_ids[product_ids_step];
                    $.ajax({
                        type: "POST",
                        url: ajaxurl,
                        dataType: "JSON",
                        data: {
                                action: 'apm_update_single_product',
                                postId: product_id
                        },
                        success: function(lookup_data) {
                                product_ids_step++
                                $('#bulk_status').text('Updated ' + product_ids_step + ' of ' + product_ids_n );
                                if (product_ids_step < product_ids_n) {
                                    apm_update_all_products();
                                }
                        },
                        error: function(jqXHR, textStatus, errorThrown) {

                        }
                    })
      };

    </script>
  <?php
}

,这是一个截图,显示了两个钩子的位置 https://snag.gy/zNXUmv.jpg

0 个答案:

没有答案