我构建了一个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