PRODUCT

table = $wpdb->prefix . 'dncr_leads'; add_action('init', array($this,'register_shortcodes')); register_activation_hook(__FILE__, array($this,'activate')); add_action('wp_enqueue_scripts', array($this,'front_assets')); add_action('wp_ajax_dncr_submit_lead', array($this,'handle_submit')); add_action('wp_ajax_nopriv_dncr_submit_lead', array($this,'handle_submit')); add_action('admin_menu', array($this,'admin_menu')); add_action('admin_post_dncr_export_csv', array($this,'export_csv')); } public function activate(){ global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE {$this->table} ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, name varchar(200) NOT NULL, phone varchar(50) NOT NULL, email varchar(150) DEFAULT NULL, service varchar(50) NOT NULL, city varchar(100) DEFAULT 'Delhi', message text DEFAULT NULL, utm_source varchar(200) DEFAULT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } public function register_shortcodes(){ add_shortcode('dncr_lead_form', array($this,'render_form')); } public function front_assets(){ wp_enqueue_style('dncr-style', plugins_url('dncr-style', __FILE__)); // inline CSS (unique look) $css = " .dncr-lead-wrap{max-width:720px;margin:20px auto;padding:22px;border-radius:12px;box-shadow:0 6px 20px rgba(0,0,0,0.08);background:linear-gradient(135deg,#ffffff,#f9fbff)} .dncr-lead-wrap h3{margin-top:0;font-size:22px} .dncr-row{display:flex;gap:10px} .dncr-col{flex:1} .dncr-input, .dncr-select, .dncr-textarea{width:100%;padding:10px;border:1px solid #e6e6e6;border-radius:8px} .dncr-btn{display:inline-block;padding:10px 16px;border-radius:8px;border:none;cursor:pointer} .dncr-success{color:green;margin-top:10px} "; wp_add_inline_style('dncr-style',$css); wp_enqueue_script('dncr-script', plugins_url('dncr-script', __FILE__), array('jquery'), false, true); $js = " jQuery(function($){ $(document).on('submit','.dncr-form',function(e){ e.preventDefault(); var \$f = $(this); var data = \$f.serialize(); data += '&action=dncr_submit_lead'; $.post('" . admin_url('admin-ajax.php') . "', data, function(resp){ if(resp.success){\$f.find('.dncr-result').html('
Thank you! Our team will contact you shortly.
');\$f[0].reset();} else { \$f.find('.dncr-result').html('
'+resp.data+'
'); } }, 'json'); }); }); "; wp_add_inline_script('dncr-script',$js); } public function render_form($atts=array()){ $atts = shortcode_atts(array('title'=>'Get expert ITR & GST help - Delhi NCR'), $atts, 'dncr_lead_form'); ob_start(); ?>

nonce,'dncr_nonce_field'); ?>
nonce,'dncr_nonce_field'); global $wpdb; $name = sanitize_text_field($_POST['name'] ?? ''); $phone = sanitize_text_field($_POST['phone'] ?? ''); $email = sanitize_email($_POST['email'] ?? ''); $service = sanitize_text_field($_POST['service'] ?? 'ITR'); $city = sanitize_text_field($_POST['city'] ?? 'Delhi'); $message = sanitize_textarea_field($_POST['message'] ?? ''); $utm = sanitize_text_field($_POST['utm_source'] ?? ''); if(empty($name) || empty($phone)){ wp_send_json_error('Name and mobile number are required.'); } $inserted = $wpdb->insert($this->table, array( 'name'=>$name, 'phone'=>$phone, 'email'=>$email, 'service'=>$service, 'city'=>$city, 'message'=>$message, 'utm_source'=>$utm ), array('%s','%s','%s','%s','%s','%s','%s')); if($inserted){ // email notification to admin $admin = get_option('admin_email'); $subject = "New Lead - {$service} ({$city})"; $body = "Name: {$name}\nPhone: {$phone}\nEmail: {$email}\nService: {$service}\nCity: {$city}\nMessage: {$message}\nUTM: {$utm}"; wp_mail($admin, $subject, $body); wp_send_json_success('Lead saved'); } else { wp_send_json_error('Failed to save.'); } } public function admin_menu(){ add_menu_page('DNCR Leads', 'DNCR Leads', 'manage_options', 'dncr-leads', array($this,'admin_page'),'dashicons-businessperson', 58); } public function admin_page(){ if(!current_user_can('manage_options')) return; global $wpdb; $leads = $wpdb->get_results("SELECT * FROM {$this->table} ORDER BY created_at DESC LIMIT 500"); ?>

DNCR Leads

Export CSV (max 500)

IDNamePhoneEmailServiceCityMessageCreated
id);?> name);?> phone);?> email);?> service);?> city);?> message);?> created_at);?>
get_results("SELECT * FROM {$this->table} ORDER BY created_at DESC LIMIT 500", ARRAY_A); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="dncr-leads.csv"'); $out = fopen('php://output','w'); if($rows){ fputcsv($out, array_keys($rows[0])); foreach($rows as $r) fputcsv($out, $r); } fclose($out); exit; } } new DNCR_Lead_Generator(); // EOF

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top