Version Description
- Add : WP Meta Seo widget: Quick SEO Preview
Download this release
Release Info
Developer | JoomUnited |
Plugin | WP Meta SEO |
Version | 4.4.6 |
Comparing to | |
See all releases |
Code changes from version 4.4.5 to 4.4.6
- assets/css/dashboard-widgets/analytics-widgets.css +123 -0
- assets/css/dashboard-widgets/dashboard_widgets.css +129 -0
- assets/js/cliffpyles.js +29 -9
- assets/js/dashboard_widgets/analytics-widgets.js +181 -0
- assets/js/dashboard_widgets/dashboard_widgets.js +252 -0
- assets/js/google-analytics/google_analytics.js +3 -1
- assets/js/wpms-seokeyword-metabox.js +13 -1
- inc/class.metaseo-admin.php +131 -9
- inc/class.metaseo-google-analytics.php +71 -1
- inc/class.metaseo-metabox.php +4 -1
- inc/google_analytics/wpmsgapi.php +15 -9
- inc/pages/dashboard-widgets/analytics_widgets.php +42 -0
- inc/pages/dashboard-widgets/dashboard_widgets.php +228 -0
- languages/wp-meta-seo-en_US.mo +0 -0
- readme.txt +5 -2
- wp-meta-seo.php +2 -2
assets/css/dashboard-widgets/analytics-widgets.css
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.wpms-analytics-widget-content select {
|
2 |
+
border: 1px solid #6465e2;
|
3 |
+
border-radius: 4px;
|
4 |
+
font-size: inherit;
|
5 |
+
line-height: inherit;
|
6 |
+
font-weight: inherit;
|
7 |
+
padding-right: 30px;
|
8 |
+
/* Custom arrow */
|
9 |
+
background-image:
|
10 |
+
linear-gradient(45deg, transparent 50%, #FFF 50%),
|
11 |
+
linear-gradient(135deg, #FFF 50%, transparent 50%),
|
12 |
+
linear-gradient(to right, #6465e2, #6465e2);
|
13 |
+
background-position:
|
14 |
+
calc(100% - 15px) center,
|
15 |
+
calc(100% - 10px) center,
|
16 |
+
100% 0;
|
17 |
+
background-size:
|
18 |
+
5px 5px,
|
19 |
+
5px 5px,
|
20 |
+
2em 3em;
|
21 |
+
background-repeat: no-repeat;
|
22 |
+
}
|
23 |
+
|
24 |
+
.wpms-analytics-widget-content select:focus {
|
25 |
+
border: 1px solid #6465e2;
|
26 |
+
box-shadow: 0 0 0 1px #6465e2;
|
27 |
+
}
|
28 |
+
|
29 |
+
.request-date, .request-query, .request-loading {
|
30 |
+
display: inline-block;
|
31 |
+
}
|
32 |
+
|
33 |
+
.request-query {
|
34 |
+
margin-left: 20px;
|
35 |
+
}
|
36 |
+
|
37 |
+
#wpms-analytics-charts {
|
38 |
+
margin-top: 30px;
|
39 |
+
}
|
40 |
+
|
41 |
+
.request-loading {
|
42 |
+
height: 18px;
|
43 |
+
margin-left: 30px;
|
44 |
+
}
|
45 |
+
|
46 |
+
.wpms-error-response {
|
47 |
+
margin-top: 20px;
|
48 |
+
margin-left: 10px;
|
49 |
+
padding-left: 5px;
|
50 |
+
height: auto;
|
51 |
+
border-left: 5px solid red;
|
52 |
+
display: none;
|
53 |
+
}
|
54 |
+
|
55 |
+
/* Custom Google Visualization charts */
|
56 |
+
.google-visualization-table-th{
|
57 |
+
vertical-align: middle;
|
58 |
+
font-weight: 400;
|
59 |
+
padding: 8px !important;
|
60 |
+
color: #0073aa;
|
61 |
+
text-align: left;
|
62 |
+
border-bottom: 1px solid #e1e1e1;
|
63 |
+
background: #fff;
|
64 |
+
}
|
65 |
+
|
66 |
+
.google-visualization-table-tr-even{
|
67 |
+
background-color: #f9f9f9;
|
68 |
+
}
|
69 |
+
|
70 |
+
.google-visualization-table-tr-odd{
|
71 |
+
background-color: #fff;
|
72 |
+
}
|
73 |
+
|
74 |
+
.google-visualization-table-td{
|
75 |
+
text-align: left !important;
|
76 |
+
padding: 10px !important;
|
77 |
+
}
|
78 |
+
|
79 |
+
.google-visualization-table-table th, .google-visualization-table-table td{
|
80 |
+
border-width: 0 0 1px 0 !important;
|
81 |
+
}
|
82 |
+
|
83 |
+
.google-visualization-table-page-number{
|
84 |
+
width: 24px;
|
85 |
+
padding: 2px 0;
|
86 |
+
border-radius: 0;
|
87 |
+
border: #ddd 1px solid;
|
88 |
+
color: #a0a5aa;
|
89 |
+
}
|
90 |
+
|
91 |
+
.google-visualization-table .gradient{
|
92 |
+
background: #fff none;
|
93 |
+
}
|
94 |
+
|
95 |
+
.google-visualization-table-page-number.current{
|
96 |
+
background: #e5e5e5 !important;
|
97 |
+
font-weight: 100 !important;
|
98 |
+
color: #0073aa;
|
99 |
+
border-style : none;
|
100 |
+
}
|
101 |
+
|
102 |
+
.google-visualization-table-page-number:hover{
|
103 |
+
background: #00a0d2 !important;
|
104 |
+
color: #fff !important;
|
105 |
+
border: #00a0d2 !important;
|
106 |
+
}
|
107 |
+
.charts-custom-button-outer-box{
|
108 |
+
border-style : none !important;
|
109 |
+
|
110 |
+
}
|
111 |
+
|
112 |
+
.charts-custom-button{
|
113 |
+
border: none;
|
114 |
+
background: none;
|
115 |
+
}
|
116 |
+
|
117 |
+
.google-visualization-orgchart-node{
|
118 |
+
font-family: inherit !important;
|
119 |
+
border: 0 !important;
|
120 |
+
border-radius: 0 !important;
|
121 |
+
background: #fff !important;
|
122 |
+
box-shadow: 1px 1px 12px #ccc !important;
|
123 |
+
}
|
assets/css/dashboard-widgets/dashboard_widgets.css
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.wpms_dashboard_widgets h1 {
|
2 |
+
padding: 10px 0 10px 20px
|
3 |
+
}
|
4 |
+
|
5 |
+
.wpms_dash_widgets{
|
6 |
+
margin: 7px 0;
|
7 |
+
}
|
8 |
+
|
9 |
+
.wpms_dash_widgets .percent_1{
|
10 |
+
font-size: 21px !important;
|
11 |
+
float: left;
|
12 |
+
margin-right: 10px !important;
|
13 |
+
}
|
14 |
+
|
15 |
+
.wpms_dashboard_widgets_left{
|
16 |
+
width: 80%;
|
17 |
+
float: left;
|
18 |
+
}
|
19 |
+
|
20 |
+
.wpms_dashboard_widgets_right{
|
21 |
+
width: 17%;
|
22 |
+
float: left;
|
23 |
+
height: 60px;
|
24 |
+
}
|
25 |
+
|
26 |
+
.wpms_dashboard_widgets_right i {
|
27 |
+
color: #fff;
|
28 |
+
margin: 18px;
|
29 |
+
float: right;
|
30 |
+
font-size: 24px;
|
31 |
+
}
|
32 |
+
|
33 |
+
.wpms_dashboard_widgets_right .white-loader {
|
34 |
+
width: 24px;
|
35 |
+
height: 24px;
|
36 |
+
margin: 18px;
|
37 |
+
float: right;
|
38 |
+
}
|
39 |
+
|
40 |
+
.wpms_dashboard_widgets_left{
|
41 |
+
height: 60px;
|
42 |
+
position: relative;
|
43 |
+
}
|
44 |
+
/*progress*/
|
45 |
+
.wpms_dashboard_widgets .progress-rating {
|
46 |
+
position: relative;
|
47 |
+
height: 6px;
|
48 |
+
display: block;
|
49 |
+
width: 100%;
|
50 |
+
border-radius: 2px;
|
51 |
+
margin: 32px 0;
|
52 |
+
overflow: hidden;
|
53 |
+
background-color: rgba(255, 255, 255, 0.33);
|
54 |
+
float: left;
|
55 |
+
}
|
56 |
+
|
57 |
+
.wpms_dashboard_widgets .progress-rating .determinate {
|
58 |
+
position: absolute;
|
59 |
+
top: 0;
|
60 |
+
left: 0;
|
61 |
+
bottom: 0;
|
62 |
+
background-color: #fff;
|
63 |
+
-webkit-transition: width 0.3s linear;
|
64 |
+
-moz-transition: width 0.3s linear;
|
65 |
+
-o-transition: width 0.3s linear;
|
66 |
+
-ms-transition: width 0.3s linear;
|
67 |
+
transition: width 0.3s linear;
|
68 |
+
}
|
69 |
+
|
70 |
+
.wpms_dashboard_widgets .progress {
|
71 |
+
position: relative;
|
72 |
+
height: 5px;
|
73 |
+
display: block;
|
74 |
+
width: 100%;
|
75 |
+
background-color: #fff;
|
76 |
+
border-radius: 2px;
|
77 |
+
margin: 0.5rem 0 1rem 0;
|
78 |
+
overflow: hidden;
|
79 |
+
}
|
80 |
+
|
81 |
+
.wpms_dashboard_widgets .dashboard-title {
|
82 |
+
color: #fff !important;
|
83 |
+
}
|
84 |
+
|
85 |
+
.wpms_dashboard_widgets p.dashboard-title {
|
86 |
+
font-size: 10px !important;
|
87 |
+
}
|
88 |
+
|
89 |
+
.wpms_dashboard_widgets .dashboard-card {
|
90 |
+
background-color: #6465e2; /* For browser do not support linear-gradient */
|
91 |
+
border: none;
|
92 |
+
border-radius: 4px;
|
93 |
+
background-image: linear-gradient(to right,#6465e2,#60c3ef);
|
94 |
+
}
|
95 |
+
|
96 |
+
.wpms_dashboard_widgets h4 {
|
97 |
+
font-weight: normal !important;
|
98 |
+
}
|
99 |
+
|
100 |
+
.wpms_dashboard_widgets .panel {
|
101 |
+
height: 60px !important;
|
102 |
+
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
103 |
+
}
|
104 |
+
|
105 |
+
.wpms_dashboard_widgets .panel .panel-title{
|
106 |
+
position: absolute;
|
107 |
+
top: 10px;
|
108 |
+
left: 5px;
|
109 |
+
}
|
110 |
+
|
111 |
+
.wpms_dashboard_widgets_left .panel-bottom{
|
112 |
+
width: 100%;
|
113 |
+
position: absolute;
|
114 |
+
bottom: 5px;
|
115 |
+
left: 5px;
|
116 |
+
line-height: 1.4em;
|
117 |
+
}
|
118 |
+
|
119 |
+
.wpms_dashboard_widgets_left .percent_1{
|
120 |
+
margin: 13px 0 3px 0 !important;
|
121 |
+
float: left;
|
122 |
+
}
|
123 |
+
|
124 |
+
.wpms_dashboard_widgets_left .percent_2{
|
125 |
+
margin-left: 10px !important;
|
126 |
+
margin-top: 14px !important;
|
127 |
+
float: left;
|
128 |
+
font-size: 10px;
|
129 |
+
}
|
assets/js/cliffpyles.js
CHANGED
@@ -40,18 +40,38 @@ jQuery(document).ready(function ($) {
|
|
40 |
}
|
41 |
}
|
42 |
} else {
|
43 |
-
//
|
44 |
-
if (typeof
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
} else {
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
}
|
54 |
}
|
|
|
|
|
|
|
|
|
55 |
|
56 |
$('.wpmseotab .spinner').css({'visibility': ' inherit'}).show();
|
57 |
$('.metaseo_right .panel-left, .metaseo_right .panel-right').html('');
|
40 |
}
|
41 |
}
|
42 |
} else {
|
43 |
+
// undefined wp.blocks
|
44 |
+
if (typeof wpmscliffpyles.post_type !== 'undefined' && wpmscliffpyles.post_type === 'attachment') {
|
45 |
+
// On media attachment page
|
46 |
+
if (typeof mpageurl === 'undefined') {
|
47 |
+
mpageurl = $('#sample-permalink').text().trim();
|
48 |
+
}
|
49 |
+
|
50 |
+
if (parseInt(first_load) === 1) {
|
51 |
+
title = wpmscliffpyles.post_title;
|
52 |
+
mcontent = wpmscliffpyles.post_content;
|
53 |
+
} else if(typeof wp.data !== "undefined") {
|
54 |
+
title = $('#title').val();
|
55 |
+
mcontent = $('#attachment_content').val();
|
56 |
+
}
|
57 |
} else {
|
58 |
+
// Something went wrong, use default
|
59 |
+
if (typeof mpageurl === 'undefined') {
|
60 |
+
mpageurl = $('#editable-post-name-full').text();
|
61 |
+
}
|
62 |
+
title = $('#title').val();
|
63 |
+
if (typeof tinyMCE !== 'undefined' && tinyMCE.get('content') !== null) {
|
64 |
+
mcontent = tinyMCE.editors.content.getContent();
|
65 |
+
if (mcontent === '') mcontent = $('#content').val();
|
66 |
+
} else {
|
67 |
+
mcontent = $('#content').val();
|
68 |
+
}
|
69 |
}
|
70 |
}
|
71 |
+
// In bad case, set empty value to avoid errors
|
72 |
+
if (typeof mcontent === 'undefined') mcontent = '';
|
73 |
+
if (typeof title === 'undefined') title = '';
|
74 |
+
if (typeof mpageurl === 'undefined') mpageurl = '';
|
75 |
|
76 |
$('.wpmseotab .spinner').css({'visibility': ' inherit'}).show();
|
77 |
$('.metaseo_right .panel-left, .metaseo_right .panel-right').html('');
|
assets/js/dashboard_widgets/analytics-widgets.js
ADDED
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var reports = {
|
2 |
+
drawAreaChart: function (data, format, isGa4) {
|
3 |
+
var chartData, options, chart, formatter;
|
4 |
+
chartData = google.visualization.arrayToDataTable(data);
|
5 |
+
if (format) {
|
6 |
+
if (isGa4) {
|
7 |
+
formatter = new google.visualization.NumberFormat({
|
8 |
+
suffix: 's',
|
9 |
+
fractionDigits: 0
|
10 |
+
});
|
11 |
+
|
12 |
+
} else {
|
13 |
+
formatter = new google.visualization.NumberFormat({
|
14 |
+
suffix: '%',
|
15 |
+
fractionDigits: 2
|
16 |
+
});
|
17 |
+
}
|
18 |
+
|
19 |
+
formatter.format(chartData, 1);
|
20 |
+
}
|
21 |
+
|
22 |
+
options = {
|
23 |
+
legend: {
|
24 |
+
position: 'none'
|
25 |
+
},
|
26 |
+
pointSize: 3,
|
27 |
+
colors: [wpmsDashboardAnalytics.colorVariations[0], wpmsDashboardAnalytics.colorVariations[4]],
|
28 |
+
chartArea: {
|
29 |
+
width: '99%',
|
30 |
+
height: '90%'
|
31 |
+
},
|
32 |
+
vAxis: {
|
33 |
+
textPosition: "in",
|
34 |
+
minValue: 0
|
35 |
+
},
|
36 |
+
hAxis: {
|
37 |
+
textPosition: 'none'
|
38 |
+
}
|
39 |
+
};
|
40 |
+
chart = new google.visualization.AreaChart(wpmsDrawElement);
|
41 |
+
|
42 |
+
chart.draw(chartData, options);
|
43 |
+
jQuery('.wpms-spinner-loading').css('visibility', 'hidden');
|
44 |
+
},
|
45 |
+
drawTableChart: function (data) {
|
46 |
+
var chartData, options, chart;
|
47 |
+
|
48 |
+
chartData = google.visualization.arrayToDataTable(data);
|
49 |
+
options = {
|
50 |
+
page: 'enable',
|
51 |
+
pageSize: 10,
|
52 |
+
width: '100%',
|
53 |
+
allowHtml: true
|
54 |
+
};
|
55 |
+
chart = new google.visualization.Table(wpmsDrawElement);
|
56 |
+
|
57 |
+
chart.draw(chartData, options);
|
58 |
+
jQuery('.wpms-spinner-loading').css('visibility', 'hidden');
|
59 |
+
},
|
60 |
+
drawOrgChart: function (data) {
|
61 |
+
var chartData, options, chart;
|
62 |
+
|
63 |
+
chartData = google.visualization.arrayToDataTable(data);
|
64 |
+
options = {
|
65 |
+
allowCollapse: true,
|
66 |
+
allowHtml: true,
|
67 |
+
height: '100%'
|
68 |
+
};
|
69 |
+
chart = new google.visualization.OrgChart(wpmsDrawElement);
|
70 |
+
|
71 |
+
chart.draw(chartData, options);
|
72 |
+
jQuery('.wpms-spinner-loading').css('visibility', 'hidden');
|
73 |
+
},
|
74 |
+
throwError: function() {
|
75 |
+
// Stop loading
|
76 |
+
jQuery('.wpms-spinner-loading').css('visibility', 'hidden');
|
77 |
+
// Render error
|
78 |
+
jQuery('.wpms-error-response').css('display', 'block');
|
79 |
+
wpmsDrawElement.textContent = '';
|
80 |
+
},
|
81 |
+
render: function (response) {
|
82 |
+
// Charts selection
|
83 |
+
const data = response['data'];
|
84 |
+
const rQuery = response['requestQuery'];
|
85 |
+
if (typeof data !== 'undefined' && jQuery.isArray(data)) {
|
86 |
+
if (jQuery.inArray(rQuery, ['locations', 'referrers', 'contentpages', 'searches']) > -1) {
|
87 |
+
// Draw table chart
|
88 |
+
reports.drawTableChart(data);
|
89 |
+
} else if (rQuery === 'channelGrouping' || rQuery === 'deviceCategory') {
|
90 |
+
// Draw organization charts
|
91 |
+
reports.drawOrgChart(data);
|
92 |
+
} else {
|
93 |
+
// Draw area charts
|
94 |
+
if (rQuery === 'visitBounceRate') {
|
95 |
+
let isGa4 = false;
|
96 |
+
if (typeof data[0][1] !== 'undefined' && data[0][1] === 'AVG Engagement Time') {
|
97 |
+
isGa4 = true;
|
98 |
+
}
|
99 |
+
reports.drawAreaChart(data, true, isGa4);
|
100 |
+
} else {
|
101 |
+
// No format
|
102 |
+
reports.drawAreaChart(data, false, false);
|
103 |
+
}
|
104 |
+
}
|
105 |
+
}
|
106 |
+
},
|
107 |
+
init: function (response) {
|
108 |
+
// Remove children element before draw
|
109 |
+
wpmsDrawElement.textContent = '';
|
110 |
+
reports.render(response);
|
111 |
+
|
112 |
+
jQuery(window).on('resize', function () {
|
113 |
+
// Refresh
|
114 |
+
jQuery('.wpms-spinner-loading').css('visibility', 'visible');
|
115 |
+
reports.render(response);
|
116 |
+
});
|
117 |
+
}
|
118 |
+
};
|
119 |
+
var getAnalyticsData = function (saveChange, requestDate, requestQuery) {
|
120 |
+
// Dont have project id
|
121 |
+
if (!jQuery("#wpms-analytics-charts").length) {
|
122 |
+
return;
|
123 |
+
}
|
124 |
+
let from, to;
|
125 |
+
from = '30daysAgo';
|
126 |
+
to = 'yesterday';
|
127 |
+
if (typeof requestDate !=='undefined' && requestDate !== '') {
|
128 |
+
from = requestDate;
|
129 |
+
if (from === 'today') {
|
130 |
+
to = 'today';
|
131 |
+
}
|
132 |
+
}
|
133 |
+
const postData = {
|
134 |
+
action: 'wpms',
|
135 |
+
task: 'analytics_widgets_data',
|
136 |
+
saveChange: saveChange,
|
137 |
+
from: from,
|
138 |
+
to: to,
|
139 |
+
requestDate: requestDate,
|
140 |
+
requestQuery: requestQuery,
|
141 |
+
wpms_security: wpmsDashboardAnalytics.wpms_security,
|
142 |
+
wpms_nonce: wpmsDashboardAnalytics.wpms_nonce
|
143 |
+
}
|
144 |
+
|
145 |
+
// Before send
|
146 |
+
jQuery('.wpms-spinner-loading').css('visibility', 'visible');
|
147 |
+
jQuery.post(wpmsDashboardAnalytics.ajaxUrl, postData, function (response) {
|
148 |
+
// After send, do draw charts
|
149 |
+
if (typeof response['data'] !== 'undefined' && !jQuery.isNumeric(response['data']) && jQuery.isArray(response['data'])) {
|
150 |
+
jQuery('.wpms-error-response').css('display', 'none');
|
151 |
+
reports.init(response);
|
152 |
+
} else {
|
153 |
+
// Something went wrong, throw error
|
154 |
+
reports.throwError();
|
155 |
+
}
|
156 |
+
});
|
157 |
+
}
|
158 |
+
|
159 |
+
// We should draw Google charts inside drawElement
|
160 |
+
const wpmsDrawElement = document.getElementById('wpms-analytics-charts');
|
161 |
+
jQuery(document).ready(function ($) {
|
162 |
+
let requestDate, requestQuery;
|
163 |
+
// Init get
|
164 |
+
requestDate = $('#wpms-request-date').val();
|
165 |
+
requestQuery = $('#wpms-request-query').val();
|
166 |
+
if (typeof requestDate !== 'undefined' && typeof requestQuery !== 'undefined') {
|
167 |
+
setTimeout(function () {
|
168 |
+
// Wait for Google Visualization ready
|
169 |
+
getAnalyticsData(0, requestDate, requestQuery);
|
170 |
+
}, 1000);
|
171 |
+
}
|
172 |
+
|
173 |
+
// On change selection
|
174 |
+
$(document).on('change', '#wpms-request-date, #wpms-request-query', function () {
|
175 |
+
requestDate = $('#wpms-request-date').val();
|
176 |
+
requestQuery = $('#wpms-request-query').val();
|
177 |
+
if (typeof requestDate !== 'undefined' && typeof requestQuery !== 'undefined') {
|
178 |
+
getAnalyticsData(1, requestDate, requestQuery);
|
179 |
+
}
|
180 |
+
});
|
181 |
+
});
|
assets/js/dashboard_widgets/dashboard_widgets.js
ADDED
@@ -0,0 +1,252 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function ($) {
|
2 |
+
'use strict';
|
3 |
+
var wpms_dash_widgets = 0;
|
4 |
+
// Knob
|
5 |
+
$.ajax({
|
6 |
+
url: ajaxurl,
|
7 |
+
method: 'POST',
|
8 |
+
dataType: 'json',
|
9 |
+
data: {
|
10 |
+
action: 'wpms',
|
11 |
+
task: 'dash_permalink',
|
12 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
13 |
+
},
|
14 |
+
success: function (res) {
|
15 |
+
$('.wpms_dash_permalink .percent_1').html(res +'%');
|
16 |
+
$('.wpms_dash_permalink .percent_2 span.percent').html(res +'%');
|
17 |
+
|
18 |
+
if (parseInt(res) === 100) {
|
19 |
+
$('.wpms_dash_permalink .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
20 |
+
} else {
|
21 |
+
$('.wpms_dash_permalink .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
22 |
+
}
|
23 |
+
|
24 |
+
wpms_dash_widgets++;
|
25 |
+
if(wpms_dash_widgets === 1){
|
26 |
+
wpms_dash_widgets_newcontent();
|
27 |
+
}
|
28 |
+
}
|
29 |
+
});
|
30 |
+
|
31 |
+
function wpms_dash_widgets_newcontent(){
|
32 |
+
$.ajax({
|
33 |
+
url: ajaxurl,
|
34 |
+
method: 'POST',
|
35 |
+
dataType: 'json',
|
36 |
+
data: {
|
37 |
+
action: 'wpms',
|
38 |
+
task: 'dash_newcontent',
|
39 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
40 |
+
},
|
41 |
+
success: function (res) {
|
42 |
+
$('.wpms_dash_newcontent .percent_1').html(res[0] +'%');
|
43 |
+
$('.wpms_dash_newcontent .percent_2 span.percent').html(res[1][0]);
|
44 |
+
|
45 |
+
if (parseInt(res[0]) >= 3) {
|
46 |
+
$('.wpms_dash_newcontent .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
47 |
+
} else {
|
48 |
+
$('.wpms_dash_newcontent .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
49 |
+
}
|
50 |
+
|
51 |
+
wpms_dash_widgets++;
|
52 |
+
if(wpms_dash_widgets === 2){
|
53 |
+
wpms_dash_widgets_linkmeta();
|
54 |
+
}
|
55 |
+
}
|
56 |
+
});
|
57 |
+
}
|
58 |
+
|
59 |
+
function wpms_dash_widgets_linkmeta(){
|
60 |
+
$.ajax({
|
61 |
+
url: ajaxurl,
|
62 |
+
method: 'POST',
|
63 |
+
dataType: 'json',
|
64 |
+
data: {
|
65 |
+
action: 'wpms',
|
66 |
+
task: 'dash_linkmeta',
|
67 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
68 |
+
},
|
69 |
+
success: function (res) {
|
70 |
+
$('.wpms_dash_linkmeta .percent_1').html(res[0] +'%');
|
71 |
+
$('.wpms_dash_linkmeta .percent_2 span.percent').html(res[1][0] + '/' + res[1][1]);
|
72 |
+
|
73 |
+
if (parseInt(res[0]) === 100) {
|
74 |
+
$('.wpms_dash_linkmeta .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
75 |
+
} else {
|
76 |
+
$('.wpms_dash_linkmeta .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
77 |
+
}
|
78 |
+
|
79 |
+
wpms_dash_widgets++;
|
80 |
+
if(wpms_dash_widgets === 3){
|
81 |
+
wpms_dash_widgets_metatitle();
|
82 |
+
}
|
83 |
+
}
|
84 |
+
});
|
85 |
+
}
|
86 |
+
|
87 |
+
function wpms_dash_widgets_metatitle(){
|
88 |
+
$.ajax({
|
89 |
+
url: ajaxurl,
|
90 |
+
method: 'POST',
|
91 |
+
dataType: 'json',
|
92 |
+
data: {
|
93 |
+
action: 'wpms',
|
94 |
+
task: 'dash_metatitle',
|
95 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
96 |
+
},
|
97 |
+
success: function (res) {
|
98 |
+
$('.wpms_dash_metatitle .percent_1').html(res[0] +'%');
|
99 |
+
$('.wpms_dash_metatitle .percent_2 span.percent').html(res[1][0] + '/' + res[1][1]);
|
100 |
+
|
101 |
+
if (parseInt(res[0]) === 100) {
|
102 |
+
$('.wpms_dash_metatitle .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
103 |
+
} else {
|
104 |
+
$('.wpms_dash_metatitle .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
105 |
+
}
|
106 |
+
|
107 |
+
wpms_dash_widgets++;
|
108 |
+
if(wpms_dash_widgets === 4){
|
109 |
+
wpms_dash_widgets_imagemeta(1,0,0,0);
|
110 |
+
}
|
111 |
+
}
|
112 |
+
});
|
113 |
+
}
|
114 |
+
|
115 |
+
function wpms_dash_widgets_imagemeta(page,imgs_statis,imgs_meta,imgs_count){
|
116 |
+
$.ajax({
|
117 |
+
url: ajaxurl,
|
118 |
+
method: 'POST',
|
119 |
+
dataType: 'json',
|
120 |
+
data: {
|
121 |
+
action: 'wpms',
|
122 |
+
task: 'dash_imgsmeta',
|
123 |
+
page : page,
|
124 |
+
imgs_statis : imgs_statis,
|
125 |
+
imgs_metas_statis : imgs_meta,
|
126 |
+
imgs_count : imgs_count,
|
127 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
128 |
+
},
|
129 |
+
success: function (res) {
|
130 |
+
if(typeof res.status === "undefined"){
|
131 |
+
wpms_dash_widgets_imagemeta(page+1 , res.imgs_statis[0] , res.imgs_metas_statis[0] , res.imgs_count);
|
132 |
+
}else{
|
133 |
+
$('.wpms_dash_imgsresize .percent_1').html(res.imgs_statis[2] +'%');
|
134 |
+
$('.wpms_dash_imgsresize .percent_2 span.percent').html(res.imgs_statis[0] +'/'+ res.imgs_statis[1]);
|
135 |
+
|
136 |
+
if (parseInt(res.imgs_statis[2]) === 100) {
|
137 |
+
$('.wpms_dash_imgsresize .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
138 |
+
} else {
|
139 |
+
$('.wpms_dash_imgsresize .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
140 |
+
}
|
141 |
+
|
142 |
+
$('.wpms_dash_imgsmeta .percent_1').html(res.imgs_metas_statis[2] +'%');
|
143 |
+
$('.wpms_dash_imgsmeta .percent_2 span.percent').html(res.imgs_metas_statis[0] +'/'+ res.imgs_metas_statis[1]);
|
144 |
+
|
145 |
+
if (parseInt(res.imgs_metas_statis[2]) === 100) {
|
146 |
+
$('.wpms_dash_imgsmeta .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
147 |
+
} else {
|
148 |
+
$('.wpms_dash_imgsmeta .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
149 |
+
}
|
150 |
+
|
151 |
+
wpms_dash_widgets++;
|
152 |
+
if(wpms_dash_widgets === 5){
|
153 |
+
if (parseInt(wpms_localize.addon_active) === 0) {
|
154 |
+
wpms_dash_widgets_metadesc();
|
155 |
+
} else {
|
156 |
+
wpms_dash_widgets_duplicate_title();
|
157 |
+
}
|
158 |
+
}
|
159 |
+
}
|
160 |
+
}
|
161 |
+
});
|
162 |
+
}
|
163 |
+
|
164 |
+
function wpms_dash_widgets_duplicate_title(){
|
165 |
+
$.ajax({
|
166 |
+
url: ajaxurl,
|
167 |
+
method: 'POST',
|
168 |
+
dataType: 'json',
|
169 |
+
data: {
|
170 |
+
action: 'dash_duplicate_title',
|
171 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
172 |
+
},
|
173 |
+
success: function (res) {
|
174 |
+
$('.wpms_dash_duplicate_metatitle .percent_1').html(res.percent +'%');
|
175 |
+
$('.wpms_dash_duplicate_metatitle .percent_2 span.percent').html(res.count_post_duplicate + '/' + res.total_items);
|
176 |
+
|
177 |
+
if (parseInt(res.percent) >= 90) {
|
178 |
+
$('.wpms_dash_duplicate_metatitle .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
179 |
+
} else {
|
180 |
+
$('.wpms_dash_duplicate_metatitle .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
181 |
+
}
|
182 |
+
|
183 |
+
wpms_dash_widgets++;
|
184 |
+
if(wpms_dash_widgets === 6){
|
185 |
+
wpms_dash_widgets_duplicate_desc();
|
186 |
+
}
|
187 |
+
}
|
188 |
+
});
|
189 |
+
}
|
190 |
+
|
191 |
+
function wpms_dash_widgets_duplicate_desc(){
|
192 |
+
$.ajax({
|
193 |
+
url: ajaxurl,
|
194 |
+
method: 'POST',
|
195 |
+
dataType: 'json',
|
196 |
+
data: {
|
197 |
+
action: 'dash_duplicate_desc',
|
198 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
199 |
+
},
|
200 |
+
success: function (res) {
|
201 |
+
$('.wpms_dash_duplicate_metadesc .percent_1').html(res.percent +'%');
|
202 |
+
$('.wpms_dash_duplicate_metadesc .percent_2 span.percent').html(res.count_post_duplicate + '/' + res.total_items);
|
203 |
+
|
204 |
+
if (parseInt(res.percent) >= 90) {
|
205 |
+
$('.wpms_dash_duplicate_metadesc .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
206 |
+
} else {
|
207 |
+
$('.wpms_dash_duplicate_metadesc .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
208 |
+
}
|
209 |
+
|
210 |
+
wpms_dash_widgets++;
|
211 |
+
if(wpms_dash_widgets === 7){
|
212 |
+
wpms_dash_widgets_metadesc();
|
213 |
+
}
|
214 |
+
}
|
215 |
+
});
|
216 |
+
}
|
217 |
+
|
218 |
+
function wpms_dash_widgets_metadesc(){
|
219 |
+
$.ajax({
|
220 |
+
url: ajaxurl,
|
221 |
+
method: 'POST',
|
222 |
+
dataType: 'json',
|
223 |
+
data: {
|
224 |
+
action: 'wpms',
|
225 |
+
task: 'dash_metadesc',
|
226 |
+
wpms_nonce: wpms_localize.wpms_nonce
|
227 |
+
},
|
228 |
+
success: function (res) {
|
229 |
+
$('.wpms_dash_metadesc .percent_1').html(res[0] +'%');
|
230 |
+
$('.wpms_dash_metadesc .percent_2 span.percent').html(res[1][0] + '/' + res[1][1]);
|
231 |
+
|
232 |
+
if (parseInt(res[0]) === 100) {
|
233 |
+
$('.wpms_dash_metadesc .wpms_dashboard_widgets_right').html('<i class="material-icons"> check </i>');
|
234 |
+
} else {
|
235 |
+
$('.wpms_dash_metadesc .wpms_dashboard_widgets_right').html('<i class="material-icons"> notification_important </i>');
|
236 |
+
}
|
237 |
+
}
|
238 |
+
});
|
239 |
+
}
|
240 |
+
|
241 |
+
/*tippy('.wpms_dash_widgets', {
|
242 |
+
animation: 'scale',
|
243 |
+
duration: 0,
|
244 |
+
arrow: false,
|
245 |
+
placement: 'top',
|
246 |
+
theme: 'wpms-widgets-tippy',
|
247 |
+
onShow(instance) {
|
248 |
+
instance.popper.hidden = instance.reference.dataset.tippy ? false : true;
|
249 |
+
instance.setContent(instance.reference.dataset.tippy);
|
250 |
+
}
|
251 |
+
});*/
|
252 |
+
});
|
assets/js/google-analytics/google_analytics.js
CHANGED
@@ -1027,7 +1027,9 @@ jQuery.fn.extend({
|
|
1027 |
|
1028 |
template.init();
|
1029 |
|
1030 |
-
|
|
|
|
|
1031 |
|
1032 |
jQuery('#wpms-sel-view' + slug).on('change', function () {
|
1033 |
jQuery('#wpms-reports' + slug).html('');
|
1027 |
|
1028 |
template.init();
|
1029 |
|
1030 |
+
setTimeout(function () {
|
1031 |
+
reports.init();
|
1032 |
+
}, 1000); // Wait for Google Visualization ready
|
1033 |
|
1034 |
jQuery('#wpms-sel-view' + slug).on('change', function () {
|
1035 |
jQuery('#wpms-reports' + slug).html('');
|
assets/js/wpms-seokeyword-metabox.js
CHANGED
@@ -28,6 +28,9 @@
|
|
28 |
if (typeof wp.blocks !== "undefined" && select('core/editor') !== null) {
|
29 |
this.title = select('core/editor').getEditedPostAttribute('title');
|
30 |
this.content = select('core/editor').getEditedPostAttribute('content');
|
|
|
|
|
|
|
31 |
} else {
|
32 |
this.title = $('#title').val();
|
33 |
if (typeof tinyMCE !== 'undefined' && tinyMCE.get('content') !== null) {
|
@@ -86,7 +89,12 @@
|
|
86 |
}
|
87 |
|
88 |
if (!discovered) {
|
89 |
-
|
|
|
|
|
|
|
|
|
|
|
90 |
$('input.wpms_analysis_hidden[name="wpms[seokeyword]"]').val(0);
|
91 |
} else {
|
92 |
$('div.metaseo_analysis[data-title="seokeyword"]').find('i').removeClass('icons-mboxwarning').addClass('icons-mboxdone').html('done');
|
@@ -296,6 +304,7 @@
|
|
296 |
tinyMCE.get('content').on('keyup', this.changeContent);
|
297 |
} else {
|
298 |
$('#content').on('keyup', this.changeContent);
|
|
|
299 |
}
|
300 |
}
|
301 |
|
@@ -303,6 +312,9 @@
|
|
303 |
this.data.title = $('#title').val();
|
304 |
if (typeof tinyMCE !== 'undefined' && tinyMCE.get('content') !== null) {
|
305 |
this.data.content = tinyMCE.editors.content.getContent();
|
|
|
|
|
|
|
306 |
} else {
|
307 |
this.data.content = $('#content').val();
|
308 |
}
|
28 |
if (typeof wp.blocks !== "undefined" && select('core/editor') !== null) {
|
29 |
this.title = select('core/editor').getEditedPostAttribute('title');
|
30 |
this.content = select('core/editor').getEditedPostAttribute('content');
|
31 |
+
} else if(typeof wpmscliffpyles.post_type !== 'undefined' && wpmscliffpyles.post_type === 'attachment') {
|
32 |
+
this.title = $('#title').val();
|
33 |
+
this.content = $('#attachment_content').val();
|
34 |
} else {
|
35 |
this.title = $('#title').val();
|
36 |
if (typeof tinyMCE !== 'undefined' && tinyMCE.get('content') !== null) {
|
89 |
}
|
90 |
|
91 |
if (!discovered) {
|
92 |
+
if (seo_keywords !== null) {
|
93 |
+
// Page seo keyword found
|
94 |
+
$('div.metaseo_analysis[data-title="seokeyword"]').find('i').removeClass('icons-mboxwarning').addClass('icons-mboxdone').html('done');
|
95 |
+
} else {
|
96 |
+
$('div.metaseo_analysis[data-title="seokeyword"]').find('i').removeClass('icons-mboxdone').addClass('icons-mboxwarning').html('error_outline');
|
97 |
+
}
|
98 |
$('input.wpms_analysis_hidden[name="wpms[seokeyword]"]').val(0);
|
99 |
} else {
|
100 |
$('div.metaseo_analysis[data-title="seokeyword"]').find('i').removeClass('icons-mboxwarning').addClass('icons-mboxdone').html('done');
|
304 |
tinyMCE.get('content').on('keyup', this.changeContent);
|
305 |
} else {
|
306 |
$('#content').on('keyup', this.changeContent);
|
307 |
+
$('#attachment_content').on('keyup', this.changeContent);
|
308 |
}
|
309 |
}
|
310 |
|
312 |
this.data.title = $('#title').val();
|
313 |
if (typeof tinyMCE !== 'undefined' && tinyMCE.get('content') !== null) {
|
314 |
this.data.content = tinyMCE.editors.content.getContent();
|
315 |
+
} else if(typeof wpmscliffpyles !== 'undefined' && wpmscliffpyles.post_type === 'attachment') {
|
316 |
+
// On media attachment
|
317 |
+
this.data.content = $('#attachment_content').val();
|
318 |
} else {
|
319 |
this.data.content = $('#content').val();
|
320 |
}
|
inc/class.metaseo-admin.php
CHANGED
@@ -601,11 +601,89 @@ class MetaSeoAdmin
|
|
601 |
wp_enqueue_style('wpms-dashboard-widgets');
|
602 |
wp_enqueue_script(
|
603 |
'wpms-dashboard-widgets',
|
604 |
-
plugins_url('assets/js/dashboard_widgets.js', dirname(__FILE__)),
|
605 |
array('jquery'),
|
606 |
WPMSEO_VERSION
|
607 |
);
|
608 |
-
require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/dashboard_widgets.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
609 |
}
|
610 |
|
611 |
/**
|
@@ -623,6 +701,42 @@ class MetaSeoAdmin
|
|
623 |
'dashboardWidget'
|
624 |
)
|
625 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
626 |
}
|
627 |
|
628 |
/**
|
@@ -2826,7 +2940,7 @@ class MetaSeoAdmin
|
|
2826 |
|
2827 |
wp_register_style(
|
2828 |
'wpms-dashboard-widgets',
|
2829 |
-
plugins_url('assets/css/dashboard_widgets.css', dirname(__FILE__)),
|
2830 |
null,
|
2831 |
WPMSEO_VERSION
|
2832 |
);
|
@@ -3943,7 +4057,7 @@ class MetaSeoAdmin
|
|
3943 |
*/
|
3944 |
public function webDataStreamsList($property_id)
|
3945 |
{
|
3946 |
-
$query_url = 'https://analyticsadmin.googleapis.com/v1alpha/properties/' . $property_id . '/
|
3947 |
$query_url = add_query_arg('access_token', $this->google_alanytics['googleCredentials']['access_token'], $query_url);
|
3948 |
$webDataStreams = array();
|
3949 |
$pageToken = null;
|
@@ -3965,7 +4079,7 @@ class MetaSeoAdmin
|
|
3965 |
$body = json_decode($body);
|
3966 |
}
|
3967 |
|
3968 |
-
$items = isset($body->
|
3969 |
$webDataStreams = array_merge($webDataStreams, $items);
|
3970 |
if (isset($body->nextPageToken)) {
|
3971 |
$pageToken = $body->nextPageToken;
|
@@ -3995,6 +4109,8 @@ class MetaSeoAdmin
|
|
3995 |
// Get profile for google analytics 4 properties (GA4)
|
3996 |
$accounts = $this->service->management_accounts->listManagementAccounts();
|
3997 |
$accounts_id = array();
|
|
|
|
|
3998 |
if (count($accounts) > 0) {
|
3999 |
foreach ($accounts as $account) {
|
4000 |
$accounts_id[] = $account->id;
|
@@ -4008,7 +4124,10 @@ class MetaSeoAdmin
|
|
4008 |
if (!empty($ga4_properties)) {
|
4009 |
$webDataStreams = array();
|
4010 |
foreach ($ga4_properties as $ga4_property) {
|
4011 |
-
$
|
|
|
|
|
|
|
4012 |
}
|
4013 |
|
4014 |
foreach ($webDataStreams as $profile) {
|
@@ -4019,14 +4138,14 @@ class MetaSeoAdmin
|
|
4019 |
|
4020 |
$ga4_profile_list[] = array(
|
4021 |
$profile->displayName,
|
4022 |
-
$webDataStream_id,
|
4023 |
$property_id,
|
4024 |
-
$profile->defaultUri,
|
4025 |
'GA4',
|
4026 |
'',
|
4027 |
'',
|
4028 |
'',
|
4029 |
-
$profile->measurementId
|
4030 |
);
|
4031 |
}
|
4032 |
}
|
@@ -4950,6 +5069,9 @@ class MetaSeoAdmin
|
|
4950 |
case 'backend_item_reports':
|
4951 |
MetaSeoGoogleAnalytics::itemsReport();
|
4952 |
break;
|
|
|
|
|
|
|
4953 |
case 'wpms_tagmanager_request_containers':
|
4954 |
$this->tagmanagerContainersReport();
|
4955 |
break;
|
601 |
wp_enqueue_style('wpms-dashboard-widgets');
|
602 |
wp_enqueue_script(
|
603 |
'wpms-dashboard-widgets',
|
604 |
+
plugins_url('assets/js/dashboard_widgets/dashboard_widgets.js', dirname(__FILE__)),
|
605 |
array('jquery'),
|
606 |
WPMSEO_VERSION
|
607 |
);
|
608 |
+
require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/dashboard-widgets/dashboard_widgets.php');
|
609 |
+
}
|
610 |
+
|
611 |
+
/**
|
612 |
+
* Generate dasboard Analytics widget
|
613 |
+
*
|
614 |
+
* @return void
|
615 |
+
*/
|
616 |
+
public function dashboardAnalyticsWidget()
|
617 |
+
{
|
618 |
+
// Jsapi
|
619 |
+
$lang = get_bloginfo('language');
|
620 |
+
$lang = explode('-', $lang);
|
621 |
+
$lang = $lang[0];
|
622 |
+
wp_enqueue_script(
|
623 |
+
'wpmsgooglejsapi',
|
624 |
+
'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22language%22%3A%22' . $lang . '%22%2C%22packages%22%3A%5B%22corechart%22%2C%20%22imagechart%22%2C%20%22table%22%2C%20%22orgchart%22%2C%20%22geochart%22%5D%7D%5D%7D',
|
625 |
+
array(),
|
626 |
+
null
|
627 |
+
);
|
628 |
+
// WPMS style
|
629 |
+
wp_enqueue_style(
|
630 |
+
'wpms-dashboard-analytics-widgets',
|
631 |
+
plugins_url('assets/css/dashboard-widgets/analytics-widgets.css', dirname(__FILE__)),
|
632 |
+
array(),
|
633 |
+
WPMSEO_VERSION
|
634 |
+
);
|
635 |
+
// WPMS script
|
636 |
+
wp_enqueue_script(
|
637 |
+
'wpms-dashboard-analytics-widgets',
|
638 |
+
plugins_url('assets/js/dashboard_widgets/analytics-widgets.js', dirname(__FILE__)),
|
639 |
+
array('jquery'),
|
640 |
+
WPMSEO_VERSION,
|
641 |
+
true
|
642 |
+
);
|
643 |
+
|
644 |
+
wp_localize_script('wpms-dashboard-analytics-widgets', 'wpmsDashboardAnalytics', $this->localizeDashoardWidgets());
|
645 |
+
|
646 |
+
$requestDates = array(
|
647 |
+
array('value' => 'today', 'html' => 'TODAY'),
|
648 |
+
array('value' => 'yesterday', 'html' => 'YESTERDAY'),
|
649 |
+
array('value' => '7daysAgo', 'html' => 'LAST 7 DAYS'),
|
650 |
+
array('value' => '14daysAgo', 'html' => 'LAST 14 DAYS'),
|
651 |
+
array('value' => '30daysAgo', 'html' => 'LAST 30 DAYS'),
|
652 |
+
array('value' => '90daysAgo', 'html' => 'LAST 90 DAYS'),
|
653 |
+
array('value' => '365daysAgo', 'html' => 'ONE YEAR'),
|
654 |
+
array('value' => '1095daysAgo', 'html' => 'THREE YEARS'),
|
655 |
+
);
|
656 |
+
$requestQuery = array(
|
657 |
+
array('value' => 'sessions', 'html' => 'SESSIONS'),
|
658 |
+
array('value' => 'users', 'html' => 'USERS'),
|
659 |
+
array('value' => 'pageviews', 'html' => 'PAGE VIEWS'),
|
660 |
+
array('value' => 'visitBounceRate', 'html' => 'ENGAGEMENT'),
|
661 |
+
array('value' => 'organicSearches', 'html' => 'TRANSACTIONS'),
|
662 |
+
array('value' => 'contentpages', 'html' => 'PAGES'),
|
663 |
+
array('value' => 'locations', 'html' => 'LOCATION'),
|
664 |
+
array('value' => 'referrers', 'html' => 'REFERRERS'),
|
665 |
+
array('value' => 'searches', 'html' => 'SEARCHES'),
|
666 |
+
array('value' => 'channelGrouping', 'html' => 'TRAFFIC'),
|
667 |
+
array('value' => 'deviceCategory', 'html' => 'TECHNOLOGY')
|
668 |
+
);
|
669 |
+
$google_analytics = get_option('wpms_google_alanytics');
|
670 |
+
if (!empty($google_analytics['tableid_jail'])) {
|
671 |
+
require_once WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php';
|
672 |
+
$profile = WpmsGaTools::getSelectedProfile($google_analytics['profile_list'], $google_analytics['tableid_jail']);
|
673 |
+
if (!empty($profile[4]) && $profile[4] === 'UA') {
|
674 |
+
$requestQuery[3] = array('value' => 'visitBounceRate', 'html' => 'BOUNCE RATE');
|
675 |
+
$requestQuery[4] = array('value' => 'organicSearches', 'html' => 'ORGANIC');
|
676 |
+
}
|
677 |
+
}
|
678 |
+
|
679 |
+
$selectedDate = 'today';
|
680 |
+
$selectedQuery = 'sessions';
|
681 |
+
if (!empty($google_analytics['dashboard_analytics_widgets'])) {
|
682 |
+
$selectedDate = $google_analytics['dashboard_analytics_widgets']['requestDate'];
|
683 |
+
$selectedQuery = $google_analytics['dashboard_analytics_widgets']['requestQuery'];
|
684 |
+
}
|
685 |
+
|
686 |
+
require_once(WPMETASEO_PLUGIN_DIR . 'inc/pages/dashboard-widgets/analytics_widgets.php');
|
687 |
}
|
688 |
|
689 |
/**
|
701 |
'dashboardWidget'
|
702 |
)
|
703 |
);
|
704 |
+
|
705 |
+
// Add Google Analytics Overview dashboard widget
|
706 |
+
wp_add_dashboard_widget(
|
707 |
+
'wpms_dashboard_analytics_widget',
|
708 |
+
esc_html__('Google Analytics Overview', 'wp-meta-seo'),
|
709 |
+
array(
|
710 |
+
$this,
|
711 |
+
'dashboardAnalyticsWidget'
|
712 |
+
)
|
713 |
+
);
|
714 |
+
}
|
715 |
+
|
716 |
+
/**
|
717 |
+
* Localize dashboard widget
|
718 |
+
*
|
719 |
+
* @return array
|
720 |
+
*/
|
721 |
+
public function localizeDashoardWidgets()
|
722 |
+
{
|
723 |
+
return array(
|
724 |
+
'ajaxUrl' => admin_url('admin-ajax.php'),
|
725 |
+
'wpms_nonce' => wp_create_nonce('wpms_nonce'),
|
726 |
+
'wpms_security' => wp_create_nonce('dashboard_analytics_widgets_security'),
|
727 |
+
'colorVariations' => array(
|
728 |
+
esc_attr('#1e73be'),
|
729 |
+
esc_attr('#0459a4'),
|
730 |
+
esc_attr('#378cd7'),
|
731 |
+
esc_attr('#51a6f1'),
|
732 |
+
esc_attr('#00408b'),
|
733 |
+
esc_attr('#6abfff'),
|
734 |
+
esc_attr('#002671')
|
735 |
+
),
|
736 |
+
'region' => false,
|
737 |
+
'language' => get_bloginfo('language'),
|
738 |
+
'viewList' => false
|
739 |
+
);
|
740 |
}
|
741 |
|
742 |
/**
|
2940 |
|
2941 |
wp_register_style(
|
2942 |
'wpms-dashboard-widgets',
|
2943 |
+
plugins_url('assets/css/dashboard-widgets/dashboard_widgets.css', dirname(__FILE__)),
|
2944 |
null,
|
2945 |
WPMSEO_VERSION
|
2946 |
);
|
4057 |
*/
|
4058 |
public function webDataStreamsList($property_id)
|
4059 |
{
|
4060 |
+
$query_url = 'https://analyticsadmin.googleapis.com/v1alpha/properties/' . $property_id . '/dataStreams';
|
4061 |
$query_url = add_query_arg('access_token', $this->google_alanytics['googleCredentials']['access_token'], $query_url);
|
4062 |
$webDataStreams = array();
|
4063 |
$pageToken = null;
|
4079 |
$body = json_decode($body);
|
4080 |
}
|
4081 |
|
4082 |
+
$items = isset($body->dataStreams) ? $body->dataStreams : array();
|
4083 |
$webDataStreams = array_merge($webDataStreams, $items);
|
4084 |
if (isset($body->nextPageToken)) {
|
4085 |
$pageToken = $body->nextPageToken;
|
4109 |
// Get profile for google analytics 4 properties (GA4)
|
4110 |
$accounts = $this->service->management_accounts->listManagementAccounts();
|
4111 |
$accounts_id = array();
|
4112 |
+
$ga4_profile_list = array();
|
4113 |
+
$ua_profile_list = array();
|
4114 |
if (count($accounts) > 0) {
|
4115 |
foreach ($accounts as $account) {
|
4116 |
$accounts_id[] = $account->id;
|
4124 |
if (!empty($ga4_properties)) {
|
4125 |
$webDataStreams = array();
|
4126 |
foreach ($ga4_properties as $ga4_property) {
|
4127 |
+
$streamList = $this->webDataStreamsList(str_replace('properties/', '', $ga4_property->name));
|
4128 |
+
if (!empty($streamList) && is_array($streamList)) {
|
4129 |
+
$webDataStreams = array_merge($webDataStreams, $streamList);
|
4130 |
+
}
|
4131 |
}
|
4132 |
|
4133 |
foreach ($webDataStreams as $profile) {
|
4138 |
|
4139 |
$ga4_profile_list[] = array(
|
4140 |
$profile->displayName,
|
4141 |
+
$webDataStream_id, // todo:: check this value
|
4142 |
$property_id,
|
4143 |
+
$profile->webStreamData->defaultUri,
|
4144 |
'GA4',
|
4145 |
'',
|
4146 |
'',
|
4147 |
'',
|
4148 |
+
$profile->webStreamData->measurementId
|
4149 |
);
|
4150 |
}
|
4151 |
}
|
5069 |
case 'backend_item_reports':
|
5070 |
MetaSeoGoogleAnalytics::itemsReport();
|
5071 |
break;
|
5072 |
+
case 'analytics_widgets_data':
|
5073 |
+
MetaSeoGoogleAnalytics::analyticsWidgetsData();
|
5074 |
+
break;
|
5075 |
case 'wpms_tagmanager_request_containers':
|
5076 |
$this->tagmanagerContainersReport();
|
5077 |
break;
|
inc/class.metaseo-google-analytics.php
CHANGED
@@ -58,7 +58,7 @@ class MetaSeoGoogleAnalytics
|
|
58 |
}
|
59 |
|
60 |
if (!$projectId) {
|
61 |
-
$projectId = $google_alanytics['tableid_jail']; // View ID of Google
|
62 |
$property_type = 'UA';
|
63 |
}
|
64 |
$profile_info = WpmsGaTools::getSelectedProfile($google_alanytics['profile_list'], $projectId);
|
@@ -153,4 +153,74 @@ class MetaSeoGoogleAnalytics
|
|
153 |
return str_ireplace('map', chr(112), $map[0]);
|
154 |
}
|
155 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
}
|
58 |
}
|
59 |
|
60 |
if (!$projectId) {
|
61 |
+
$projectId = $google_alanytics['tableid_jail']; // View ID of Google Analytics universal
|
62 |
$property_type = 'UA';
|
63 |
}
|
64 |
$profile_info = WpmsGaTools::getSelectedProfile($google_alanytics['profile_list'], $projectId);
|
153 |
return str_ireplace('map', chr(112), $map[0]);
|
154 |
}
|
155 |
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Get dashboard widget Google Analytics data
|
159 |
+
*
|
160 |
+
* @return mixed
|
161 |
+
*/
|
162 |
+
public static function analyticsWidgetsData()
|
163 |
+
{
|
164 |
+
if (!isset($_POST['wpms_security'])
|
165 |
+
|| !wp_verify_nonce($_POST['wpms_security'], 'dashboard_analytics_widgets_security')) {
|
166 |
+
wp_die(- 30);
|
167 |
+
}
|
168 |
+
$googleAnalytics = get_option('wpms_google_alanytics');
|
169 |
+
if (empty($googleAnalytics)) {
|
170 |
+
wp_die('Empty settings');
|
171 |
+
}
|
172 |
+
|
173 |
+
$requestDate = isset($_POST['requestDate']) ? trim($_POST['requestDate']) : 'today';
|
174 |
+
$requestQuery = isset($_POST['requestQuery']) ? trim($_POST['requestQuery']) : 'sessions';
|
175 |
+
// Save change selection
|
176 |
+
if ((isset($_POST['saveChange']) && $_POST['saveChange']) || !isset($googleAnalytics['dashboard_analytics_widgets'])) {
|
177 |
+
$googleAnalytics['dashboard_analytics_widgets'] = array(
|
178 |
+
'requestDate' => $requestDate,
|
179 |
+
'requestQuery' => $requestQuery,
|
180 |
+
);
|
181 |
+
update_option('wpms_google_alanytics', $googleAnalytics);
|
182 |
+
}
|
183 |
+
|
184 |
+
$from = isset($_POST['from']) ? trim($_POST['from']) : '30daysAgo';
|
185 |
+
$to = isset($_POST['to']) ? trim($_POST['to']) : 'yesterday';
|
186 |
+
include_once(WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmstools.php');
|
187 |
+
include_once(WPMETASEO_PLUGIN_DIR . 'inc/google_analytics/wpmsgapi.php');
|
188 |
+
if (ob_get_length()) {
|
189 |
+
ob_clean();
|
190 |
+
}
|
191 |
+
if (!empty($googleAnalytics['tableid_jail'])) {
|
192 |
+
$controller = new WpmsGapiController();
|
193 |
+
} else {
|
194 |
+
wp_die(- 99);
|
195 |
+
}
|
196 |
+
|
197 |
+
if (!empty($googleAnalytics['googleCredentials']) && !empty($googleAnalytics['tableid_jail'])
|
198 |
+
&& isset($from) && isset($to)) {
|
199 |
+
if (empty($controller)) {
|
200 |
+
$controller = new WpmsGapiController();
|
201 |
+
}
|
202 |
+
} else {
|
203 |
+
wp_die(- 24);
|
204 |
+
}
|
205 |
+
|
206 |
+
$projectId = $googleAnalytics['tableid_jail']; // View ID of Google Analytics Universal
|
207 |
+
$property_type = 'UA';
|
208 |
+
|
209 |
+
$profile_info = WpmsGaTools::getSelectedProfile($googleAnalytics['profile_list'], $projectId);
|
210 |
+
if (isset($profile_info[4]) && $profile_info[4] === 'GA4') {
|
211 |
+
$projectId = $profile_info[2]; // Property ID of GA4
|
212 |
+
$property_type = 'GA4';
|
213 |
+
}
|
214 |
+
if (isset($profile_info[5])) {
|
215 |
+
$controller->timeshift = $profile_info[5];
|
216 |
+
} else {
|
217 |
+
$controller->timeshift = (int) current_time('timestamp') - time();
|
218 |
+
}
|
219 |
+
|
220 |
+
$results = array();
|
221 |
+
$results['data'] = $controller->get($projectId, $requestQuery, $from, $to, false, $property_type);
|
222 |
+
$results['requestQuery'] = $requestQuery;
|
223 |
+
|
224 |
+
wp_send_json($results);
|
225 |
+
}
|
226 |
}
|
inc/class.metaseo-metabox.php
CHANGED
@@ -385,9 +385,11 @@ class WPMSEOMetabox extends WPMSEOMeta
|
|
385 |
if (!empty($post)) {
|
386 |
$post_title = $post->post_title;
|
387 |
$post_content = $post->post_content;
|
|
|
388 |
} else {
|
389 |
$post_title = '';
|
390 |
$post_content = '';
|
|
|
391 |
}
|
392 |
|
393 |
$this->settings = array(
|
@@ -412,7 +414,8 @@ class WPMSEOMetabox extends WPMSEOMeta
|
|
412 |
'use_validate' => $this->settings['metaseo_seovalidate'],
|
413 |
'post_title' => $post_title,
|
414 |
'post_content' => $post_content,
|
415 |
-
'wpms_nonce' => wp_create_nonce('wpms_nonce')
|
|
|
416 |
);
|
417 |
}
|
418 |
|
385 |
if (!empty($post)) {
|
386 |
$post_title = $post->post_title;
|
387 |
$post_content = $post->post_content;
|
388 |
+
$post_type = $post->post_type;
|
389 |
} else {
|
390 |
$post_title = '';
|
391 |
$post_content = '';
|
392 |
+
$post_type = '';
|
393 |
}
|
394 |
|
395 |
$this->settings = array(
|
414 |
'use_validate' => $this->settings['metaseo_seovalidate'],
|
415 |
'post_title' => $post_title,
|
416 |
'post_content' => $post_content,
|
417 |
+
'wpms_nonce' => wp_create_nonce('wpms_nonce'),
|
418 |
+
'post_type' => $post_type
|
419 |
);
|
420 |
}
|
421 |
|
inc/google_analytics/wpmsgapi.php
CHANGED
@@ -166,7 +166,7 @@ if (!class_exists('WpmsGapiController')) {
|
|
166 |
*/
|
167 |
public function getTimeouts($daily)
|
168 |
{
|
169 |
-
$local_time = time() + $this->timeshift;
|
170 |
if ($daily) {
|
171 |
$nextday = explode('-', date('n-j-Y', strtotime(' +1 day', $local_time)));
|
172 |
$midnight = mktime(0, 0, 0, $nextday[0], $nextday[1], $nextday[2]);
|
@@ -217,8 +217,8 @@ if (!class_exists('WpmsGapiController')) {
|
|
217 |
}
|
218 |
|
219 |
$google_analytics = get_option('wpms_google_alanytics');
|
220 |
-
$profile_info = WpmsGaTools::getSelectedProfile($google_analytics['profile_list'], $
|
221 |
-
$property_type = $profile_info[4];
|
222 |
|
223 |
if ($property_type === 'UA') {
|
224 |
$data = $this->service->data_ga->get('ga:' . $projectId, $from, $to, $metrics, $options);
|
@@ -782,12 +782,18 @@ if (!class_exists('WpmsGapiController')) {
|
|
782 |
}
|
783 |
|
784 |
$wpmsga_data = array(array(esc_html__('Searches', 'wp-meta-seo'), esc_html__('Sessions', 'wp-meta-seo')));
|
785 |
-
|
786 |
-
$
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
791 |
}
|
792 |
|
793 |
return $wpmsga_data;
|
166 |
*/
|
167 |
public function getTimeouts($daily)
|
168 |
{
|
169 |
+
$local_time = time() + (int)$this->timeshift;
|
170 |
if ($daily) {
|
171 |
$nextday = explode('-', date('n-j-Y', strtotime(' +1 day', $local_time)));
|
172 |
$midnight = mktime(0, 0, 0, $nextday[0], $nextday[1], $nextday[2]);
|
217 |
}
|
218 |
|
219 |
$google_analytics = get_option('wpms_google_alanytics');
|
220 |
+
$profile_info = WpmsGaTools::getSelectedProfile($google_analytics['profile_list'], $google_analytics['tableid_jail']);
|
221 |
+
$property_type = isset($profile_info[4]) ? $profile_info[4] : '';
|
222 |
|
223 |
if ($property_type === 'UA') {
|
224 |
$data = $this->service->data_ga->get('ga:' . $projectId, $from, $to, $metrics, $options);
|
782 |
}
|
783 |
|
784 |
$wpmsga_data = array(array(esc_html__('Searches', 'wp-meta-seo'), esc_html__('Sessions', 'wp-meta-seo')));
|
785 |
+
if ($property_type === 'UA') {
|
786 |
+
foreach ($data->getRows() as $row) {
|
787 |
+
$wpmsga_data[] = array(esc_html($row[0]), (int)$row[1]);
|
788 |
+
}
|
789 |
+
} else {
|
790 |
+
foreach ($data->getRows() as $row) {
|
791 |
+
$metr = $row->getMetricValues();
|
792 |
+
$metric_value = $metr[0]->getValue();
|
793 |
+
$dim = $row->getDimensionValues();
|
794 |
+
$dimension_value = $dim[0]->getValue();
|
795 |
+
$wpmsga_data[] = array(esc_html($dimension_value), (int)$metric_value);
|
796 |
+
}
|
797 |
}
|
798 |
|
799 |
return $wpmsga_data;
|
inc/pages/dashboard-widgets/analytics_widgets.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wpms-analytics-widget-content">
|
2 |
+
<div class="analytics-header">
|
3 |
+
<!-- Generate request options -->
|
4 |
+
<div class="request-date">
|
5 |
+
<select name="wpms-request-date" id="wpms-request-date">
|
6 |
+
<?php foreach ($requestDates as $date) { ?>
|
7 |
+
<option <?php if ($selectedDate === $date['value']) {
|
8 |
+
echo esc_attr(' selected ');
|
9 |
+
}?> value="<?php echo esc_attr($date['value']); ?>">
|
10 |
+
<?php echo esc_html($date['html']); ?></option>
|
11 |
+
<?php } ?>
|
12 |
+
</select>
|
13 |
+
</div>
|
14 |
+
<div class="request-query">
|
15 |
+
<select name="wpms-request-query" id="wpms-request-query">
|
16 |
+
<?php foreach ($requestQuery as $query) { ?>
|
17 |
+
<option <?php if ($selectedQuery === $query['value']) {
|
18 |
+
echo esc_attr(' selected ');
|
19 |
+
}?> value="<?php echo esc_attr($query['value']); ?>">
|
20 |
+
<?php echo esc_html($query['html']); ?></option>
|
21 |
+
<?php } ?>
|
22 |
+
</select>
|
23 |
+
</div>
|
24 |
+
<div class="request-loading">
|
25 |
+
<span class="spinner wpms-spinner-loading"></span>
|
26 |
+
</div>
|
27 |
+
|
28 |
+
</div>
|
29 |
+
<?php
|
30 |
+
if (empty($google_analytics['tableid_jail']) || empty($profile)) {
|
31 |
+
echo "<div class='wpms-message'><p>";
|
32 |
+
esc_html_e('Please ', 'wp-meta-seo');
|
33 |
+
echo '<a target="_blank" href="' . esc_url(admin_url('admin.php?page=metaseo_google_analytics&view=wpms_gg_service_data')) . '">' .esc_html('select a profile') . '</a>';
|
34 |
+
esc_html_e(' first in order to get Google Analytics data', 'wp-meta-seo');
|
35 |
+
echo '</p></div>';
|
36 |
+
} else { ?>
|
37 |
+
<div class="wpms-error-response"><?php echo esc_html('Invalid response, ') . '<a target="_blank" href="' . esc_url(admin_url('admin.php?page=metaseo_google_analytics&view=wpms_gg_service_data')) . '">' .esc_html('check your setting.') . '</a>'; ?></div>
|
38 |
+
<div class="analytics-charts" id="wpms-analytics-charts">
|
39 |
+
<!-- Render charts by ajax here -->
|
40 |
+
</div>
|
41 |
+
<?php } ?>
|
42 |
+
</div>
|
inc/pages/dashboard-widgets/dashboard_widgets.php
ADDED
@@ -0,0 +1,228 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* Prohibit direct script loading */
|
3 |
+
defined('ABSPATH') || die('No direct script access allowed!');
|
4 |
+
?>
|
5 |
+
<div class="wpms_dashboard_widgets">
|
6 |
+
<div class="wpms_dash_widgets wpms_dash_permalink"
|
7 |
+
data-tippy="<?php esc_attr_e('It’s better using a permalink structure that
|
8 |
+
is adding in your URL the category name and content title.
|
9 |
+
This parameter can be changed in Settings > Permalinks WordPress menu.
|
10 |
+
Tag recommended is %category%/%postname%', 'wp-meta-seo') ?>">
|
11 |
+
<div class="row panel-statistics">
|
12 |
+
<div class="tooltipped">
|
13 |
+
<div class="panel panel-updates dashboard-card">
|
14 |
+
<div class="panel-body">
|
15 |
+
<div class="row">
|
16 |
+
<div class="wpms_dashboard_widgets_left">
|
17 |
+
<h4 class="panel-title dashboard-title">
|
18 |
+
<?php esc_html_e('PERMALINKS SETTINGS', 'wp-meta-seo') ?>
|
19 |
+
</h4>
|
20 |
+
<div class="panel-bottom">
|
21 |
+
<h3 class="dashboard-title percent_1">50%</h3>
|
22 |
+
<span class="dashboard-title percent_2"><?php esc_html_e('Optimized at:', 'wp-meta-seo') ?>
|
23 |
+
<span class="percent">50%</span></span>
|
24 |
+
</div>
|
25 |
+
</div>
|
26 |
+
<div class="wpms_dashboard_widgets_right">
|
27 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
28 |
+
</div>
|
29 |
+
</div>
|
30 |
+
</div>
|
31 |
+
</div>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
</div>
|
35 |
+
|
36 |
+
<div class="wpms_dash_widgets wpms_dash_metatitle"
|
37 |
+
data-tippy="<?php esc_attr_e('Meta titles are displayed in search engine results as a page title.
|
38 |
+
It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least
|
39 |
+
the met information on your most popular pages', 'wp-meta-seo') ?>">
|
40 |
+
<div class="row panel-statistics">
|
41 |
+
<div class="tooltipped">
|
42 |
+
<div class="panel panel-updates dashboard-card">
|
43 |
+
<div class="panel-body">
|
44 |
+
<div class="row">
|
45 |
+
<div class="wpms_dashboard_widgets_left">
|
46 |
+
<h4 class="panel-title dashboard-title"><?php esc_html_e('META TITLE', 'wp-meta-seo') ?></h4>
|
47 |
+
<div class="panel-bottom">
|
48 |
+
<h3 class="dashboard-title percent_1">0%</h3>
|
49 |
+
<span class="dashboard-title percent_2">
|
50 |
+
<?php esc_html_e('Meta title filled:', 'wp-meta-seo') ?>
|
51 |
+
<span class="percent">0/0</span>
|
52 |
+
</span>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
<div class="wpms_dashboard_widgets_right">
|
56 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
57 |
+
</div>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
</div>
|
61 |
+
</div>
|
62 |
+
</div>
|
63 |
+
</div>
|
64 |
+
|
65 |
+
<div class="wpms_dash_widgets wpms_dash_metadesc"
|
66 |
+
data-tippy="<?php esc_attr_e('Meta descriptions are displayed in search engine results as a page description.
|
67 |
+
It’s a good thing for SEO to have some custom and attractive ones. Be sure to fill at least the meta
|
68 |
+
information on your most popular pages.', 'wp-meta-seo') ?>">
|
69 |
+
<div class="row panel-statistics">
|
70 |
+
<div class="tooltipped">
|
71 |
+
<div class="panel panel-updates dashboard-card">
|
72 |
+
<div class="panel-body">
|
73 |
+
<div class="row">
|
74 |
+
<div class="wpms_dashboard_widgets_left">
|
75 |
+
<h4 class="panel-title dashboard-title">
|
76 |
+
<?php esc_html_e('META DESCRIPTION', 'wp-meta-seo') ?>
|
77 |
+
</h4>
|
78 |
+
<div class="panel-bottom">
|
79 |
+
<h3 class="dashboard-title percent_1">0%</h3>
|
80 |
+
<span class="dashboard-title percent_2">
|
81 |
+
<?php esc_html_e('Meta description filled:', 'wp-meta-seo') ?>
|
82 |
+
<span class="percent">0/0</span>
|
83 |
+
</span>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
<div class="wpms_dashboard_widgets_right">
|
87 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
88 |
+
</div>
|
89 |
+
</div>
|
90 |
+
</div>
|
91 |
+
</div>
|
92 |
+
</div>
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
|
96 |
+
<?php
|
97 |
+
if (is_plugin_active(WPMSEO_ADDON_FILENAME)) {
|
98 |
+
if (!class_exists('MetaSeoAddonAdmin')) {
|
99 |
+
require_once WPMETASEO_ADDON_PLUGIN_DIR . '/inc/class.metaseo-addon-admin.php';
|
100 |
+
}
|
101 |
+
require_once WPMETASEO_ADDON_PLUGIN_DIR . '/inc/page/dashboard/duplicate_metatitle_widgets.php';
|
102 |
+
require_once WPMETASEO_ADDON_PLUGIN_DIR . '/inc/page/dashboard/duplicate_metadesc_widgets.php';
|
103 |
+
}
|
104 |
+
?>
|
105 |
+
|
106 |
+
<div class="wpms_dash_widgets wpms_dash_imgsresize"
|
107 |
+
data-tippy="<?php esc_attr_e('Display image at its natural size, do not use HTML resize.
|
108 |
+
It happens usually when you use handles to resize an image. You have a bulk
|
109 |
+
edition tool to fix that.', 'wp-meta-seo') ?>">
|
110 |
+
<div class="row panel-statistics">
|
111 |
+
<div class="tooltipped">
|
112 |
+
<div class="panel panel-updates dashboard-card">
|
113 |
+
<div class="panel-body">
|
114 |
+
<div class="row">
|
115 |
+
<div class="wpms_dashboard_widgets_left">
|
116 |
+
<h4 class="panel-title dashboard-title">
|
117 |
+
<?php esc_html_e('HTML IMAGE RESIZING', 'wp-meta-seo') ?>
|
118 |
+
</h4>
|
119 |
+
<div class="panel-bottom">
|
120 |
+
<h3 class="dashboard-title percent_1">0%</h3>
|
121 |
+
<span class="dashboard-title percent_2">
|
122 |
+
<?php esc_html_e('Wrong resized images:', 'wp-meta-seo') ?>
|
123 |
+
<span class="percent">0/0</span>
|
124 |
+
</span>
|
125 |
+
</div>
|
126 |
+
</div>
|
127 |
+
<div class="wpms_dashboard_widgets_right">
|
128 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
129 |
+
</div>
|
130 |
+
</div>
|
131 |
+
</div>
|
132 |
+
</div>
|
133 |
+
</div>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
|
137 |
+
<div class="wpms_dash_widgets wpms_dash_imgsmeta"
|
138 |
+
data-tippy="<?php esc_attr_e('We recommend to use both alt text.
|
139 |
+
The main advantage is that it helps search engines discover your images and display
|
140 |
+
them in image search results. Plus, these tags improve the accessibility of your site and
|
141 |
+
give more information about your images. Use our bulk image
|
142 |
+
tool to quickly check and fix that.', 'wp-meta-seo') ?>">
|
143 |
+
<div class="row panel-statistics">
|
144 |
+
<div class="tooltipped">
|
145 |
+
<div class="panel panel-updates dashboard-card">
|
146 |
+
<div class="panel-body">
|
147 |
+
<div class="row">
|
148 |
+
<div class="wpms_dashboard_widgets_left">
|
149 |
+
<h4 class="panel-title dashboard-title">
|
150 |
+
<?php esc_html_e('IMAGE ALT', 'wp-meta-seo') ?>
|
151 |
+
</h4>
|
152 |
+
<div class="panel-bottom">
|
153 |
+
<h3 class="dashboard-title percent_1">0%</h3>
|
154 |
+
<span class="dashboard-title percent_2">
|
155 |
+
<?php esc_html_e('Image data filled (in content):', 'wp-meta-seo') ?>
|
156 |
+
<span class="percent">0/0</span>
|
157 |
+
</span>
|
158 |
+
</div>
|
159 |
+
</div>
|
160 |
+
<div class="wpms_dashboard_widgets_right">
|
161 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
162 |
+
</div>
|
163 |
+
</div>
|
164 |
+
</div>
|
165 |
+
</div>
|
166 |
+
</div>
|
167 |
+
</div>
|
168 |
+
</div>
|
169 |
+
|
170 |
+
<div class="wpms_dash_widgets wpms_dash_newcontent"
|
171 |
+
data-tippy="<?php esc_attr_e('It is highly recommended to update or add new content on your website quite frequently.
|
172 |
+
At least 3 updated or new content per month would be great :)', 'wp-meta-seo') ?>">
|
173 |
+
<div class="row panel-statistics">
|
174 |
+
<div class="tooltipped">
|
175 |
+
<div class="panel panel-updates dashboard-card">
|
176 |
+
<div class="panel-body">
|
177 |
+
<div class="row">
|
178 |
+
<div class="wpms_dashboard_widgets_left">
|
179 |
+
<h4 class="panel-title dashboard-title">
|
180 |
+
<?php esc_html_e('NEW OR UPDATED CONTENT', 'wp-meta-seo') ?>
|
181 |
+
</h4>
|
182 |
+
<div class="panel-bottom">
|
183 |
+
<h3 class="dashboard-title percent_1">0%</h3>
|
184 |
+
<span class="dashboard-title percent_2">
|
185 |
+
<?php esc_html_e('Latest month new or updated content:', 'wp-meta-seo') ?>
|
186 |
+
<span class="percent">0</span>
|
187 |
+
</span>
|
188 |
+
</div>
|
189 |
+
</div>
|
190 |
+
<div class="wpms_dashboard_widgets_right">
|
191 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
192 |
+
</div>
|
193 |
+
</div>
|
194 |
+
</div>
|
195 |
+
</div>
|
196 |
+
</div>
|
197 |
+
</div>
|
198 |
+
</div>
|
199 |
+
|
200 |
+
<div class="wpms_dash_widgets wpms_dash_linkmeta"
|
201 |
+
data-tippy="<?php esc_attr_e('The link title attribute does not have any SEO value for links.
|
202 |
+
BUT links titles can influence click behavior for users, which may indirectly affect
|
203 |
+
your SEO performance', 'wp-meta-seo') ?>">
|
204 |
+
<div class="row panel-statistics">
|
205 |
+
<div class="tooltipped">
|
206 |
+
<div class="panel panel-updates dashboard-card">
|
207 |
+
<div class="panel-body">
|
208 |
+
<div class="row">
|
209 |
+
<div class="wpms_dashboard_widgets_left">
|
210 |
+
<h4 class="panel-title dashboard-title"><?php esc_html_e('LINK TITLES', 'wp-meta-seo') ?></h4>
|
211 |
+
<div class="panel-bottom">
|
212 |
+
<h3 class="dashboard-title percent_1">0%</h3>
|
213 |
+
<span class="dashboard-title percent_2">
|
214 |
+
<?php esc_html_e('Links title completed:', 'wp-meta-seo') ?>
|
215 |
+
<span class="percent">0/0</span>
|
216 |
+
</span>
|
217 |
+
</div>
|
218 |
+
</div>
|
219 |
+
<div class="wpms_dashboard_widgets_right">
|
220 |
+
<img src="<?php echo esc_url(WPMETASEO_PLUGIN_URL . 'assets/images/white-loader.gif') ?>" class="white-loader">
|
221 |
+
</div>
|
222 |
+
</div>
|
223 |
+
</div>
|
224 |
+
</div>
|
225 |
+
</div>
|
226 |
+
</div>
|
227 |
+
</div>
|
228 |
+
</div>
|
languages/wp-meta-seo-en_US.mo
CHANGED
Binary file
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: JoomUnited
|
3 |
Tags: google, webmaster tools, keywords, meta, meta description, meta keywords, meta title, robots meta, search engine optimization, seo, wordpress seo, yahoo, image optimization, image resize, custom post seo, redirect, redirection, 301, broken link
|
4 |
Requires at least: 4.7
|
5 |
-
Tested up to: 5.9.
|
6 |
-
Stable tag: 4.4.
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -259,6 +259,9 @@ Yes WP Meta SEO is compatible with Gutenberg editor since 3.7 version.
|
|
259 |
|
260 |
== Changelog ==
|
261 |
|
|
|
|
|
|
|
262 |
= 4.4.5 =
|
263 |
* Add : Update Google API
|
264 |
* Fix : SEO checker on WP Meta SEO meta box
|
2 |
Contributors: JoomUnited
|
3 |
Tags: google, webmaster tools, keywords, meta, meta description, meta keywords, meta title, robots meta, search engine optimization, seo, wordpress seo, yahoo, image optimization, image resize, custom post seo, redirect, redirection, 301, broken link
|
4 |
Requires at least: 4.7
|
5 |
+
Tested up to: 5.9.3
|
6 |
+
Stable tag: 4.4.6
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
259 |
|
260 |
== Changelog ==
|
261 |
|
262 |
+
= 4.4.6 =
|
263 |
+
* Add : WP Meta Seo widget: Quick SEO Preview
|
264 |
+
|
265 |
= 4.4.5 =
|
266 |
* Add : Update Google API
|
267 |
* Fix : SEO checker on WP Meta SEO meta box
|
wp-meta-seo.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: WP Meta SEO
|
5 |
* Plugin URI: http://www.joomunited.com/wordpress-products/wp-meta-seo
|
6 |
* Description: WP Meta SEO is a plugin for WordPress to fill meta for content, images and main SEO info in a single view.
|
7 |
-
* Version: 4.4.
|
8 |
* Text Domain: wp-meta-seo
|
9 |
* Domain Path: /languages
|
10 |
* Author: JoomUnited
|
@@ -133,7 +133,7 @@ if (!defined('WPMSEO_VERSION')) {
|
|
133 |
/**
|
134 |
* Plugin version
|
135 |
*/
|
136 |
-
define('WPMSEO_VERSION', '4.4.
|
137 |
}
|
138 |
|
139 |
if (!defined('WPMS_CLIENTID')) {
|
4 |
* Plugin Name: WP Meta SEO
|
5 |
* Plugin URI: http://www.joomunited.com/wordpress-products/wp-meta-seo
|
6 |
* Description: WP Meta SEO is a plugin for WordPress to fill meta for content, images and main SEO info in a single view.
|
7 |
+
* Version: 4.4.6
|
8 |
* Text Domain: wp-meta-seo
|
9 |
* Domain Path: /languages
|
10 |
* Author: JoomUnited
|
133 |
/**
|
134 |
* Plugin version
|
135 |
*/
|
136 |
+
define('WPMSEO_VERSION', '4.4.6');
|
137 |
}
|
138 |
|
139 |
if (!defined('WPMS_CLIENTID')) {
|