prefix . 'gamepulse_subscriptions'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE IF NOT EXISTS $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, email varchar(100) NOT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id), UNIQUE KEY email (email) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } // Shortcode to display the form add_shortcode('gamepulse_newsletter', 'gamepulse_newsletter_form_shortcode'); function gamepulse_newsletter_form_shortcode() { ob_start(); ?>
'Please enter a valid email address.']); } global $wpdb; $table_name = $wpdb->prefix . 'gamepulse_subscriptions'; // Check if already subscribed $exists = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $table_name WHERE email = %s", $email)); if ($exists) { wp_send_json_error(['message' => 'You are already subscribed!']); } $inserted = $wpdb->insert( $table_name, ['email' => $email], ['%s'] ); if ($inserted) { // Send notification to admin using MailService if (file_exists(ABSPATH . 'mail/MailService.php')) { require_once ABSPATH . 'mail/MailService.php'; $site_name = get_bloginfo('name'); MailService::sendMail( null, // Fallback to MAIL_TO "New Subscriber for $site_name", "A new user has subscribed to your newsletter: $email
", "A new user has subscribed to your newsletter: $email" ); } wp_send_json_success(['message' => 'Thank you for subscribing!']); } else { wp_send_json_error(['message' => 'Subscription failed. Please try again later.']); } }