{"id":118214,"date":"2020-03-09T09:42:15","date_gmt":"2020-03-09T09:42:15","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wp-adsterra-dashboard\/"},"modified":"2026-03-22T13:54:26","modified_gmt":"2026-03-22T13:54:26","slug":"wp-adsterra-dashboard","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/wp-adsterra-dashboard\/","author":15953617,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0.0","stable_tag":"trunk","tested":"7.0","requires":"5.0","requires_php":"8.0","requires_plugins":null,"header_name":"WP Adsterra Dashboard","header_author":"Vincenzo Luongo","header_description":"WP AdsTerra Dashboard for view statistics via API","assets_banners_color":"a1432e","last_updated":"2026-03-22 13:54:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress-plugins.luongovincenzo.it\/plugin\/wp-adsterra-dashboard","header_author_uri":"https:\/\/www.luongovincenzo.it\/","rating":5,"author_block_rating":0,"active_installs":500,"downloads":15163,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":2257228,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":2257228,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1344x500.jpg":{"filename":"banner-1344x500.jpg","revision":2257228,"resolution":"1344x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":2257228,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Adsterra API Documentations Page","2":"Settings Page","3":"Widget"}},"plugin_section":[262246],"plugin_tags":[182780,182782,182781],"plugin_category":[],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-118214","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-adsterra-dashboard","plugin_tags-adsterra-publishers-dashboard","plugin_tags-adsterra-stats","plugin_committers-vluongo"],"banners":{"banner":"https:\/\/ps.w.org\/wp-adsterra-dashboard\/assets\/banner-772x250.jpg?rev=2257228","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wp-adsterra-dashboard\/assets\/icon-128x128.jpg?rev=2257228","icon_2x":"https:\/\/ps.w.org\/wp-adsterra-dashboard\/assets\/icon-256x256.jpg?rev=2257228","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WP AdsTerra Dashboard allows you to view your Adsterra advertising statistics directly in your WordPress admin dashboard. This plugin provides a convenient widget that displays your daily earnings, impressions, clicks, CPM, and CTR data with beautiful charts.<\/p>\n\n<p><strong>Key Features:<\/strong>\n* Secure AJAX calls with CSRF protection\n* Optimized API performance with caching\n* Real-time statistics dashboard widget\n* Monthly data filtering\n* Interactive charts with Chart.js\n* Robust error handling and validation\n* WordPress security best practices compliance<\/p>\n\n<p><strong>Version 2.0.0 Highlights:<\/strong>\n* Complete security overhaul with XSS and CSRF protection\n* Performance optimization with API call reduction and caching\n* Enhanced mathematical accuracy for CPM\/CTR calculations\n* Improved error handling and user experience<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>wp-adsterra-dashboard<\/code> to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Edit the plugin settings by clicking \"Adsterra Settings\" on the settings navbar<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"this%20is%20official%20plugin%3F\"><h3>This is official plugin?<\/h3><\/dt>\n<dd><p>No<\/p><\/dd>\n<dt id=\"is%20there%20a%20premium%20version%20available%3F\"><h3>Is there a premium version available?<\/h3><\/dt>\n<dd><p>There is currently no premium version available.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20the%20api%20token%3F\"><h3>Where can I get the api token?<\/h3><\/dt>\n<dd><p>Setup an free account and get your credential from <a href=\"https:\/\/api3.adsterratools.com\/docs\/publishers\" title=\"Adsterra Docs\">Adsterra - API Documentations<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>UPGRADE: Chart.js upgraded from v2.9.3 to v4.4.7 with rewritten chart configuration<\/li>\n<li>SECURITY: Added <code>current_user_can('manage_options')<\/code> check in all AJAX actions<\/li>\n<li>SECURITY: Added <code>isset()<\/code> check before nonce verification to prevent PHP warnings<\/li>\n<li>SECURITY: Replaced <code>wp_die()<\/code> with <code>wp_send_json_error()<\/code> for proper AJAX error responses<\/li>\n<li>SECURITY: Replaced <code>htmlspecialchars()<\/code> with <code>esc_attr()<\/code> for WordPress-standard escaping<\/li>\n<li>SECURITY: Removed <code>extract()<\/code> usage for safer variable handling<\/li>\n<li>SECURITY: Replaced <code>date()<\/code> with <code>wp_date()<\/code> for WordPress timezone awareness<\/li>\n<li>SECURITY: Sanitized domain ID with <code>intval()<\/code> in API URL construction<\/li>\n<li>BUG FIX: Fixed <code>wp_enqueue_style<\/code> missing <code>$deps<\/code> parameter<\/li>\n<li>BUG FIX: Added <code>placements<\/code> option cleanup in uninstall script<\/li>\n<li>BUG FIX: Added widget cache transient cleanup in uninstall script<\/li>\n<li>BUG FIX: Consistent use of <code>echo<\/code> instead of mixing <code>echo<\/code>\/<code>print<\/code><\/li>\n<li>UI\/UX: Predefined professional color palette for chart datasets (8 distinct colors)<\/li>\n<li>UI\/UX: Moved inline settings page styles to external CSS file<\/li>\n<li>UI\/UX: Improved responsive behavior for small screens<\/li>\n<li>UI\/UX: Styles now load on settings page as well as dashboard<\/li>\n<li>CODE: Removed dead <code>getStatsByDomainID()<\/code> method from API client<\/li>\n<li>CODE: Removed debug logging block from API client<\/li>\n<li>CODE: Added explicit <code>public<\/code> visibility to constructor<\/li>\n<li>COMPATIBILITY: WordPress 7.0 support<\/li>\n<li>COMPATIBILITY: PHP 8.0 minimum requirement (aligned with WP 7.0)<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>MAJOR UPDATE - Complete security overhaul and API optimization<\/li>\n<li>SECURITY: Added CSRF protection with nonce verification for AJAX calls<\/li>\n<li>SECURITY: Fixed XSS vulnerabilities with proper output escaping (esc_html, esc_attr, wp_json_encode)<\/li>\n<li>SECURITY: Added input sanitization for all user inputs (sanitize_text_field)<\/li>\n<li>SECURITY: Enhanced API token validation and domain ID validation<\/li>\n<li>NEW FEATURE: Added \"All Domains\" option to view combined statistics from all domains<\/li>\n<li>NEW FEATURE: Implemented dashboard widget data caching (1 hour) for improved performance<\/li>\n<li>NEW FEATURE: Added manual refresh button to update cached dashboard data<\/li>\n<li>BUG FIX: Fixed API groupBy parameter - removed invalid values, now using correct API parameters<\/li>\n<li>BUG FIX: Corrected domain selection logic in settings page<\/li>\n<li>BUG FIX: Fixed API client placement parameter not being used<\/li>\n<li>BUG FIX: Fixed unclosed HTML tags<\/li>\n<li>BUG FIX: Fixed widget layout overflow issues with proper responsive design<\/li>\n<li>PERFORMANCE: Optimized API calls - individual placement calls for better compatibility<\/li>\n<li>PERFORMANCE: Implemented widget data caching with transients (1 hour TTL)<\/li>\n<li>PERFORMANCE: Added AJAX-based cache refresh functionality<\/li>\n<li>UI\/UX: Complete redesign of settings page with modern gradient design<\/li>\n<li>UI\/UX: Enhanced dashboard widget with improved visual design and CSS Grid layout<\/li>\n<li>UI\/UX: Added modern toggle switch for enable\/disable setting<\/li>\n<li>UI\/UX: Improved form inputs with focus states and animations<\/li>\n<li>UI\/UX: Responsive 2-column grid layout for statistics boxes<\/li>\n<li>UI\/UX: Added hover effects and smooth transitions<\/li>\n<li>UI\/UX: Compact and optimized widget size to fit dashboard properly<\/li>\n<li>IMPROVEMENT: Enhanced error handling with proper logging<\/li>\n<li>IMPROVEMENT: Fixed mathematical calculations for CPM and CTR (weighted averages)<\/li>\n<li>IMPROVEMENT: Added robust field mapping for different API response structures<\/li>\n<li>IMPROVEMENT: Updated JavaScript with better error handling and user feedback<\/li>\n<li>IMPROVEMENT: Added uninstall.php for proper cleanup<\/li>\n<li>IMPROVEMENT: Code cleanup - removed commented code and improved structure<\/li>\n<li>API: Enhanced compatibility with Adsterra API documentation<\/li>\n<li>API: Fixed API parameters to match official documentation (removed invalid groupBy values)<\/li>\n<li>COMPATIBILITY: Maintained backward compatibility while adding new features<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Update API token auth and minor FIX<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Support for Wordpress 6.x added<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Support for Wordpress 5.8 added<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Support for Wordpress 5.8 added<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Support for Wordpress 5.7 added<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Minor Bug Fix and added support for Wordpress 5.6<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Minor Bug Fix<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Public release<\/li>\n<\/ul>","raw_excerpt":"Secure and optimized WP AdsTerra Dashboard for viewing statistics via API with enhanced performance and security features.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/118214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=118214"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vluongo"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=118214"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=118214"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=118214"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=118214"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=118214"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=118214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}