文件操作 - Dashboard.php
返回文件管理
返回主菜单
删除本文件
文件: /home/www/public/wp-content/plugins/popup-maker/classes/Controllers/WP/Dashboard.php
编辑文件内容
<?php /** * Dashboard controller. * * @author Code Atlantic * @package PopupMaker\Pro * @copyright (c) 2025, Code Atlantic LLC. */ namespace PopupMaker\Controllers\WP; use PopupMaker\Plugin\Controller; defined( 'ABSPATH' ) || exit; /** * Dashboard controller class. * * @extends Controller<\PopupMaker\Plugin\Core> */ class Dashboard extends Controller { /** * Initialize admin controller. * * @return void */ public function init() { // Register dashboard widgets add_action( 'wp_dashboard_setup', [ $this, 'register_dashboard_widgets' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_dashboard_scripts' ] ); } /** * Register dashboard widgets. * * @return void */ public function register_dashboard_widgets() { // Basic Analytics Widget (will be moved to free plugin). wp_add_dashboard_widget( 'pum_analytics_basic', __( 'Popup Analytics','popup-maker' ), [ $this, 'render_basic_analytics_widget' ] ); } /** * Enqueue dashboard scripts. * * @return void */ public function enqueue_dashboard_scripts() { $current_screen = get_current_screen(); if ( ! $current_screen || $current_screen->id !== 'dashboard' ) { return; } if ( ! current_user_can( $this->container->get_permission( 'edit_popups' ) ) ) { return; } wp_enqueue_script( 'popup-maker-dashboard' ); wp_enqueue_style( 'popup-maker-dashboard' ); } /** * Render basic analytics widget. * * @return void */ public function render_basic_analytics_widget() { // Only users with permission to edit popups should see this widget. if ( ! current_user_can( $this->container->get_permission( 'edit_popups' ) ) ) { return; } $upgrade_link = 'https://wppopupmaker.com/pricing/?utm_source=wp-dashboard&utm_medium=dashboard&utm_campaign=upgrade-to-pro'; // Get analytics data $stats = $this->get_dashboard_stats(); $total_views = $stats['total_views']; $total_conversions = $stats['total_conversions']; $conversion_rate = $stats['conversion_rate']; $top_performer = $stats['top_performer']; ?> <div class="pum-dashboard-widget pum-analytics-basic"> <span class="pum-widget-badge" style="display: none;"><?php esc_html_e( 'Free','popup-maker' ); ?></span> <div class="pum-stats-grid"> <div class="pum-stat"> <div class="pum-stat-value pum-stat-views"><?php echo esc_html( number_format( $total_views ) ); ?></div> <div class="pum-stat-label"><?php esc_html_e( 'Total Views','popup-maker' ); ?></div> </div> <div class="pum-stat"> <div class="pum-stat-value pum-stat-conversions"><?php echo esc_html( number_format( $total_conversions ) ); ?></div> <div class="pum-stat-label"><?php esc_html_e( 'Conversions','popup-maker' ); ?></div> </div> </div> <div class="pum-conversion-rate"> <div class="pum-rate-value"><?php echo esc_html( round( $conversion_rate, 1 ) ); ?>%</div> <div class="pum-rate-label"><?php esc_html_e( 'Overall Conversion Rate','popup-maker' ); ?></div> </div> <?php if ( $top_performer ) : $top_performer_rate = $stats['top_performer_rate']; ?> <div class="pum-top-performer"> <div class="pum-performer-label"><?php esc_html_e( 'Top Performer:','popup-maker' ); ?></div> <div class="pum-performer-name"><a href="<?php echo esc_url( admin_url( 'post.php?post=' . $top_performer->ID . '&action=edit' ) ); ?>"><?php echo esc_html( $top_performer->post_title ); ?></a> (<?php echo esc_html( round( $top_performer_rate, 1 ) ); ?>%)</div> </div> <?php endif; ?> <?php if ( ! \PopupMaker\is_pro_active() ) : ?> <div class="pum-upgrade-box"> <div class="pum-upgrade-header"> <span class="pum-upgrade-icon">👑</span> <span class="pum-upgrade-title"><?php esc_html_e( 'Upgrade to Pro','popup-maker' ); ?></span> </div> <p class="pum-upgrade-text"><?php esc_html_e( 'Get detailed analytics, revenue tracking, exit intent, advanced targeting, and more','popup-maker' ); ?></p> <a href="<?php echo esc_url( $upgrade_link ); ?>" class="pum-upgrade-button" target="_blank"> <?php esc_html_e( 'Upgrade Now','popup-maker' ); ?> </a> </div> <?php endif; ?> </div> <?php } /** * Get top performing popup. * * @return \PUM_Model_Popup|null */ private function get_dashboard_stats() { $popups = pum_get_all_popups([ 'status' => 'publish', 'posts_per_page' => -1, 'meta_query' => [ 'relation' => 'AND', [ 'key' => 'enabled', 'value' => 1, 'compare' => '=', ], [ 'key' => 'popup_open_count', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC', ], ], ]); if ( empty( $popups ) ) { return [ 'total_views' => 0, 'total_conversions' => 0, 'conversion_rate' => 0, 'top_performer' => null, 'top_performer_rate' => 0, ]; } // Sort by priority: conversion rate > conversions > views usort( $popups, function( $a, $b ) { $a_rate = (float) $a->get_meta( 'popup_conversion_rate' ); $b_rate = (float) $b->get_meta( 'popup_conversion_rate' ); // First priority: conversion rate if ( $a_rate !== $b_rate ) { return $b_rate <=> $a_rate; // Descending } $a_conversions = (int) $a->get_meta( 'popup_conversion_count' ); $b_conversions = (int) $b->get_meta( 'popup_conversion_count' ); // Second priority: conversions if ( $a_conversions !== $b_conversions ) { return $b_conversions <=> $a_conversions; // Descending } // Third priority: views $a_views = (int) $a->get_meta( 'popup_open_count' ); $b_views = (int) $b->get_meta( 'popup_open_count' ); return $b_views <=> $a_views; // Descending }); $top_performer = $popups[0]; $top_performer_rate = ( (int) $top_performer->get_meta( 'popup_conversion_count' ) / (int) $top_performer->get_meta( 'popup_open_count' ) ) * 100; $popup_views = 0; $popup_conversions = 0; foreach ( $popups as $popup ) { $popup_views += (int) $popup->get_meta( 'popup_open_count' ); $popup_conversions += (int) $popup->get_meta( 'popup_conversion_count' ); } return [ 'total_views' => $popup_views, 'total_conversions' => $popup_conversions, 'conversion_rate' => $popup_conversions / $popup_views * 100, 'top_performer' => $top_performer, 'top_performer_rate' => $top_performer_rate, ]; } }
修改文件时间
将文件时间修改为当前时间的前一年
删除文件