PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / trunk
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more vtrunk
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Analytics / Analytics.php
embedpress / EmbedPress / Analytics Last commit date
Analytics.php 1 month ago
Analytics.php
112 lines
1 <?php
2
3 namespace EmbedPress\Analytics;
4
5 /**
6 * EmbedPress Analytics Page Handler
7 *
8 * Manages the standalone analytics page with React component mounting
9 */
10 class Analytics
11 {
12 /**
13 * Initialize hooks
14 */
15 public function __construct()
16 {
17 add_action('admin_menu', [$this, 'register_submenu']);
18 add_action('admin_enqueue_scripts', [$this, 'enqueue_analytics_scripts']);
19 }
20
21 /**
22 * Register the submenu page under EmbedPress menu
23 */
24 public function register_submenu()
25 {
26 add_submenu_page(
27 'embedpress', // Parent slug
28 __('Analytics', 'embedpress'), // Page title
29 __('Analytics', 'embedpress'), // Menu title
30 'manage_options', // Capability
31 'embedpress-analytics', // Menu slug
32 [$this, 'render_analytics_page'] // Callback to render page
33 );
34 }
35
36 /**
37 * Enqueue analytics scripts and styles
38 */
39 public function enqueue_analytics_scripts($hook)
40 {
41 // Only load on the analytics page
42 if ($hook !== 'embedpress_page_embedpress-analytics') {
43 return;
44 }
45
46 // Enqueue the analytics script (this should be built by Vite)
47 wp_enqueue_script(
48 'embedpress-analytics',
49 EMBEDPRESS_URL_ASSETS . 'js/analytics.build.js',
50 ['wp-element', 'wp-i18n'],
51 EMBEDPRESS_PLUGIN_VERSION,
52 true
53 );
54
55 // Wire JS translations so `__('Foo','embedpress')` in the analytics
56 // bundle resolves against languages/embedpress-{locale}-embedpress-analytics.json.
57 if (function_exists('wp_set_script_translations')) {
58 wp_set_script_translations(
59 'embedpress-analytics',
60 'embedpress',
61 defined('EMBEDPRESS_PATH_BASE') ? EMBEDPRESS_PATH_BASE . 'languages' : false
62 );
63 }
64
65 // Add module attribute for ES modules
66 add_filter('script_loader_tag', function($tag, $handle) {
67 if ($handle === 'embedpress-analytics') {
68 return str_replace('<script ', '<script type="module" ', $tag);
69 }
70 return $tag;
71 }, 10, 2);
72
73 // Enqueue analytics styles
74 wp_enqueue_style(
75 'embedpress-analytics',
76 EMBEDPRESS_URL_ASSETS . 'css/analytics.build.css',
77 [],
78 EMBEDPRESS_PLUGIN_VERSION
79 );
80
81 // Localize script with API settings
82 $tracking_enabled = get_option('embedpress_analytics_tracking_enabled', true);
83 wp_localize_script('embedpress-analytics', 'embedpressAnalyticsData', [
84 'restUrl' => rest_url('embedpress/v1/analytics/'),
85 'nonce' => wp_create_nonce('wp_rest'),
86 'ajaxUrl' => admin_url('admin-ajax.php'),
87 'cacheNonce' => wp_create_nonce('embedpress_clear_cache'),
88 'isProActive' => defined('EMBEDPRESS_SL_ITEM_SLUG'),
89 'currentUser' => wp_get_current_user()->ID,
90 'siteUrl' => site_url(),
91 'trackingEnabled' => (bool) $tracking_enabled,
92 ]);
93
94 // Also make WordPress REST API settings available
95 wp_localize_script('embedpress-analytics', 'wpApiSettings', [
96 'root' => rest_url(),
97 'nonce' => wp_create_nonce('wp_rest'),
98 ]);
99 }
100
101 /**
102 * Render the Analytics page with a React root div
103 */
104 public function render_analytics_page()
105 {
106 ?>
107 <div id="embedpress-analytics-root"></div>
108
109 <?php
110 }
111 }
112