Я создал функцию 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
Это мой код, однако оба действия связаны с одной и той же функцией, новерсия сверху работает нормально, а та, что на другом крючке, не работает, поэтому мне было интересно, в чем причина и как ее решить?
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
}
, и вот скриншот, показывающий место2 хука https://snag.gy/zNXUmv.jpg
Я думаю, что проблема вызвана тем, что называется nonce, но я не совсем понимаю, что такое nonce и как это исправить.