Revert to version 15b98e0
This commit is contained in:
parent
fb1b8fe90c
commit
5c6639841f
140
wp-content/plugins/gamepulse-newsletter/gamepulse-newsletter.php
Normal file
140
wp-content/plugins/gamepulse-newsletter/gamepulse-newsletter.php
Normal file
@ -0,0 +1,140 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: GamePulse Newsletter
|
||||
* Description: Simple newsletter subscription form for the GamePulse blog.
|
||||
* Version: 1.0.0
|
||||
* Author: Gemini
|
||||
*/
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
// Create table on activation
|
||||
register_activation_hook(__FILE__, 'gamepulse_newsletter_install');
|
||||
function gamepulse_newsletter_install() {
|
||||
global $wpdb;
|
||||
$table_name = $wpdb->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();
|
||||
?>
|
||||
<div class="gamepulse-newsletter-container" style="background: #1a1a1a; padding: 2rem; border-radius: 12px; border: 1px solid #333; margin: 2rem 0; text-align: center;">
|
||||
<h3 style="color: #E63946; margin-top: 0;">Stay in the Loop</h3>
|
||||
<p style="color: #ccc;">Get the latest gaming news, reviews, and "realises" delivered to your inbox.</p>
|
||||
<form id="gamepulse-newsletter-form" style="display: flex; flex-direction: column; gap: 1rem; max-width: 400px; margin: 0 auto;">
|
||||
<input type="email" name="email" placeholder="Your email address" required style="padding: 12px; border-radius: 6px; border: 1px solid #444; background: #2a2a2a; color: #fff;">
|
||||
<button type="submit" style="padding: 12px; border-radius: 6px; border: none; background: #E63946; color: #fff; font-weight: bold; cursor: pointer; transition: background 0.3s;">Subscribe Now</button>
|
||||
<div id="gamepulse-newsletter-message" style="margin-top: 1rem; font-size: 0.9rem;"></div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const form = document.getElementById('gamepulse-newsletter-form');
|
||||
const messageDiv = document.getElementById('gamepulse-newsletter-message');
|
||||
|
||||
form.addEventListener('submit', function(e) {
|
||||
e.preventDefault();
|
||||
const email = form.querySelector('input[name="email"]').value;
|
||||
const button = form.querySelector('button');
|
||||
|
||||
button.disabled = true;
|
||||
button.textContent = 'Subscribing...';
|
||||
messageDiv.textContent = '';
|
||||
messageDiv.style.color = '#fff';
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('action', 'gamepulse_subscribe');
|
||||
formData.append('email', email);
|
||||
formData.append('_wpnonce', '<?php echo wp_create_nonce("gamepulse_newsletter_nonce"); ?>');
|
||||
|
||||
fetch('<?php echo admin_url('admin-ajax.php'); ?>', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
messageDiv.textContent = data.data.message;
|
||||
messageDiv.style.color = '#4CAF50';
|
||||
form.reset();
|
||||
} else {
|
||||
messageDiv.textContent = data.data.message;
|
||||
messageDiv.style.color = '#f44336';
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
messageDiv.textContent = 'An error occurred. Please try again.';
|
||||
messageDiv.style.color = '#f44336';
|
||||
})
|
||||
.finally(() => {
|
||||
button.disabled = false;
|
||||
button.textContent = 'Subscribe Now';
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
// AJAX handler
|
||||
add_action('wp_ajax_gamepulse_subscribe', 'gamepulse_handle_subscription');
|
||||
add_action('wp_ajax_nopriv_gamepulse_subscribe', 'gamepulse_handle_subscription');
|
||||
|
||||
function gamepulse_handle_subscription() {
|
||||
check_ajax_referer('gamepulse_newsletter_nonce', '_wpnonce');
|
||||
|
||||
$email = isset($_POST['email']) ? sanitize_email($_POST['email']) : '';
|
||||
|
||||
if (!is_email($email)) {
|
||||
wp_send_json_error(['message' => '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",
|
||||
"<p>A new user has subscribed to your newsletter: <strong>$email</strong></p>",
|
||||
"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.']);
|
||||
}
|
||||
}
|
||||
6
wp-content/themes/twentytwentyfive-child/functions.php
Normal file
6
wp-content/themes/twentytwentyfive-child/functions.php
Normal file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
function twentytwentyfive_child_enqueue_styles() {
|
||||
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
|
||||
wp_enqueue_style('child-style', get_stylesheet_uri(), array('parent-style'), wp_get_theme()->get('Version'));
|
||||
}
|
||||
add_action('wp_enqueue_scripts', 'twentytwentyfive_child_enqueue_styles');
|
||||
32
wp-content/themes/twentytwentyfive-child/style.css
Normal file
32
wp-content/themes/twentytwentyfive-child/style.css
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
Theme Name: GamePulse Child
|
||||
Theme URI: https://flatlogic.com/
|
||||
Description: Child theme for the GamePulse blog.
|
||||
Author: Gemini
|
||||
Template: twentytwentyfive
|
||||
Version: 1.0.0
|
||||
*/
|
||||
|
||||
body {
|
||||
background-color: #0f0f0f;
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: #ffffff;
|
||||
font-family: 'Inter', sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #E63946;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #f1faee;
|
||||
}
|
||||
|
||||
.wp-block-heading {
|
||||
border-left: 4px solid #E63946;
|
||||
padding-left: 15px;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user