Make link like this <a href="http://example.com/?reaction=smk_remove_post&id=1226&_nonce=7be82cd4a0" data-id="1226" data-nonce="7be82cd4a0" class="smk-remove-post">Remove post</a> And jQuery $('.smk-remove-post').on( 'click', function( event ){ event.preventDefault(); var _this = $(this); var data = { 'action': 'smk_remove_post_ajax', 'reaction': 'smk_remove_post', 'id': _this.data('id'), '_nonce': _this.data('nonce') }; // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php jQuery.ajax({ type: "GET", url: ajaxurl, data: data, success: function(response){ console.log(response); _this.text('All great, the post is removed.'); } }); }); See Codex about [AJAX in Plugins](https://codex.wordpress.org/AJAX_in_Plugins). And in Codex, it says: > Most of the time you should be using wp_die() in your Ajax callback function. This provides better integration with WordPress and makes it easier to test your code. So use `wp_die();` instead of `die();`