Plugin Class File:
function __construct()
{
add_shortcode(\'user_registration_form\', array($this, \'shortcode\'));
wp_register_script(\'product-serial\', plugins_url(\'bootstrap/js/product-serial.js\', __FILE__),array(\'jquery\')); //custom jquery for product serial
wp_enqueue_script( \'product-serial\' ); //custom jquery for product serial
$this->hook();
}
public function hook()
{
add_action(\'wp_ajax_get_product_serial\', array( $this,\'get_product_serial\'));
add_action(\'wp_ajax_nopriv_get_product_serial\',array( $this,\'get_product_serial\') );
}
public function product_serial_ajax(){ ?>
<script type="text/javascript">load_product();</script>
<?php
}
//convert csv data into array
function csv_to_array($filename=\'\', $delimiter=\',\')
{
//if(!file_exists($filename) || !is_readable($filename))
//return FALSE;
$header = NULL;
$data = array();
if (($handle = fopen($filename, \'r\')) !== FALSE)
{
while (($row = fgetcsv($handle, 1024, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
//get product serial number
function get_product_serial(){
$upload_dir = wp_upload_dir();
$csvFile = $upload_dir[\'baseurl\'].\'/Eragon-Serial.csv\';
$csv = $this->csv_to_array($csvFile); //read csv
foreach ($csv as $serialnum){
$serial_num_array[] = $serialnum[\'product_serial\'];
}
$json_array = json_encode($serial_num_array);
echo $json_array;
die();
}
function shortcode()
{
$this->product_serial_ajax(); //fetch product serial number
}
Seperate JS file
function load_product(){
jQuery.ajax({
type: "GET",
url: ajaxurl,
dataType : "JSON",
data : {action: "get_product_serial"},
//cache: false,
success: function(data){
alert(\'Eureka\');
}
});
}
P.S: putting the following in the header.php of my theme worked for me
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url(\'admin-ajax.php\'); ?>";
</script>