X7ROOT File Manager
Current Path:
/var/softaculous/sitepad/editor/site-data/plugins/siteseo/main/settings
var
/
softaculous
/
sitepad
/
editor
/
site-data
/
plugins
/
siteseo
/
main
/
settings
/
??
..
??
advanced.php
(48.48 KB)
??
analytics.php
(59.14 KB)
??
dashboard.php
(17.25 KB)
??
instant.php
(14.18 KB)
??
onboarding.php
(19.99 KB)
??
sitemap.php
(19.65 KB)
??
social.php
(25.64 KB)
??
statistics.php
(49.76 KB)
??
titles.php
(46.14 KB)
??
tools.php
(5.5 KB)
??
util.php
(3.42 KB)
Editing: statistics.php
<?php /* * SITESEO * https://siteseo.io * (c) SiteSEO Team */ namespace SiteSEO\Settings; if(!defined('ABSPATH')){ die('HACKING ATTEMPT!'); } class Statistics{ static function init(){ global $siteseo; $current_tab = isset($_GET['tab']) ? sanitize_key(wp_unslash($_GET['tab'])) : 'tab_dashbord'; wp_enqueue_script('siteseo-chart-js', SITESEO_ASSETS_URL . '/js/chart.umd.min.js', [], SITESEO_VERSION, ['strategy' => 'defer', 'in_footer' => true]); wp_enqueue_script('siteseo-gsc-charts', SITESEO_ASSETS_URL . '/js/gsc-charts.js', ['jquery', 'siteseo-chart-js'], SITESEO_VERSION, ['strategy' => 'defer', 'in_footer' => true]); $saved_data = get_option('siteseo_search_console_data', []); wp_localize_script('siteseo-gsc-charts', 'siteseo_chart_data', $saved_data); if(isset($_GET['siteseo_auth_code']) && class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'generate_tokens')){ \SiteSEOPro\GoogleConsole::generate_tokens(); } if(isset($_GET['siteseo_auth_code']) && class_exists('\SiteSEOPro\GoogleConsole')){ add_action('admin_footer', '\SiteSEO\Settings\Statistics::connect_site_dialogbox'); } $site_connected = false; if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'is_connected')){ $site_connected = \SiteSEOPro\GoogleConsole::is_connected(); } $statistics_subtabs = [ 'tab_dashbord' => esc_html__('Dashboard', 'siteseo'), 'tab_seo_statistics' => esc_html__('Site Search Traffic', 'siteseo'), 'tab_keyword_rank' => esc_html__('Keyword Rank Tracker', 'siteseo'), 'tab_content_ranking' => esc_html__('Content Ranking', 'siteseo'), 'tab_audience' => esc_html__('Audience Overview', 'siteseo'), ]; echo'<div id="siteseo-root" class="siteseo-search-console">'; Util::admin_header(); $show_sample_data = isset($_GET['sample_data']) && $_GET['sample_data'] === '1'; if(!class_exists('\SiteSEOPro\GoogleConsole') && !$show_sample_data){ echo'<div class="siteseo-blur-overlay"></div> <div class="siteseo-pro-notice-center"> <div class="siteseo-pro-notice-content"> <span class="dashicons dashicons-lock siteseo-lock-icon"></span> <h2>'.esc_html__('Search Console Pro Feature', 'siteseo').'</h2> <p>'.esc_html__('Upgrade to PRO to unlock Google Search Console integration and access real-time search analytics data.', 'siteseo').'</p> <div class="siteseo-option siteseo-pro-notice-buttons"> <a href="https://siteseo.io/pricing" class="siteseo-option btnPrimary" target="_blank">' . esc_html__('Buy Pro', 'siteseo') . '</a> <a href="'.esc_url(add_query_arg('sample_data', '1')).'" class="siteseo-option btnSecondary">'.esc_html__('Explore Sample Data', 'siteseo').'</a> </div> </div> </div>'; } elseif(class_exists('\SiteSEOPro\GoogleConsole') && !$show_sample_data && empty($site_connected)){ echo'<div class="siteseo-blur-overlay"></div> <div class="siteseo-pro-notice-center"> <div class="siteseo-pro-notice-content"> <span class="dashicons dashicons-admin-links siteseo-link-icon"></span> <h2>'.esc_html__('Search Console statistics', 'siteseo').'</h2> <p>'.esc_html__('Please connect your Google Search Console account to unlock real-time search analytics data.', 'siteseo').'</p> <div class="siteseo-option siteseo-pro-notice-buttons"> <form method="post">'; wp_nonce_field('siteseo_pro_connect_google'); echo '<input type="hidden" name="redirect_type" value="settings"> <button type="submit" name="siteseo_pro_connect_btn" class="siteseo-option btnPrimary siteseo-connect-btn">'.esc_html__('Connect Search Console', 'siteseo') .'</button> </form> <a href="'.esc_url(add_query_arg('sample_data', '1')).'" class="siteseo-option btnSecondary">'.esc_html__('Explore Sample Data', 'siteseo').'</a> </div> </div> </div>'; } echo'<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush"> <div class="siteseo-toggle-cnt"><span id="siteseo-tab-title"><strong>'.esc_html__('Google Search Console Statistics', 'siteseo').'</strong></span></div>'; if(!empty($site_connected)){ if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'get_site_url')){ $site_url = \SiteSEOPro\GoogleConsole::get_site_url(); } if(!empty($site_url)){ echo'<div class="siteseo-statistics-wrapper"> <span class="siteseo-statistics-sites">Site: '.(strpos($site_url, 'sc-domain:') === 0 ? sanitize_text_field($site_url) : esc_url($site_url)).' <span id="siteseo-refresh-search-stats" class="dashicons dashicons-update" title="'.esc_attr__('Update Stats', 'siteseo').'"></span></span> <span class="siteseo-statistics-disconnect"><span class="dashicons dashicons-migrate"></span>'.esc_html__('Disconnect', 'siteseo').'</span> <span class="siteseo-statistics-data-range">'.esc_html__('[Last 90 days data]', 'siteseo').'</span> </div>'; } } echo'<div id="siteseo-tabs" class="wrap"> <div class="siteseo-nav-tab-wrapper">'; foreach($statistics_subtabs as $tab_key => $tab_caption){ $active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : ''; echo'<a id="' . esc_attr($tab_key) . '-tab" class="siteseo-nav-tab' . esc_attr($active_class) . '" data-tab="' . esc_attr($tab_key) . '">' . esc_html($tab_caption) . '</a>'; } echo'</div> <div class="tab-content-wrapper"> <div class="siteseo-tab' .($current_tab == 'tab_dashbord' ? ' active' : '').'" id="tab_dashbord" style="display: none;">'; self::dashbord_tab(); echo'</div> <div class="siteseo-tab' .($current_tab == 'tab_seo_statistics' ? ' active' : '').'" id="tab_seo_statistics" style="display: none;">'; self::seo_statistics_tab(); echo'</div> <div class="siteseo-tab' .($current_tab == 'tab_keyword_rank' ? ' active' : '').'" id="tab_keyword_rank" style="display: none;">'; self::keyword_ranking_tab(); echo'</div> <div class="siteseo-tab' .($current_tab == 'tab_content_ranking' ? ' active' : '').'" id="tab_content_ranking" style="display: none;">'; self::content_ranking_tab(); echo'</div> <div class="siteseo-tab '.($current_tab =='tab_audience' ? ' active' : '').'" id="tab_audience" style="display:none;">'; self::audience_tab(); echo'</div> </div>'; echo'</form></div>'; } static function fetch_data(){ $is_connected = ''; if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'is_connected')){ $is_connected = \SiteSEOPro\GoogleConsole::is_connected(); } $analytics_data = get_option('siteseo_search_console_data', []); if(empty($analytics_data) && empty($is_connected)){ // Show sample data when not connected return [ 'metrics' => self::sample_metrics_data(), 'top_pages' => self::sample_top_pages(), 'top_loss_pages' => array_slice(self::sample_top_pages(), 0, 3), // Sample loss pages 'top_winning_pages' => array_slice(self::sample_top_pages(), 3, 3), // Sample winning pages 'keywords' => self::sample_keywords(), 'top_winning_keywords' => array_slice(self::sample_keywords(), 0, 3), // Sample winning keywords 'top_loss_keywords' => array_slice(self::sample_keywords(), 3, 2), // Sample loss keywords 'content_ranking' => self::sample_content_ranking(), 'country_data' => self::sample_country_data(), 'device_data' => self::sample_device_data(), 'is_sample' => true ]; } return [ 'metrics' => isset($analytics_data['metrics']) ? $analytics_data['metrics'] : [ 'impressions' => [ 'current' => '0', 'change' => '0', 'trend' => 'neutral', 'chart_data' => [] ], 'clicks' => [ 'current' => '0', 'change' => '0', 'trend' => 'neutral', 'chart_data' => [] ], 'ctr' => [ 'current' => '0%', 'change' => '0', 'trend' => 'neutral', 'chart_data' => [] ], 'position' => [ 'current' => '0', 'change' => '0', 'trend' => 'neutral', 'chart_data' => [] ] ], 'top_pages' => isset($analytics_data['top_pages']) ? array_slice($analytics_data['top_pages'], 0, 5) : [], 'top_loss_pages' => isset($analytics_data['top_loss_pages']) ? array_slice($analytics_data['top_loss_pages'], 0, 5) : [], 'top_winning_pages' => isset($analytics_data['top_winning_pages']) ? array_slice($analytics_data['top_winning_pages'], 0, 5) : [], 'keywords' => isset($analytics_data['top_keywords']) ? array_slice($analytics_data['top_keywords'], 0, 5) : [], 'top_winning_keywords' => isset($analytics_data['top_winning_keywords']) ? array_slice($analytics_data['top_winning_keywords'], 0, 5) : [], 'top_loss_keywords' => isset($analytics_data['top_loss_keywords']) ? array_slice($analytics_data['top_loss_keywords'], 0, 5) : [], 'content_ranking' => isset($analytics_data['content_ranking']) ? $analytics_data['content_ranking'] : [], 'country_data' => isset($analytics_data['country_audience']) ? $analytics_data['country_audience'] : [], 'device_data' => isset($analytics_data['device_audience']) ? $analytics_data['device_audience'] : [], 'is_sample' => false ]; } static function dashbord_tab(){ self::connect_notices(); $data = self::fetch_data(); $metrics = $data['metrics']; $top_pages = $data['top_pages']; $top_loss_pages = $data['top_loss_pages']; $top_winning_pages = $data['top_winning_pages']; $keywords = $data['keywords']; $top_winning_keywords = $data['top_winning_keywords']; $top_loss_keywords = $data['top_loss_keywords']; echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Search Performance', 'siteseo').'</h2> <hr class="siteseo-stats-separator"> <div class="siteseo-dashboard-grid"> <div class="siteseo-metric-card"> <div class="siteseo-metric-header"> <span class="siteseo-metric-title">'.esc_html__('Search Impressions', 'siteseo').'</span> </div> <div class="siteseo-metric-value-row"> <span class="siteseo-metric-value">'.esc_html($metrics['impressions']['current']).'</span> <span class="siteseo-metric-change '.($metrics['impressions']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['impressions']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'"> '.($metrics['impressions']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['impressions']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['impressions']['change']).' </span> </div> <div class="siteseo-chart-container"> <canvas id="siteseo_impressions_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div> </div> <div class="siteseo-metric-card"> <div class="siteseo-metric-header"> <span class="siteseo-metric-title">'.esc_html__('Total Clicks', 'siteseo').'</span> </div> <div class="siteseo-metric-value-row"> <span class="siteseo-metric-value">'.esc_html($metrics['clicks']['current']).'</span> <span class="siteseo-metric-change '.($metrics['clicks']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['clicks']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'"> '.($metrics['clicks']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['clicks']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['clicks']['change']).' </span> </div> <div class="siteseo-chart-container"> <canvas id="siteseo_clicks_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div> </div> <div class="siteseo-metric-card"> <div class="siteseo-metric-header"> <span class="siteseo-metric-title">'.esc_html__('Avg. CTR', 'siteseo').'</span> </div> <div class="siteseo-metric-value-row"> <span class="siteseo-metric-value">'.esc_html($metrics['ctr']['current']).'</span> <span class="siteseo-metric-change '.($metrics['ctr']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['ctr']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'"> '.($metrics['ctr']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['ctr']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['ctr']['change']).' </span> </div> <div class="siteseo-chart-container"> <canvas id="siteseo_ctr_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div> </div> <div class="siteseo-metric-card"> <div class="siteseo-metric-header"> <span class="siteseo-metric-title">'.esc_html__('Avg. Position', 'siteseo').'</span> </div> <div class="siteseo-metric-value-row"> <span class="siteseo-metric-value">'.esc_html($metrics['position']['current']).'</span> <span class="siteseo-metric-change '.($metrics['position']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['position']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'"> '.($metrics['position']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['position']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['position']['change']).' </span> </div> <div class="siteseo-chart-container"> <canvas id="siteseo_position_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div> </div> </div> </div>'; if(!empty($top_pages) || $data['is_sample']){ echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Content Performance ( Top 5 )', 'siteseo').'</h2> <div class="siteseo-inner-tabs-wrap"> <input type="radio" id="siteseo-statistics-top-page" name="siteseo-inner-tabs-pages" checked> <input type="radio" id="siteseo-statistics-top-loss" name="siteseo-inner-tabs-pages"> <input type="radio" id="siteseo-statistics-top-winning" name="siteseo-inner-tabs-pages"> <ul class="siteseo-inner-tabs"> <li class="siteseo-inner-tab"><label for="siteseo-statistics-top-page">'.esc_html__('Top Pages', 'siteseo').'</label></li> <li class="siteseo-inner-tab"><label for="siteseo-statistics-top-loss">'.esc_html__('Top loss', 'siteseo').'</label></li> <li class="siteseo-inner-tab"><label for="siteseo-statistics-top-winning">'.esc_html__('Top winning', 'siteseo').'</label></li> </ul> <div class="siteseo-inner-tab-content"> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Title', 'siteseo').'</th> <th>'.esc_html__('Score', 'siteseo').'</th> <th>'.esc_html__('Indexed', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> <th>'.esc_html__('Diff', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($top_pages as $page){ $score = $page['truseo_score']; if($score >= 80){ $badge_class = 'siteseo-gsc-score-good'; } elseif ($score >= 50){ $badge_class = 'siteseo-gsc-score-avg'; } else{ $badge_class = 'siteseo-gsc-score-bad'; } echo'<tr> <td>'.esc_html($page['title']).'</td> <td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td> <td><span class="dashicons '.($page['indexed'] ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td> <td>'.esc_html($page['clicks']).'</td> <td>'.esc_html($page['impressions']).'</td> <td>'.esc_html($page['position']).'</td> <td style="color:'.(isset($page['diff']) && strpos($page['diff'], '+') === 0 ? '#28a745' : '#dc3545').';">'.esc_html($page['diff']).'</td> </tr>'; } if(empty($top_pages) && !$data['is_sample']){ echo '<tr><td colspan="7" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>'; } echo'</tbody></table> </div> <div class="siteseo-inner-tab-content"> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Title', 'siteseo').'</th> <th>'.esc_html__('Score', 'siteseo').'</th> <th>'.esc_html__('Indexed', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> <th>'.esc_html__('Diff', 'siteseo').'</th> </tr> </thead> <tbody>'; // Use top_loss_pages instead of top_pages foreach($top_loss_pages as $page){ $score = $page['truseo_score']; if($score >= 80){ $badge_class = 'siteseo-gsc-score-good'; } elseif($score >= 50){ $badge_class = 'siteseo-gsc-score-avg'; } else{ $badge_class = 'siteseo-gsc-score-bad'; } echo'<tr> <td>'.esc_html($page['title']).'</td> <td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td> <td><span class="dashicons '.($page['indexed'] ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td> <td>'.esc_html($page['clicks']).'</td> <td>'.esc_html($page['impressions']).'</td> <td>'.esc_html($page['position']).'</td> <td style="color:#dc3545;">'.esc_html($page['diff']).'</td> </tr>'; } if(empty($top_loss_pages) && !$data['is_sample']){ echo '<tr><td colspan="7" style="text-align:center;">'.esc_html__('No loss pages data available', 'siteseo').'</td></tr>'; } echo'</tbody></table> </div> <div class="siteseo-inner-tab-content"> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Title', 'siteseo').'</th> <th>'.esc_html__('Score', 'siteseo').'</th> <th>'.esc_html__('Indexed', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> <th>'.esc_html__('Diff', 'siteseo').'</th> </tr> </thead> <tbody>'; // Use top_winning_pages instead of top_pages foreach($top_winning_pages as $page){ $score = $page['truseo_score']; if($score >= 80){ $badge_class = 'siteseo-gsc-score-good'; } elseif($score >= 50){ $badge_class = 'siteseo-gsc-score-avg'; } else{ $badge_class = 'siteseo-gsc-score-bad'; } echo'<tr> <td>'.esc_html($page['title']).'</td> <td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td> <td><span class="dashicons '.($page['indexed'] ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td> <td>'.esc_html($page['clicks']).'</td> <td>'.esc_html($page['impressions']).'</td> <td>'.esc_html($page['position']).'</td> <td style="color:#28a745;">'.esc_html($page['diff']).'</td> </tr>'; } if(empty($top_winning_pages) && !$data['is_sample']){ echo '<tr><td colspan="7" style="text-align:center;">'.esc_html__('No winning pages data available', 'siteseo').'</td></tr>'; } echo'</tbody></table> </div> </div> </div>'; } if(!empty($keywords) || $data['is_sample']){ echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Keyword Rankings ( Top 5 )', 'siteseo').'</h2> <div class="siteseo-inner-tabs-wrap"> <input type="radio" id="siteseo-statistics-top-keywords" name="siteseo-inner-tabs-keywords" checked> <input type="radio" id="siteseo-statistics-winning-keywords" name="siteseo-inner-tabs-keywords"> <input type="radio" id="siteseo-statistics-loss-keywords" name="siteseo-inner-tabs-keywords"> <ul class="siteseo-inner-tabs"> <li class="siteseo-inner-tab"><label for="siteseo-statistics-top-keywords">'.esc_html__('Top Keywords', 'siteseo').'</label></li> <li class="siteseo-inner-tab"><label for="siteseo-statistics-winning-keywords">'.esc_html__('Top Winning', 'siteseo').'</label></li> <li class="siteseo-inner-tab"><label for="siteseo-statistics-loss-keywords">'.esc_html__('Top LOSS', 'siteseo').'</label></li> </ul> <div class="siteseo-inner-tab-content"> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead> <tr> <th>'.esc_html__('Keyword', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> <th>'.esc_html__('CTR', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($keywords as $keyword){ echo'<tr> <td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td> <td style="font-weight:bold;">'.esc_html($keyword['clicks']).'</td> <td>'.esc_html($keyword['impressions']).'</td> <td>'.esc_html($keyword['ctr']).'</td> <td>'.esc_html($keyword['position']).'</td> </tr>'; } if(empty($keywords) && !$data['is_sample']){ echo'<tr><td colspan="5" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>'; } echo'</tbody> </table> </div> <div class="siteseo-inner-tab-content"> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead> <tr> <th>'.esc_html__('Keyword', 'siteseo').'</th> <th>'.esc_html__('Points', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> </tr> </thead> <tbody>'; // Use top_winning_keywords instead of keywords foreach($top_winning_keywords as $keyword){ echo'<tr> <td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td> <td style="color:#28a745;font-weight:bold;">'.esc_html($keyword['points']).'</td> <td>'.esc_html($keyword['clicks']).'</td> <td>'.esc_html($keyword['position']).'</td> </tr>'; } if(empty($top_winning_keywords) && !$data['is_sample']){ echo'<tr><td colspan="4" style="text-align:center;">'.esc_html__('No winning keywords data available', 'siteseo').'</td></tr>'; } echo'</tbody> </table> </div> <div class="siteseo-inner-tab-content"> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead> <tr> <th>'.esc_html__('Keyword', 'siteseo').'</th> <th>'.esc_html__('Points', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> </tr> </thead> <tbody>'; // Use top_loss_keywords instead of keywords foreach($top_loss_keywords as $keyword){ echo'<tr> <td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td> <td style="color:#dc3545;font-weight:bold;">'.esc_html($keyword['points']).'</td> <td>'.esc_html($keyword['clicks']).'</td> <td>'.esc_html($keyword['position']).'</td> </tr>'; } if(empty($top_loss_keywords) && !$data['is_sample']){ echo'<tr><td colspan="4" style="text-align:center;">'.esc_html__('No loss keywords data available', 'siteseo').'</td></tr>'; } echo'</tbody> </table> </div> </div> </div>'; } } static function seo_statistics_tab(){ self::connect_notices(); $data = self::fetch_data(); $metrics = $data['metrics']; $top_pages = $data['top_pages']; echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Site Search Traffic', 'siteseo').'</h2> <hr class="siteseo-stats-separator"> <ul class="siteseo-stats-list"> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Search Impressions', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($metrics['impressions']['current']).'</span> <span class="siteseo-stat-change '.($metrics['impressions']['trend'] == 'negative' ? 'negative' : ($metrics['impressions']['trend'] == 'positive' ? 'positive' : '')).'"> '.($metrics['impressions']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['impressions']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['impressions']['change']).' </span> </div> </li> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Total Clicks', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($metrics['clicks']['current']).'</span> <span class="siteseo-stat-change '.($metrics['clicks']['trend'] == 'negative' ? 'negative' : ($metrics['clicks']['trend'] == 'positive' ? 'positive' : '')).'"> '.($metrics['clicks']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['clicks']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['clicks']['change']).' </span> </div> </li> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Avg. CTR', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($metrics['ctr']['current']).'</span> <span class="siteseo-stat-change '.($metrics['ctr']['trend'] == 'negative' ? 'negative' : ($metrics['ctr']['trend'] == 'positive' ? 'positive' : '')).'"> '.($metrics['ctr']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['ctr']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').' '.esc_html($metrics['ctr']['change']).' </span> </div> </li> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Avg. Position.', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($metrics['position']['current']).'</span> <span class="siteseo-stat-change '.($metrics['position']['trend'] == 'negative' ? 'negative' : ($metrics['position']['trend'] == 'positive' ? 'positive' : '')) . '"> '.($metrics['position']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-' . ($metrics['position']['trend'] == 'negative' ? 'down' : 'up') . '"></span>' : '' ) . ' '.esc_html($metrics['position']['change']).' </span> </div> </li> </ul> <canvas id="seo_statistics" width="950" height="250" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div>'; if(!empty($top_pages) || $data['is_sample']){ echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Content Analysis ( Top 5 )', 'siteseo').'</h2> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Page', 'siteseo').'</th> <th>'.esc_html__('Status', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Avg position', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> <th>'.esc_html__('Content Score', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($top_pages as $page){ $score = $page['truseo_score']; if($score >= 80){ $badge_class = 'siteseo-gsc-score-good'; } elseif ($score >= 50){ $badge_class = 'siteseo-gsc-score-avg'; } else{ $badge_class = 'siteseo-gsc-score-bad'; } echo'<tr> <td>'.esc_html($page['title']).'</td> <td>'.(isset($page['indexed']) ? ($page['indexed'] ? '<span class="dashicons dashicons-yes-alt" style="color:#28a745;"></span>' : '<span class="dashicons dashicons-dismiss" style="color:#dc3545;"></span>') : '<span class="dashicons dashicons-editor-help" style="color:#6c757d;"></span>').'</td> <td>'.esc_html($page['clicks']).'</td> <td>'.esc_html($page['position']).'</td> <td>'.esc_html($page['impressions']).'</td> <td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td> </tr>'; } if(empty($top_pages) && !$data['is_sample']){ echo'<tr><td colspan="6" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>'; } echo'</tbody></table> </div>'; } } static function keyword_ranking_tab(){ self::connect_notices(); $data = self::fetch_data(); $keywords = $data['keywords']; // Get actual analytics data if available $analytics_data = get_option('siteseo_search_console_data', []); $has_actual_data = !empty($analytics_data) && !isset($analytics_data['error']); // Prepare values based on actual data or sample if($has_actual_data && !$data['is_sample']){ // Use actual data $total_keywords = isset($analytics_data['top_keywords']) ? count($analytics_data['top_keywords']) : 0; $total_impressions = isset($analytics_data['metrics']['impressions']['current']) ? $analytics_data['metrics']['impressions']['current'] : '0'; $avg_ctr = isset($analytics_data['metrics']['ctr']['current']) ? $analytics_data['metrics']['ctr']['current'] : '0%'; $impression_change = isset($analytics_data['metrics']['impressions']['change']) ? $analytics_data['metrics']['impressions']['change'] : '0'; $impression_trend = isset($analytics_data['metrics']['impressions']['trend']) ? $analytics_data['metrics']['impressions']['trend'] : 'neutral'; $ctr_change = '0'; $ctr_trend = 'neutral'; } else{ // Use sample data or zeros $total_keywords = $data['is_sample'] ? '19K' : '0'; $total_impressions = $data['is_sample'] ? '15M' : '0'; $avg_ctr = $data['is_sample'] ? '48.25%' : '0%'; $impression_change = $data['is_sample'] ? '475.7K' : '0'; $impression_trend = $data['is_sample'] ? 'negative' : 'neutral'; $ctr_change = $data['is_sample'] ? '1' : '0'; $ctr_trend = $data['is_sample'] ? 'negative' : 'neutral'; } echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Keyword Positions', 'siteseo').'</h2> <hr class="siteseo-stats-separator"> <ul class="siteseo-stats-list"> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Total Keyword', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($total_keywords).'</span> '.($data['is_sample'] ? '<span class="siteseo-stat-change positive"> <span class="dashicons dashicons-arrow-up"></span>2.9K </span>' : '').' </div> </li> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Search Impressions', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($total_impressions).'</span> '.((!$data['is_sample'] && $has_actual_data) ? '<span class="siteseo-stat-change '.esc_attr($impression_trend).'"> <span class="dashicons dashicons-arrow-'.($impression_trend === 'positive' ? 'up' : 'down').'"></span>' .esc_html($impression_change).' </span>' : ($data['is_sample'] ? '<span class="siteseo-stat-change negative"> <span class="dashicons dashicons-arrow-down"></span>475.7K </span>' : '')).' </div> </li> <li class="siteseo-stat-item"> <div class="siteseo-stat-header"> <span class="siteseo-stat-label">'.esc_html__('Avg. CTR', 'siteseo').'</span> </div> <div class="siteseo-stat-value-group"> <span class="siteseo-stat-value">'.esc_html($avg_ctr).'</span> '.($data['is_sample'] ? '<span class="siteseo-stat-change negative"> <span class="dashicons dashicons-arrow-down"></span>1 </span>' : '').' </div> </li> </ul> <div style="display:flex; gap:20px; flex-wrap:wrap;"> <div style="flex:1; min-width:280px; max-width:50%;"> <canvas id="siteseo_keyword_muti_line_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'" data-actual="'.($has_actual_data ? '1' : '0').'"></canvas> </div> <div style="flex:1; min-width:280px; max-width:50%;"> <canvas id="siteseo_keyword_bar_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'" data-actual="'.($has_actual_data ? '1' : '0').'"></canvas> </div> </div> </div>'; if(!empty($keywords) || $data['is_sample']){ echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Content Analysis ( Top 5 )', 'siteseo').'</h2> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Keywords', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Avg. CTR', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> <th>'.esc_html__('Position', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($keywords as $keyword){ echo'<tr> <td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td> <td>'.esc_html($keyword['clicks']).'</td> <td>'.esc_html($keyword['ctr']).'</td> <td>'.esc_html($keyword['impressions']).'</td> <td>'.esc_html($keyword['position']).'</td> </tr>'; } if(empty($keywords) && !$data['is_sample']){ echo'<tr><td colspan="6" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>'; } echo'</tbody></table> </div>'; } } static function content_ranking_tab(){ self::connect_notices(); $data = self::fetch_data(); $content_ranking = $data['content_ranking']; if(!empty($content_ranking) || $data['is_sample']){ // Pagination setup $items_per_page = 10; $total_items = count($content_ranking); $total_pages = ceil($total_items / $items_per_page); $current_page = isset($_GET['cr_page']) ? max(1, intval($_GET['cr_page'])) : 1; $offset = ($current_page - 1) * $items_per_page; $paged_items = array_slice($content_ranking, $offset, $items_per_page); echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Content Analysis (Top 30)', 'siteseo').'</h2> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Title', 'siteseo').'</th> <th>'.esc_html__('Indexed', 'siteseo').'</th> <th>'.esc_html__('Last Update on', 'siteseo').'</th> <th>'.esc_html__('Loss', 'siteseo').'</th> <th>'.esc_html__('Drop (%)', 'siteseo').'</th> <th>'.esc_html__('Performance Score', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($paged_items as $content){ $score = (int) explode('/', $content['performance_score'])[0]; if($score >= 80){ $badge_class = 'siteseo-gsc-score-good'; } elseif($score >= 50){ $badge_class = 'siteseo-gsc-score-avg'; } else{ $badge_class = 'siteseo-gsc-score-bad'; } echo'<tr> <td>'.esc_html($content['title']).'</td> <td><span class="dashicons '.($content['indexed'] === 'Yes' ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td> <td>'.esc_html($content['last_update']).'</td> <td style="color:#dc3545;">'.esc_html($content['loss']).'</td> <td style="color:#dc3545;">'.esc_html($content['drop_percent']).'</td> <td><span class="'.esc_attr($badge_class).'">'.esc_html($content['performance_score']).'</span></td> </tr>'; } if(empty($content_ranking) && !$data['is_sample']){ echo'<tr><td colspan="6" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>'; } echo'</tbody></table>'; // Pagination controls if($total_pages > 1){ echo'<div class="siteseo-pagination" style="margin-top: 20px; text-align: center;">'; // Previous btn if($current_page > 1){ echo'<a href="'.esc_url(add_query_arg('cr_page', $current_page - 1)).'" class="siteseo-option btnSecondary">'.esc_html__('Previous', 'siteseo').'</a> '; } // Page numbers for($i = 1; $i <= $total_pages; $i++){ if($i == $current_page){ echo'<span class="siteseo-option btnSecondary" style="margin: 0 2px;">'.esc_html($i).'</span> '; } else{ echo'<a href="'.esc_url(add_query_arg('cr_page', $i)).'" class="siteseo-option btnSecondary" style="margin: 0 2px;">'.esc_html($i).'</a> '; } } // Next btn if($current_page < $total_pages){ echo'<a href="'.esc_url(add_query_arg('cr_page', $current_page + 1)).'" class="siteseo-option btnSecondary">'.esc_html__('Next', 'siteseo').'</a>'; } echo'</div>'; } echo'</div>'; } } static function audience_tab(){ self::connect_notices(); $data = self::fetch_data(); $country_data = $data['country_data']; $device_data = $data['device_data']; echo'<div class="siteseo-audience-statisc"> <div class="siteseo-stats-container"> <h2 class="siteseo-stat-title">'.esc_html__('Device breakdown', 'siteseo').'</h2> <hr class="siteseo-stats-separator"> <canvas id="siteseo_device_statics" height="250px" width="520px" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div> <div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Top countries by click ( Top 5 )', 'siteseo').'</h2> <hr class="siteseo-stats-separator"> <canvas id="siteseo_country_statics" height="300px" width="520px" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas> </div> </div>'; if(!empty($device_data) || $data['is_sample']){ echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Device Performance', 'siteseo').'</h2> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Device', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($device_data as $data){ echo'<tr> <td style="font-weight:bold;">'.esc_html( is_array($data['device']) ? implode(', ', $data['device']) : $data['device']).'</td> <td>'.esc_html($data['clicks']).'</td> <td>'.esc_html($data['impressions']).'</td> </tr>'; } echo'</tbody></table> </div>'; } if(!empty($country_data) || $data['is_sample']){ echo'<div class="siteseo-stats-container"> <h2 class="siteseo-stats-title">'.esc_html__('Country Performance ( Top 5 )', 'siteseo').'</h2> <table class="wp-list-table widefat fixed striped siteseo-history-table"> <thead><tr> <th>'.esc_html__('Country', 'siteseo').'</th> <th>'.esc_html__('Clicks', 'siteseo').'</th> <th>'.esc_html__('Impressions', 'siteseo').'</th> </tr> </thead> <tbody>'; foreach($country_data as $data){ echo '<tr> <td style="font-weight:bold;">'.esc_html($data['country']).'</td> <td>'.esc_html($data['clicks']).'</td> <td>'.esc_html($data['impressions']).'</td> </tr>'; } echo'</tbody></table> </div>'; } } static function connect_notices(){ $analytics_data = ''; $gsc_connected = ''; if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'is_connected')){ $analytics_data = get_option('siteseo_search_console_data', []); $gsc_connected = \SiteSEOPro\GoogleConsole::is_connected(); } if(empty($gsc_connected)){ echo'<div class="siteseo-notice is-warning"><p>'.wp_kses_post(__('The data shown here is only a <strong> sample from Google Analytics</strong> how SiteSEO will display your site\'s analytics once connected.', 'siteseo')).'</p>'; if(class_exists('\SiteSEOPro\GoogleConsole')){ echo'<form method="post">'; wp_nonce_field('siteseo_pro_connect_google'); echo '<input type="hidden" name="redirect_type" value="settings"> <button type="submit" name="siteseo_pro_connect_btn" class="siteseo-statistics-connect-btn">'.esc_html__('Connect Search Console', 'siteseo') .'</button> </form>'; } else{ echo'<a href="https://siteseo.io/pricing" class="siteseo-statistics-connect-btn" target="_blank">'.esc_html__('Buy Pro', 'siteseo').'</a>'; } echo'</div>'; } elseif(empty($analytics_data['top_pages']) && !empty($gsc_connected)){ echo '<div class="siteseo-notice is-info"><p>'.wp_kses_post(__('Connected to Google Search Console. If this is your first time connecting the site and data doesn’t appear yet, please wait—Google may take a few days to populate the data. You can also try refreshing.', 'siteseo')).'</p></div>'; } } static function sample_device_data(){ return [ [ 'device' => 'Mobile', 'clicks' => '48k', 'impressions' => '285k', 'ctr' => '5.2%', ], [ 'device' => 'Desktop', 'clicks' => '70k', 'impressions' => '196k', 'ctr' => '3.8%', ], [ 'device' => 'Tablet', 'clicks' => '10k', 'impressions' => '185k', 'ctr' => '8.1%', ], ]; } static function sample_country_data(){ return [ [ 'country' => 'India', 'clicks' => '8K', 'impressions' => '154K', 'ctr' => '5.2%', ], [ 'country' => 'Poland', 'clicks' => '5K', 'impressions' => '132K', 'ctr' => '3.8%', ], [ 'country' => 'South Africa', 'clicks' => '15K', 'impressions' => '185k', 'ctr' => '8.1%', ], [ 'country' => 'Russia', 'clicks' => '19K', 'impressions' => '200k', 'ctr' => '9.5%', ], [ 'country' => 'United kingdom', 'clicks' => '12K', 'impressions' => '150k', 'ctr' => '5.5%', ], ]; } static function sample_metrics_data(){ return [ 'impressions' => [ 'current' => '15M', 'change' => '-475.7K', 'trend' => 'negative', 'chart_data' => [12, 19, 3, 5, 2, 3, 10, 8, 12, 14, 13, 15] ], 'clicks' => [ 'current' => '111.5K', 'change' => '+1.7K', 'trend' => 'positive', 'chart_data' => [7, 11, 5, 8, 3, 7, 4, 5, 6, 7, 6, 8] ], 'ctr' => [ 'current' => '0.74%', 'change' => '+0.03%', 'trend' => 'positive', 'chart_data' => [0.5, 0.6, 0.7, 0.65, 0.75, 0.7, 0.6, 0.7, 0.72, 0.74, 0.73, 0.75] ], 'position' => [ 'current' => '49', 'change' => '+1', 'trend' => 'negative', 'chart_data' => [55, 50, 45, 50, 48, 52, 55, 50, 49, 47, 48, 49] ] ]; } static function sample_top_pages(){ return [ [ 'title' => '/blog/', 'truseo_score' => '95', 'indexed' => true, 'clicks' => '4.5K', 'impressions' => '57.2K', 'position' => '23', 'diff' => '+2' ], [ 'title' => '/contact-us/', 'truseo_score' => '88', 'indexed' => false, 'clicks' => '1.2K', 'impressions' => '1.2M', 'position' => '40', 'diff' => '-5' ], [ 'title' => '/support/', 'truseo_score' => '92', 'indexed' => false, 'clicks' => '15K', 'impressions' => '1.9M', 'position' => '16', 'diff' => '+3' ], [ 'title' => '/pricing/', 'truseo_score' => '85', 'indexed' => true, 'clicks' => '8.7K', 'impressions' => '890K', 'position' => '12', 'diff' => '+1' ], [ 'title' => '/features/', 'truseo_score' => '90', 'indexed' => true, 'clicks' => '12.3K', 'impressions' => '1.5M', 'position' => '8', 'diff' => '+4' ] ]; } static function sample_keywords(){ return [ [ 'keyword' => 'One click seo plugin', 'clicks' => '8K', 'ctr' => '5.2%', 'impressions' => '154K', 'position' => '3', 'trend' => 'up', 'points' => '90' ], [ 'keyword' => 'wordpress seo', 'clicks' => '5K', 'ctr' => '3.8%', 'impressions' => '132K', 'position' => '7', 'trend' => 'up', 'points' => '80' ], [ 'keyword' => 'best seo plugin plugin', 'clicks' => '15K', 'ctr' => '8.1%', 'impressions' => '185K', 'position' => '2', 'trend' => 'up', 'points' => '85' ], [ 'keyword' => 'seo optimization', 'clicks' => '3.2K', 'ctr' => '2.1%', 'impressions' => '152K', 'position' => '15', 'trend' => 'down', 'points' => '88' ], [ 'keyword' => 'website ranking', 'clicks' => '6.8K', 'ctr' => '4.5%', 'impressions' => '151K', 'position' => '5', 'trend' => 'up', 'points' => '70' ] ]; } static function sample_content_ranking(){ return [ [ 'title' => 'Ultimate SEO Guide 2024', 'indexed' => 'Yes', 'last_update' => '2024-01-15', 'loss' => '2.1K', 'drop_percent' => '5.2%', 'performance_score' => '88' ], [ 'title' => 'WordPress Optimization Tips', 'indexed' => 'Yes', 'last_update' => '2024-01-10', 'loss' => '1.5K', 'drop_percent' => '3.8%', 'performance_score' => '92' ], [ 'title' => 'Mobile SEO Strategies', 'indexed' => 'No', 'last_update' => '2024-01-08', 'loss' => '3.2K', 'drop_percent' => '8.1%', 'performance_score' => '75' ], [ 'title' => 'Content Marketing Guide', 'indexed' => 'Yes', 'last_update' => '2024-01-12', 'loss' => '0.8K', 'drop_percent' => '2.1%', 'performance_score' => '95' ] ]; } static function connect_site_dialogbox(){ $gsc_sites = ''; $current_site_url = trailingslashit(get_site_url()); if(class_exists('\SiteSEOPro\GSCSetup') && method_exists('\SiteSEOPro\GSCSetup', 'get_pre_connected_sites')){ $gsc_sites = \SiteSEOPro\GSCSetup::get_pre_connected_sites(); } $current_site_exists = false; if(!empty($gsc_sites) && !isset($gsc_sites['error'])){ foreach($gsc_sites as $site){ if($site['siteUrl'] === $current_site_url){ $current_site_exists = true; break; } } } echo'<div id="siteseo-site-connection-dialog" title="'.esc_attr__('Connect site search console', 'siteseo').'" style="display:none;"> <div class="siteseo-dialog-content">'; echo'<div id="siteseo-main-section">'; if($current_site_exists){ // Tab: Current Site echo'<div class="siteseo-option-primary" style="margin-bottom:20px;"> <p style="color:#1d2327;font-weight:400;font-size:14px;">'.esc_html__('This site is already in your Google Search Console account.', 'siteseo').'</p> <div class="siteseo-form-group"> <input type="text" id="siteseo-site-url" value="' . esc_attr($current_site_url) . '" class="regular-text" readonly style="width:100%;padding:8px;background:#f6f7f7;border:1px solid #8c8f94;color:#666;cursor:not-allowed;" /> </div> <div class="siteseo-dialog-actions"> <button type="button" class="button button-primary siteseo-action-btn" id="siteseo-connect-existing">'.esc_html__('Connect', 'siteseo').'</button> <span class="spinner"></span> </div> </div>'; if(!empty($gsc_sites)){ echo '<div class="siteseo-option-secondary"> <button type="button" class="button button-link" id="siteseo-show-existing-properties" style="width:100%;text-decoration:none;">'.esc_html__('Select from existing sites', 'siteseo').'</button> </div>'; } } else{ // Not connected yet echo'<div class="siteseo-option-primary" style="margin-bottom:20px;"> <p style="color:#1d2327;font-weight:400;font-size:14px;">'.esc_html__('This domain isn\'t yet connected to Google Search Console.', 'siteseo').'</p> <div class="siteseo-form-group"> <input type="text" id="siteseo-new-domain-url" value="' . esc_attr($current_site_url) . '" class="regular-text" readonly style="width:100%;padding:8px;background:#f6f7f7;border:1px solid #8c8f94;color:#666;cursor:not-allowed;" /> </div> <button type="button" class="button button-primary siteseo-action-btn siteseo-create-btn" id="siteseo-create-gsc-property" style="margin-bottom:10px;">'.esc_html__('Connect New Domain', 'siteseo').'</button> <span class="spinner"></span> </div>'; if(!empty($gsc_sites)){ echo'<div class="siteseo-option-secondary"> <button type="button" class="button button-link" id="siteseo-show-existing-properties" style="width:100%;text-decoration:none;">'.esc_html__('Connect with existing properties', 'siteseo').'</button> </div>'; } } echo'</div>'; if(!empty($gsc_sites) && !isset($gsc_sites['error'])){ echo'<div id="siteseo-existing-properties-section" style="display:none;"> <p style="color:#1d2327;font-weight:400;font-size:14px;">'. esc_html__('Select an existing site from your Google Search Console account.', 'siteseo').'</p> <div class="siteseo-form-group"> <select id="siteseo-site-url" name="existing_site_url" class="siteseo-select-box">'; foreach($gsc_sites as $site){ echo'<option value="'.esc_attr($site['siteUrl']).'">'.esc_html($site['siteUrl']).'</option>'; } echo'</select> </div> <div class="siteseo-dialog-actions"> <button type="button" class="button button-secondary siteseo-action-btn" id="siteseo-back-to-main">'.esc_html__('Back', 'siteseo').'</button> <button type="button" class="button button-primary siteseo-action-btn" id="siteseo-connect-existing">'.esc_html__('Connect', 'siteseo').'</button> <span class="spinner" style="margin-top:7px;"></span> </div> </div>'; } echo'</div></div>'; // End dialog content + wrapper } }
Upload File
Create Folder