// Enqueue JS and pass ajax_url + nonce add_action('admin_enqueue_scripts', function () { wp_enqueue_script('pr-custom-ajax', plugin_dir_url(__FILE__) . 'admin.js', array('jquery'), null, true); wp_localize_script('pr-custom-ajax', 'myAjax', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('pr_download_nonce') )); }); // AJAX callback for property download add_action("wp_ajax_pr_import_auth", "pr_import_auth"); function pr_import_auth() { if (!isset($_POST['security']) || !wp_verify_nonce($_POST['security'], 'pr_download_nonce')) { wp_send_json_error('Unauthorized request'); } $pr_import = new pr_properties_class(); $pr_import->download_xml(); $data = array( 'action' => 'delete', 'chunk' => 0, 'size' => 1000 ); update_option('pr_api_info', json_encode($data)); wp_send_json_success('Properties downloaded'); }