149 lines
5.3 KiB
PHP

<?php
/**
* Admin functionality class
*/
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}
class Palantics_Admin {
// Tracking server URL
private $tracking_server_url = 't1.palantics.net';
/**
* Constructor
*/
public function __construct() {
// Add settings page
add_action('admin_menu', array($this, 'add_settings_page'));
add_action('admin_init', array($this, 'register_settings'));
}
/**
* Add settings page
*/
public function add_settings_page() {
add_options_page(
'Palantics Tracking',
'Palantics Tracking',
'manage_options',
'palantics-tracking-settings',
array($this, 'render_settings_page')
);
}
/**
* Register settings
*/
public function register_settings() {
register_setting('palantics_tracking_settings', 'palantics_tracking_server_url');
register_setting('palantics_tracking_settings', 'palantics_tracking_track_classes');
add_settings_section(
'palantics_tracking_section',
'Tracking Settings',
array($this, 'settings_section_callback'),
'palantics-tracking-settings'
);
add_settings_field(
'palantics_tracking_server_url',
'Tracking Server URL',
array($this, 'server_url_callback'),
'palantics-tracking-settings',
'palantics_tracking_section'
);
add_settings_section(
'palantics_tracking_auto_section',
'Element Tracking Settings',
array($this, 'auto_settings_section_callback'),
'palantics-tracking-settings'
);
add_settings_field(
'palantics_tracking_track_classes',
'Track Elements with Classes',
array($this, 'track_classes_callback'),
'palantics-tracking-settings',
'palantics_tracking_auto_section'
);
}
/**
* Settings section callback
*/
public function settings_section_callback() {
echo '<p>Configure your Palantics tracking server settings.</p>';
}
/**
* Auto tracking settings section callback
*/
public function auto_settings_section_callback() {
echo '<p>Configure which elements to track based on CSS classes.</p>';
}
/**
* Server URL field callback
*/
public function server_url_callback() {
$value = get_option('palantics_tracking_server_url', $this->tracking_server_url);
echo '<input type="text" id="palantics_tracking_server_url" name="palantics_tracking_server_url" value="' . esc_attr($value) . '" class="regular-text">';
echo '<p class="description">Enter the tracking server URL without https:// (e.g., t1.palantics.net)</p>';
echo '<p class="description">You will find this in your domain screen in the Palantics app</p>';
}
/**
* Track classes callback
*/
public function track_classes_callback() {
$value = get_option('palantics_tracking_track_classes', '');
echo '<input type="text" id="palantics_tracking_track_classes" name="palantics_tracking_track_classes" value="' . esc_attr($value) . '" class="regular-text">';
echo '<p class="description">Enter comma-separated class names to automatically track clicks on elements with these classes (e.g., cta-button, featured-product)</p>';
}
/**
* Render settings page
*/
public function render_settings_page() {
?>
<div class="wrap">
<h1><span style="color: #007cba;">Palantics</span> Tracking Settings</h1>
<form method="post" action="options.php">
<?php
settings_fields('palantics_tracking_settings');
do_settings_sections('palantics-tracking-settings');
submit_button();
?>
</form>
<div style="background-color: #fff; padding: 20px; margin-top: 20px; border: 1px solid #ccc; border-radius: 4px;">
<h2>Manual Tracking Methods</h2>
<div style="margin-bottom: 20px;">
<h3>Method 1: Using Data Attributes</h3>
<p>Add the <code>data-track</code> attribute to any HTML element to track clicks:</p>
<pre style="background-color: #f5f5f5; padding: 10px; border-radius: 4px;">&lt;button data-track="signup_button_click"&gt;Sign Up&lt;/button&gt;</pre>
</div>
<div style="margin-bottom: 20px;">
<h3>Method 2: Using Shortcode</h3>
<p>Wrap any content with the shortcode to track clicks:</p>
<pre style="background-color: #f5f5f5; padding: 10px; border-radius: 4px;">[track_element event="download_click" class="your-class" style="your-style"]
Your content here (can include other shortcodes)
[/track_element]</pre>
</div>
<div>
<h3>Method 3: Using Direct JavaScript</h3>
<p>You can also manually add <code>onclick="tE('your_event_name')"</code> to any HTML element.</p>
</div>
</div>
</div>
<?php
}
}