SEOPress - Version 1.0

Version Description

  • NEW Google Analytics
  • NEW Import Yoast Posts metadata in SEOPress (Title tags, Meta description, Facebook Open Graph tags (title, description and image thumbnail), Twitter tags (title, description and image thumbnail), Meta Robots (noindex, nofollow...), Canonical URL)
  • NEW Google News Sitemap (SEOPress PRO only)
  • NEW Breadcrumbs (SEOPress PRO only)
  • NEW Google Page Speed tool (SEOPress PRO only)
  • NEW Robots.txt (SEOPress PRO only)
  • NEW htaccess (SEOPress PRO only)
  • NEW WooCommerce OG:PRICE meta for product (SEOPress PRO only)
  • NEW WooCommerce OG:CURRENCY meta for product (SEOPress PRO only)
  • NEW WooCommerce Noindex cart page (SEOPress PRO only)
  • NEW WooCommerce Noindex checkout page (SEOPress PRO only)
  • NEW WooCommerce Noindex customer account pages (SEOPress PRO only)
  • NEW Add Title tag column in post types
  • NEW Add Meta description column in post types
  • NEW Set default values (settings need to be reset if you already own the plugin)
  • NEW Add SEOPress in Admin Bar for quick access (you can remove it)
  • NEW Manage Titles, Meta Descriptions and Meta Robots for Custom Post Type Archives
  • NEW Add new checks in notifications center
  • NEW Add Logo preview in Knowledge graph
  • INFO If Jetpack enabled, disable Jetpack Open Graph Tags for compatibility
  • INFO Check if SEOPress is installed, if not, display a notice for SEOPress Pro users
  • INFO Improve some labels
  • INFO Add minimum size required for Facebook and Twitter thumbnail
  • INFO Add SEOPress icon in admin menu
  • INFO Add descriptions / tooltips for labels, inputs...
  • FIX Disable article:published_time, article:modified_time and og:updated_time on homepage
  • FIX CSS bugs
  • FIX XML Sitemaps namespaces
  • FIX Escape HTML in OG:Title, Twitter:title
  • FIX Wrong link for rating SEOPress on w.org
  • FIX Replace get_site_url() by get_home_url() (thanks to Ludovic Riaudel)
  • FIX Title tag and meta description for frontpage
  • FIX Notification center checks
  • FIX if function exists errors
  • FIX WooCommerce checks
Download this release

Release Info

Developer rainbowgeek
Plugin Icon 128x128 SEOPress
Version 1.0
Comparing to
See all releases

Code changes from version 0.9 to 1.0

Files changed (65) hide show
  1. assets/css/seopress.css +325 -35
  2. assets/img/logo-seopress.png +0 -0
  3. assets/js/seopress-dashboard.js +212 -0
  4. assets/js/seopress-tabs.js +36 -1
  5. assets/js/seopress-tabs6.js +28 -0
  6. assets/js/seopress-yoast-migrate.js +25 -0
  7. contributors.txt +4 -0
  8. inc/admin/admin-header.php +63 -0
  9. inc/admin/admin-metaboxes.php +77 -20
  10. inc/admin/admin.php +1620 -231
  11. inc/admin/adminbar.php +64 -0
  12. inc/admin/ajax.php +85 -0
  13. inc/functions/options-advanced-admin.php +72 -1
  14. inc/functions/options-google-analytics.php +285 -0
  15. inc/functions/options-import-export.php +13 -3
  16. inc/functions/options-social.php +37 -39
  17. inc/functions/options-titles-metas.php +183 -70
  18. inc/functions/options.php +40 -23
  19. inc/functions/sitemap/index.php +3 -0
  20. inc/functions/sitemap/template-xml-sitemaps-single-term.php +15 -21
  21. inc/functions/sitemap/template-xml-sitemaps-single.php +5 -5
  22. inc/functions/sitemap/template-xml-sitemaps-xsl.php +22 -17
  23. inc/functions/sitemap/template-xml-sitemaps.php +33 -12
  24. languages/wp-seopress-fr_FR.mo +0 -0
  25. languages/wp-seopress-fr_FR.po +844 -262
  26. languages/wp-seopress.mo +0 -0
  27. languages/wp-seopress.po +761 -234
  28. readme.txt +58 -5
  29. seopress.php +153 -18
  30. wpgod/composer-temp.phar +0 -0
  31. wpgod/composer.json +16 -0
  32. wpgod/composer.phar +0 -0
  33. wpgod/public/js/send-error.js +8 -0
  34. wpgod/public/js/send-tracking-general.js +8 -0
  35. wpgod/src/WPGod/Handler/GodAdminNoticeHandler.php +118 -0
  36. wpgod/src/WPGod/Handler/GodErrorHandler.php +136 -0
  37. wpgod/src/WPGod/Handler/GodTrackingHandler.php +101 -0
  38. wpgod/src/WPGod/Helpers/GodEnvironmentInfo.php +107 -0
  39. wpgod/src/WPGod/Helpers/GodError.php +73 -0
  40. wpgod/src/WPGod/Helpers/GodServerInfo.php +101 -0
  41. wpgod/src/WPGod/Helpers/GodTypeDevelopment.php +21 -0
  42. wpgod/src/WPGod/Models/GodHandlerInterface.php +34 -0
  43. wpgod/src/WPGod/Models/HelperInterface.php +14 -0
  44. wpgod/src/WPGod/Models/HooksInterface.php +25 -0
  45. wpgod/src/WPGod/Models/ServiceInterface.php +14 -0
  46. wpgod/src/WPGod/Models/Specification/AbstractSpecification.php +55 -0
  47. wpgod/src/WPGod/Models/Specification/AndX.php +39 -0
  48. wpgod/src/WPGod/Models/Specification/ContainsSpecification.php +22 -0
  49. wpgod/src/WPGod/Models/Specification/EqualsSpecification.php +16 -0
  50. wpgod/src/WPGod/Models/Specification/NotX.php +36 -0
  51. wpgod/src/WPGod/Models/Specification/OrX.php +40 -0
  52. wpgod/src/WPGod/Models/Specification/SpecificationInterface.php +43 -0
  53. wpgod/src/WPGod/Services/GodAbstractService.php +71 -0
  54. wpgod/src/WPGod/Services/GodApi.php +148 -0
  55. wpgod/src/WPGod/Services/GodAuthorizeError.php +69 -0
  56. wpgod/src/WPGod/Services/GodCheckErrors.php +86 -0
  57. wpgod/src/WPGod/Services/GodFilesRules.php +154 -0
  58. wpgod/src/WPGod/WPGod.php +164 -0
  59. wpgod/vendor/autoload.php +7 -0
  60. wpgod/vendor/composer/ClassLoader.php +413 -0
  61. wpgod/vendor/composer/LICENSE +21 -0
  62. wpgod/vendor/composer/autoload_classmap.php +9 -0
  63. wpgod/vendor/composer/autoload_namespaces.php +9 -0
  64. wpgod/vendor/composer/autoload_psr4.php +10 -0
  65. wpgod/vendor/composer/autoload_real.php +45 -0
assets/css/seopress.css CHANGED
@@ -9,19 +9,30 @@
9
z-index: 50;
10
margin: 0;
11
padding: 0;
12
}
13
#seopress_cpt .ui-helper-clearfix:after {
14
content:none;
15
}
16
#seopress_cpt .ui-tabs .ui-tabs-panel {
17
background: none repeat scroll 0 0 #FFFFFF;
18
border: 1px solid #DDDDDD;
19
- border-radius: 0 3px 3px 3px;
20
display: inline-block;
21
padding: 1em 1.4em;
22
width: 100%;
23
box-sizing: border-box;
24
}
25
#seopress_cpt .ui-tabs .ui-tabs-nav li, #seopress_cpt .ui-tabs-anchor {
26
cursor:pointer !important;
27
}
@@ -34,15 +45,18 @@
34
position: relative;
35
z-index: 60;
36
cursor:pointer;
37
}
38
#seopress_cpt #tabs-1 label,
39
#seopress_cpt #tabs-2 label[for=seopress_robots_canonical_meta],
40
#seopress_cpt #tabs-3 label,
41
#seopress_cpt #tabs-4 label,
42
#seopress_cpt .subsection-title {
43
border-bottom: 1px solid #DDDDDD;
44
display: block;
45
margin: 20px 0 5px;
46
}
47
#seopress_cpt .wp-color-result {
48
margin:0;
@@ -51,22 +65,31 @@
51
#seopress_cpt #tabs-2 input[type=text],
52
#seopress_cpt #tabs-3 textarea,
53
#seopress_cpt #tabs-3 input[type=text],
54
- #seopress_cpt #tabs-4 input[type=text] {
55
width:100%;
56
}
57
#seopress_cpt select {
58
width:300px;
59
}
60
#seopress_cpt #tabs-4 select {
61
- width:50px;
62
display: inline;
63
}
64
#seopress_cpt #tabs-4 #seopress_redirections_value_meta {
65
- width: calc(100% - 58px);
66
float: right;
67
}
68
- #seopress_cpt #tabs-4 #seopress_redirections_enabled {
69
border-bottom: none;
70
}
71
#seopress_cpt .mandatory {
72
color: #cc0000;
@@ -129,16 +152,21 @@
129
#seopress_cpt .ui-tabs {
130
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
131
padding: .2em;
132
}
133
#seopress_cpt .ui-tabs .ui-tabs-nav li {
134
list-style: none;
135
float: left;
136
position: relative;
137
top: 0;
138
- margin: 1px .2em 0 0;
139
border-bottom-width: 0;
140
padding: 0;
141
white-space: nowrap;
142
}
143
#seopress_cpt .ui-tabs .ui-tabs-nav li a {
144
float: left;
@@ -157,6 +185,8 @@
157
#seopress_cpt .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
158
#seopress_cpt .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
159
cursor: pointer;
160
}
161
#seopress_cpt .ui-tabs-vertical { width: 55em; }
162
#seopress_cpt .ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 12em; }
@@ -172,21 +202,76 @@
172
/*************************************************************************************************/
173
/* Admin - Options panel */
174
/*************************************************************************************************/
175
- .wp-admin.seopress-styles {
176
- background: #F7F7F7;
177
}
178
.seopress-styles #wpcontent {
179
padding-left: 0;
180
}
181
.seopress-styles #seopress-admin {
182
background: #FFF;
183
- box-shadow: 0 0 0 1px rgba(224, 224, 224, 0),0 0px 2px #a8a8a8;
184
}
185
.seopress-styles #seopress-navbar {
186
padding: 10px 25px;
187
height: 40px;
188
margin: 0 auto;
189
- width: 48rem;
190
}
191
#seopress-header {
192
margin: 0;
@@ -203,7 +288,7 @@
203
}
204
#seopress-header #seopress-admin h1 .seopress-info-version {
205
position: relative;
206
- left: 170px;
207
top: -17px;
208
}
209
#seopress-header #seopress-admin .wpc-info-version {
@@ -252,6 +337,8 @@
252
}
253
.seopress-tab {
254
display: none;
255
}
256
.seopress-tab.active {
257
display: block;
@@ -322,7 +409,7 @@
322
.seopress-page-list .seopress-feature, #seopress-notifications-center {
323
background: #fff;
324
margin: 20px auto;
325
- box-shadow: 0 0 0 1px rgba(224, 224, 224, 0.5),0 1px 2px #a8a8a8;
326
max-width: 45rem;
327
padding: 1.5rem;
328
width: 100%;
@@ -348,23 +435,41 @@
348
margin: 0px;
349
display: block;
350
}
351
- .seopress-page-list .seopress-feature h4 {
352
margin: 0;
353
font-size: 16px;
354
font-weight: bold;
355
}
356
- .seopress-page-list .seopress-feature h4 .dashicons {
357
font-size: 16px;
358
margin-left: 5px;
359
vertical-align: middle;
360
}
361
- .seopress-page-list a {
362
- color: #333;
363
text-decoration: none;
364
- }
365
- .seopress-page-list a:hover {
366
text-decoration: none;
367
- color: #09C;
368
}
369
#seopress-notifications-center h2 {
370
margin: 5px 0px 15px 5px;
@@ -375,22 +480,46 @@
375
margin-right: 10px;
376
}
377
#seopress-notifications-center .seopress-alert {
378
- padding: 10px 15px 10px;
379
- display: block;
380
- margin: 10px 10px 10px 5px;
381
- border: 1px solid rgba(224, 224, 224, 1);
382
- border-radius: 5px;
383
}
384
#seopress-notifications-center .seopress-alert p {
385
display: inline-block;
386
}
387
- #seopress-notifications-center .seopress-alert .button-primary {
388
- display: inline;
389
- float: right;
390
- margin: 10px 0px;
391
}
392
#seopress-notifications-center .seopress-alert .dashicons {
393
- color:#09C;
394
}
395
.seopress-option .seopress-table {
396
background: #FFF none repeat scroll 0% 0%;
@@ -411,12 +540,35 @@
411
font-weight: bold;
412
background: #f1f1f1;
413
}
414
- #seopress-admin .wpalacarte-banner {
415
- position: absolute;
416
- right: 28px;
417
- top: 10px;
418
- height: 200px;
419
- width: auto;
420
}
421
.seopress-option input[type="text"].seopress-admin-menu-input {
422
min-width: inherit;
@@ -425,3 +577,141 @@
425
.seopress_page_seopress-import-export .postbox {
426
width: calc(100% - 20px);
427
}
9
z-index: 50;
10
margin: 0;
11
padding: 0;
12
+ background: none;
13
+ border: none;
14
}
15
#seopress_cpt .ui-helper-clearfix:after {
16
content:none;
17
}
18
+ .seopress_page_seopress-titles #seopress-tabs .form-table td {
19
+ padding: 0;
20
+ }
21
#seopress_cpt .ui-tabs .ui-tabs-panel {
22
background: none repeat scroll 0 0 #FFFFFF;
23
border: 1px solid #DDDDDD;
24
+ border-radius: 0;
25
display: inline-block;
26
padding: 1em 1.4em;
27
width: 100%;
28
box-sizing: border-box;
29
}
30
+ #seopress_cpt .ui-tabs .ui-tabs-panel .dashicons-info {
31
+ font-size: 16px;
32
+ vertical-align: middle;
33
+ height: 16px;
34
+ width: 16px;
35
+ }
36
#seopress_cpt .ui-tabs .ui-tabs-nav li, #seopress_cpt .ui-tabs-anchor {
37
cursor:pointer !important;
38
}
45
position: relative;
46
z-index: 60;
47
cursor:pointer;
48
+ border-radius: 0;
49
}
50
#seopress_cpt #tabs-1 label,
51
#seopress_cpt #tabs-2 label[for=seopress_robots_canonical_meta],
52
#seopress_cpt #tabs-3 label,
53
#seopress_cpt #tabs-4 label,
54
+ #seopress_cpt #tabs-5 label,
55
#seopress_cpt .subsection-title {
56
border-bottom: 1px solid #DDDDDD;
57
display: block;
58
margin: 20px 0 5px;
59
+ font-weight: bold;
60
}
61
#seopress_cpt .wp-color-result {
62
margin:0;
65
#seopress_cpt #tabs-2 input[type=text],
66
#seopress_cpt #tabs-3 textarea,
67
#seopress_cpt #tabs-3 input[type=text],
68
+ #seopress_cpt #tabs-4 input[type=text],
69
+ #seopress_cpt #tabs-5 input[type=text] {
70
width:100%;
71
}
72
#seopress_cpt select {
73
width:300px;
74
}
75
#seopress_cpt #tabs-4 select {
76
+ width:60px;
77
display: inline;
78
}
79
#seopress_cpt #tabs-4 #seopress_redirections_value_meta {
80
+ width: calc(100% - 68px);
81
float: right;
82
}
83
+ #seopress_cpt #tabs-4 #seopress_redirections_enabled,
84
+ #seopress_cpt #tabs-5 #seopress_news_disabled {
85
border-bottom: none;
86
+ font-weight: normal;
87
+ }
88
+ #seopress_cpt .advise {
89
+ margin: 5px;
90
+ display: block;
91
+ color: red;
92
+ font-style: italic;
93
}
94
#seopress_cpt .mandatory {
95
color: #cc0000;
152
#seopress_cpt .ui-tabs {
153
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
154
padding: .2em;
155
+ border: none;
156
+ font-family: inherit;
157
+ font-size: inherit;
158
}
159
#seopress_cpt .ui-tabs .ui-tabs-nav li {
160
list-style: none;
161
float: left;
162
position: relative;
163
top: 0;
164
+ margin: -1px .2em 0 0;
165
border-bottom-width: 0;
166
padding: 0;
167
white-space: nowrap;
168
+ border: none;
169
+ background: none;
170
}
171
#seopress_cpt .ui-tabs .ui-tabs-nav li a {
172
float: left;
185
#seopress_cpt .ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
186
#seopress_cpt .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
187
cursor: pointer;
188
+ color: #0073aa;
189
+ text-decoration: none;
190
}
191
#seopress_cpt .ui-tabs-vertical { width: 55em; }
192
#seopress_cpt .ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 12em; }
202
/*************************************************************************************************/
203
/* Admin - Options panel */
204
/*************************************************************************************************/
205
+ .seopress-styles .seopress-option {
206
+ margin: 20px auto 0;
207
+ max-width: 90%;
208
+ box-shadow: 0px 0px 20px rgba(0,0,0,0.1);
209
+ padding: 1.0rem;
210
+ background: #fff;
211
+ }
212
+ .seopress-styles .seopress-option h1 span,
213
+ .seopress-styles .seopress-option h2 span {
214
+ margin: 0 10px;
215
+ font-size: 40px;
216
+ width: 40px;
217
+ height: 40px;
218
+ vertical-align: middle;
219
+ }
220
+ .seopress-styles .seopress-option .metabox-holder h2 span {
221
+ font-size: 16px;
222
+ }
223
+ .seopress-styles .wrap {
224
+ margin: 0;
225
+ }
226
+ .seopress-styles .seopress-option .submit {
227
+ background: #fff;
228
+ text-align: center;
229
+ border-top: 1px solid #F1F1F1;
230
+ padding-top: 20px;
231
+ padding-bottom: 20px;
232
+ margin: 0;
233
+ }
234
+ .seopress-styles .seopress-option #submit,
235
+ .seopress-styles .seopress-option #seopress-yoast-migrate {
236
+ color: #232323;
237
+ text-decoration: none;
238
+ background: #F1F1F1;
239
+ border: none;
240
+ border-radius: 30px;
241
+ padding-right: 20px;
242
+ padding-left: 20px;
243
+ line-height: 34px;
244
+ text-transform: uppercase;
245
+ height: 34px;
246
+ transition: all 300ms linear;
247
+ box-shadow: none;
248
+ text-shadow: none;
249
+ }
250
+ .seopress-styles .seopress-option #submit:hover,
251
+ .seopress-styles .seopress-option #seopress-yoast-migrate:hover {
252
+ text-decoration: none;
253
+ color: #FFF;
254
+ background: #232323;
255
}
256
.seopress-styles #wpcontent {
257
padding-left: 0;
258
+ background: #F7F7F7;
259
}
260
.seopress-styles #seopress-admin {
261
background: #FFF;
262
+ box-shadow: 0px 0px 20px rgba(0,0,0,0.1);
263
+ }
264
+ #adminmenu div.wp-menu-image.dashicons-admin-seopress {
265
+ background-image: url('data:image/png;base64,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');
266
+ background-repeat: no-repeat;
267
+ background-position: center center;
268
+ background-size: 22px;
269
}
270
.seopress-styles #seopress-navbar {
271
padding: 10px 25px;
272
height: 40px;
273
margin: 0 auto;
274
+ width: 55rem;
275
}
276
#seopress-header {
277
margin: 0;
288
}
289
#seopress-header #seopress-admin h1 .seopress-info-version {
290
position: relative;
291
+ left: 190px;
292
top: -17px;
293
}
294
#seopress-header #seopress-admin .wpc-info-version {
337
}
338
.seopress-tab {
339
display: none;
340
+ background: #fff;
341
+ padding: 1.5rem;
342
}
343
.seopress-tab.active {
344
display: block;
409
.seopress-page-list .seopress-feature, #seopress-notifications-center {
410
background: #fff;
411
margin: 20px auto;
412
+ box-shadow: 0px 0px 20px rgba(0,0,0,0.1);
413
max-width: 45rem;
414
padding: 1.5rem;
415
width: 100%;
435
margin: 0px;
436
display: block;
437
}
438
+ .seopress-page-list .seopress-feature h3 {
439
margin: 0;
440
font-size: 16px;
441
font-weight: bold;
442
}
443
+ .seopress-page-list .seopress-feature h3 .dashicons {
444
font-size: 16px;
445
margin-left: 5px;
446
vertical-align: middle;
447
}
448
+ #seopress-content .seopress-page-list .seopress-feature a,
449
+ #seopress-notifications-center .seopress-alert .button-primary {
450
+ color: #232323;
451
text-decoration: none;
452
+ background: #F1F1F1;
453
+ border: none;
454
+ border-radius: 30px;
455
+ padding-right: 20px;
456
+ padding-left: 20px;
457
+ line-height: 34px;
458
+ text-transform: uppercase;
459
+ height: 34px;
460
+ transition: all 300ms linear;
461
+ box-shadow: none;
462
+ text-shadow: none;
463
+ }
464
+ #seopress-content .seopress-page-list .seopress-feature a:hover,
465
+ #seopress-notifications-center .seopress-alert .button-primary:hover {
466
text-decoration: none;
467
+ color: #FFF;
468
+ background: #232323;
469
+ }
470
+ #seopress-notifications-center .seopress-alert .button-primary {
471
+ float: right;
472
+ margin: 5px 0;
473
}
474
#seopress-notifications-center h2 {
475
margin: 5px 0px 15px 5px;
480
margin-right: 10px;
481
}
482
#seopress-notifications-center .seopress-alert {
483
+ padding: 0;
484
+ display: inline-block;
485
+ margin: 0px 10px 10px 5px;
486
+ border-bottom: 1px solid rgba(224, 224, 224, 1);
487
+ width: calc(100% - 30px);
488
}
489
#seopress-notifications-center .seopress-alert p {
490
display: inline-block;
491
}
492
+ #seopress-notifications-center .seopress-alert .impact {
493
+ padding: 4px 5px;
494
+ color: #fff;
495
+ text-transform: uppercase;
496
+ font-weight: bold;
497
+ font-size: 10px;
498
+ }
499
+ #seopress-notifications-center .seopress-alert .impact.low {
500
+ background: #F89406;
501
+ }
502
+ #seopress-notifications-center .seopress-alert .impact.medium {
503
+ background: #F9F04C;
504
+ color: #515151;
505
+ }
506
+ #seopress-notifications-center .seopress-alert .impact.high {
507
+ background: #ff4949;
508
}
509
#seopress-notifications-center .seopress-alert .dashicons {
510
+ color: #FFC82C;
511
+ }
512
+ #seopress-content .seopress-page-list .seopress-feature .seopress-doc {
513
+ background: none;
514
+ float: right;
515
+ padding: 0;
516
+ width: inherit;
517
+ height: inherit;
518
+ text-align: right;
519
+ }
520
+ #seopress-content .seopress-page-list .seopress-feature .seopress-doc:hover {
521
+ color: #747474;
522
+ background: none;
523
}
524
.seopress-option .seopress-table {
525
background: #FFF none repeat scroll 0% 0%;
540
font-weight: bold;
541
background: #f1f1f1;
542
}
543
+ #seopress-content .feature-state {
544
+ font-style: italic;
545
+ font-size: 12px;
546
+ }
547
+ #seopress-content .feature-state.feature-state-on {
548
+ display: inline;
549
+ }
550
+ #seopress-content .feature-state-on {
551
+ display: inline;
552
+ }
553
+ #seopress-content .feature-state-off {
554
+ display: none;
555
+ }
556
+ .seopress-option .postbox .inside li {
557
+ list-style: square inside;
558
+ padding-left: 5px;
559
+ }
560
+ #tab_seopress_page_speed .inside li {
561
+ list-style: none;
562
+ padding-left: 0;
563
+ }
564
+ .seopress-option .log {
565
+ margin: 0;
566
+ text-transform: uppercase;
567
+ display: inline-block;
568
+ vertical-align: middle;
569
+ padding: 5px;
570
+ color: rgba(19,191,17,1);
571
+ font-style: italic;
572
}
573
.seopress-option input[type="text"].seopress-admin-menu-input {
574
min-width: inherit;
577
.seopress_page_seopress-import-export .postbox {
578
width: calc(100% - 20px);
579
}
580
+ .seopress-option .wrap-tags {
581
+ position: relative;
582
+ display: inline-block;
583
+ width: 100%;
584
+ margin-bottom: 10px;
585
+ }
586
+ .seopress-option .tag-title {
587
+ padding: 3px 5px;
588
+ background: #F1F1F1;
589
+ font-weight: bold;
590
+ position: relative;
591
+ top: 5px;
592
+ left: 0;
593
+ font-size: 11px;
594
+ transition: all 300ms linear;
595
+ cursor: pointer;
596
+ float: left;
597
+ margin-right: 5px;
598
+ user-select: none;
599
+ }
600
+ .seopress-option .tag-title:hover, .seopress-option .tag-title:focus, .seopress-option .tag-title:active {
601
+ background: #232323;
602
+ color: #fff;
603
+ user-select: none;
604
+ }
605
+ .seopress-option .tag-title .dashicons {
606
+ padding: 0;
607
+ height: 16px;
608
+ width: 16px;
609
+ font-size: 16px;
610
+ margin-right: 5px;
611
+ vertical-align: middle;
612
+ }
613
+
614
+ /*************************************************************************************************/
615
+ /* Admin - Dashboard */
616
+ /*************************************************************************************************/
617
+ input.toggle {
618
+ max-height: 0;
619
+ max-width: 0;
620
+ opacity: 0;
621
+ }
622
+ input.toggle + label {
623
+ display: inline-block;
624
+ position: relative;
625
+ box-shadow: inset 0 0 0px 1px #d5d5d5;
626
+ text-indent: -5000px;
627
+ height: 30px;
628
+ width: 50px;
629
+ border-radius: 15px;
630
+ }
631
+ input.toggle + label:before {
632
+ content: "";
633
+ position: absolute;
634
+ display: block;
635
+ height: 30px;
636
+ width: 30px;
637
+ top: 0;
638
+ left: 0;
639
+ border-radius: 15px;
640
+ background: rgba(19,191,17,0);
641
+ -moz-transition: .25s ease-in-out;
642
+ -webkit-transition: .25s ease-in-out;
643
+ transition: .25s ease-in-out;
644
+ }
645
+ input.toggle + label:after {
646
+ content: "";
647
+ position: absolute;
648
+ display: block;
649
+ height: 30px;
650
+ width: 30px;
651
+ top: 0;
652
+ left: 0px;
653
+ border-radius: 15px;
654
+ background: white;
655
+ box-shadow: inset 0 0 0 1px rgba(0,0,0,.2), 0 2px 4px rgba(0,0,0,.2);
656
+ -moz-transition: .25s ease-in-out;
657
+ -webkit-transition: .25s ease-in-out;
658
+ transition: .25s ease-in-out;
659
+ }
660
+ input.toggle[data-toggle="1"] + label:before {
661
+ width: 50px;
662
+ background: rgba(19,191,17,1);
663
+ }
664
+ input.toggle[data-toggle="1"] + label:after {
665
+ left: 20px;
666
+ box-shadow: inset 0 0 0 1px rgba(19,191,17,1), 0 2px 4px rgba(0,0,0,.2);
667
+ }
668
+ #seopress-content .seopress-page-list {
669
+ position: relative;
670
+ }
671
+ #seopress-notice-save {
672
+ position: fixed;
673
+ color: #fff;
674
+ padding: 15px 40px;
675
+ font-size: 14px;
676
+ text-align: center;
677
+ border-radius: 50px;
678
+ background: #4AB866;
679
+ top: 50px;
680
+ right: 20px;
681
+ }
682
+ .seopress_page_seopress-pro-page #wpcontent {
683
+ background: #F4F7FA;
684
+ }
685
+ .seopress-option .wrap h2.nav-tab-wrapper, .seopress-option h1.nav-tab-wrapper, .seopress-option h3.nav-tab-wrapper {
686
+ border-bottom: 1px solid #EEE;
687
+ margin: 0;
688
+ padding-top: 9px;
689
+ padding-bottom: 0;
690
+ line-height: inherit;
691
+ background: none;
692
+ }
693
+ .seopress-option .nav-tab {
694
+ border: 0px solid #ccc;
695
+ border-bottom: none;
696
+ background: none;
697
+ opacity: 0.5;
698
+ transition: opacity 300ms linear;
699
+ }
700
+ .seopress-option .about-wrap h2 .nav-tab-active, .seopress-option .nav-tab-active, .seopress-option .nav-tab-active:hover {
701
+ background-color: #fff;
702
+ border-bottom-color: rgb(35, 40, 45);
703
+ }
704
+ .seopress-option .nav-tab-active, .nav-tab-active:focus, .seopress-option .nav-tab-active:focus:active, .seopress-option .nav-tab-active:hover {
705
+ border-bottom: 2px solid rgb(35, 40, 45);
706
+ background: none;
707
+ color: rgb(35, 40, 45);
708
+ opacity: 1;
709
+ outline: none;
710
+ }
711
+ .seopress-option .nav-tab:hover {
712
+ opacity:1;
713
+ }
714
+ .seopress-option .nav-tab:focus {
715
+ outline: none;
716
+ box-shadow: none;
717
+ }
assets/img/logo-seopress.png CHANGED
Binary file
assets/js/seopress-dashboard.js ADDED
@@ -0,0 +1,212 @@
1
+ jQuery(document).ready(function(){
2
+ //Titles
3
+ jQuery('#toggle-titles').on('click', function() {
4
+ jQuery('#toggle-titles').attr('data-toggle', jQuery('#toggle-titles').attr('data-toggle') == '1' ? '0' : '1');
5
+ jQuery.ajax({
6
+ method : 'POST',
7
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
8
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
9
+ data : {
10
+ action: 'seopress_toggle_features',
11
+ feature: 'toggle-titles',
12
+ feature_value: jQuery('#toggle-titles').attr('data-toggle'),
13
+ },
14
+ success : function( data ) {
15
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
16
+ jQuery( '#seopress-notice-save .html' ).html('Titles & metas has been successfully updated!');
17
+ jQuery( '#titles-state' ).toggleClass('feature-state-on');
18
+ jQuery( '#titles-state-default' ).toggleClass('feature-state-off');
19
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
20
+ },
21
+ });
22
+ });
23
+ //XML Sitemap
24
+ jQuery('#toggle-xml-sitemap').on('click', function() {
25
+ jQuery('#toggle-xml-sitemap').attr('data-toggle', jQuery('#toggle-xml-sitemap').attr('data-toggle') == '1' ? '0' : '1');
26
+ jQuery.ajax({
27
+ method : 'POST',
28
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
29
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
30
+ data : {
31
+ action: 'seopress_toggle_features',
32
+ feature: 'toggle-xml-sitemap',
33
+ feature_value: jQuery('#toggle-xml-sitemap').attr('data-toggle'),
34
+ },
35
+ success : function( data ) {
36
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
37
+ jQuery( '#seopress-notice-save .html' ).html('XML Sitemap has been successfully updated!');
38
+ jQuery( '#sitemap-state' ).toggleClass('feature-state-on');
39
+ jQuery( '#sitemap-state-default' ).toggleClass('feature-state-off');
40
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
41
+ },
42
+ });
43
+ });
44
+ //Social
45
+ jQuery('#toggle-social').on('click', function() {
46
+ jQuery('#toggle-social').attr('data-toggle', jQuery('#toggle-social').attr('data-toggle') == '1' ? '0' : '1');
47
+ jQuery.ajax({
48
+ method : 'POST',
49
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
50
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
51
+ data : {
52
+ action: 'seopress_toggle_features',
53
+ feature: 'toggle-social',
54
+ feature_value: jQuery('#toggle-social').attr('data-toggle'),
55
+ },
56
+ success : function( data ) {
57
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
58
+ jQuery( '#seopress-notice-save .html' ).html('Social has been successfully updated!');
59
+ jQuery( '#social-state' ).toggleClass('feature-state-on');
60
+ jQuery( '#social-state-default' ).toggleClass('feature-state-off');
61
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
62
+ },
63
+ });
64
+ });
65
+ //Google Analytics
66
+ jQuery('#toggle-google-analytics').on('click', function() {
67
+ jQuery('#toggle-google-analytics').attr('data-toggle', jQuery('#toggle-google-analytics').attr('data-toggle') == '1' ? '0' : '1');
68
+ jQuery.ajax({
69
+ method : 'POST',
70
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
71
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
72
+ data : {
73
+ action: 'seopress_toggle_features',
74
+ feature: 'toggle-google-analytics',
75
+ feature_value: jQuery('#toggle-google-analytics').attr('data-toggle'),
76
+ },
77
+ success : function( data ) {
78
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
79
+ jQuery( '#seopress-notice-save .html' ).html('Google Analytics has been successfully updated!');
80
+ jQuery( '#analytics-state' ).toggleClass('feature-state-on');
81
+ jQuery( '#analytics-state-default' ).toggleClass('feature-state-off');
82
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
83
+ },
84
+ });
85
+ });
86
+ //Advanced
87
+ jQuery('#toggle-advanced').on('click', function() {
88
+ jQuery('#toggle-advanced').attr('data-toggle', jQuery('#toggle-advanced').attr('data-toggle') == '1' ? '0' : '1');
89
+ jQuery.ajax({
90
+ method : 'POST',
91
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
92
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
93
+ data : {
94
+ action: 'seopress_toggle_features',
95
+ feature: 'toggle-advanced',
96
+ feature_value: jQuery('#toggle-advanced').attr('data-toggle'),
97
+ },
98
+ success : function( data ) {
99
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
100
+ jQuery( '#seopress-notice-save .html' ).html('Advanced features has been successfully updated!');
101
+ jQuery( '#advanced-state' ).toggleClass('feature-state-on');
102
+ jQuery( '#advanced-state-default' ).toggleClass('feature-state-off');
103
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
104
+ },
105
+ });
106
+ });
107
+ //WooCommerce
108
+ jQuery('#toggle-woocommerce').on('click', function() {
109
+ jQuery('#toggle-woocommerce').attr('data-toggle', jQuery('#toggle-woocommerce').attr('data-toggle') == '1' ? '0' : '1');
110
+ jQuery.ajax({
111
+ method : 'POST',
112
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
113
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
114
+ data : {
115
+ action: 'seopress_toggle_features',
116
+ feature: 'toggle-woocommerce',
117
+ feature_value: jQuery('#toggle-woocommerce').attr('data-toggle'),
118
+ },
119
+ success : function( data ) {
120
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
121
+ jQuery( '#seopress-notice-save .html' ).html('WooCommerce has been successfully updated!');
122
+ jQuery( '#woocommerce-state' ).toggleClass('feature-state-on');
123
+ jQuery( '#woocommerce-state-default' ).toggleClass('feature-state-off');
124
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
125
+ },
126
+ });
127
+ });
128
+ //Breadcrumbs
129
+ jQuery('#toggle-breadcrumbs').on('click', function() {
130
+ jQuery('#toggle-breadcrumbs').attr('data-toggle', jQuery('#toggle-breadcrumbs').attr('data-toggle') == '1' ? '0' : '1');
131
+ jQuery.ajax({
132
+ method : 'POST',
133
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
134
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
135
+ data : {
136
+ action: 'seopress_toggle_features',
137
+ feature: 'toggle-breadcrumbs',
138
+ feature_value: jQuery('#toggle-breadcrumbs').attr('data-toggle'),
139
+ },
140
+ success : function( data ) {
141
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
142
+ jQuery( '#seopress-notice-save .html' ).html('Breadcrumbs has been successfully updated!');
143
+ jQuery( '#breadcrumbs-state' ).toggleClass('feature-state-on');
144
+ jQuery( '#breadcrumbs-state-default' ).toggleClass('feature-state-off');
145
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
146
+ },
147
+ });
148
+ });
149
+ //Robots
150
+ jQuery('#toggle-robots').on('click', function() {
151
+ jQuery('#toggle-robots').attr('data-toggle', jQuery('#toggle-robots').attr('data-toggle') == '1' ? '0' : '1');
152
+ jQuery.ajax({
153
+ method : 'POST',
154
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
155
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
156
+ data : {
157
+ action: 'seopress_toggle_features',
158
+ feature: 'toggle-robots',
159
+ feature_value: jQuery('#toggle-robots').attr('data-toggle'),
160
+ },
161
+ success : function( data ) {
162
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
163
+ jQuery( '#seopress-notice-save .html' ).html('Robots has been successfully updated!');
164
+ jQuery( '#robots-state' ).toggleClass('feature-state-on');
165
+ jQuery( '#robots-state-default' ).toggleClass('feature-state-off');
166
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
167
+ },
168
+ });
169
+ });
170
+ //Google News
171
+ jQuery('#toggle-news').on('click', function() {
172
+ jQuery('#toggle-news').attr('data-toggle', jQuery('#toggle-news').attr('data-toggle') == '1' ? '0' : '1');
173
+ jQuery.ajax({
174
+ method : 'POST',
175
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
176
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
177
+ data : {
178
+ action: 'seopress_toggle_features',
179
+ feature: 'toggle-news',
180
+ feature_value: jQuery('#toggle-news').attr('data-toggle'),
181
+ },
182
+ success : function( data ) {
183
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
184
+ jQuery( '#seopress-notice-save .html' ).html('Google News Sitemap has been successfully updated!');
185
+ jQuery( '#news-state' ).toggleClass('feature-state-on');
186
+ jQuery( '#news-state-default' ).toggleClass('feature-state-off');
187
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
188
+ },
189
+ });
190
+ });
191
+ //404
192
+ jQuery('#toggle-404').on('click', function() {
193
+ jQuery('#toggle-404').attr('data-toggle', jQuery('#toggle-404').attr('data-toggle') == '1' ? '0' : '1');
194
+ jQuery.ajax({
195
+ method : 'POST',
196
+ url : seopressAjaxToggleFeatures.seopress_toggle_features,
197
+ _ajax_nonce: seopressAjaxToggleFeatures.seopress_nonce,
198
+ data : {
199
+ action: 'seopress_toggle_features',
200
+ feature: 'toggle-404',
201
+ feature_value: jQuery('#toggle-404').attr('data-toggle'),
202
+ },
203
+ success : function( data ) {
204
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
205
+ jQuery( '#seopress-notice-save .html' ).html('Redirections has been successfully updated!');
206
+ jQuery( '#redirections-state' ).toggleClass('feature-state-on');
207
+ jQuery( '#redirections-state-default' ).toggleClass('feature-state-off');
208
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
209
+ },
210
+ });
211
+ });
212
+ });
assets/js/seopress-tabs.js CHANGED
@@ -20,10 +20,45 @@ jQuery(document).ready(function($) {
20
jQuery('#seopress-tabs').find('.nav-tab.nav-tab-active').removeClass("nav-tab-active");
21
jQuery('#'+hash+'-tab').addClass("nav-tab-active");
22
23
-
24
sessionStorage.setItem("seopress_titles_tab", hash);
25
26
jQuery('#seopress-tabs').find('.seopress-tab.active').removeClass("active");
27
jQuery('#'+hash).addClass("active");
28
});
29
});
20
jQuery('#seopress-tabs').find('.nav-tab.nav-tab-active').removeClass("nav-tab-active");
21
jQuery('#'+hash+'-tab').addClass("nav-tab-active");
22
23
sessionStorage.setItem("seopress_titles_tab", hash);
24
25
jQuery('#seopress-tabs').find('.seopress-tab.active').removeClass("active");
26
jQuery('#'+hash).addClass("active");
27
});
28
+ });
29
+
30
+ jQuery(document).ready(function($) {
31
+ jQuery('#seopress-tag-site-title').click(function() {
32
+ jQuery("#seopress_titles_home_site_title").val(jQuery("#seopress_titles_home_site_title").val() + ' ' + jQuery('#seopress-tag-site-title').attr('data-tag'));
33
+ });
34
+ jQuery('#seopress-tag-site-title-author').click(function() {
35
+ jQuery("#seopress_titles_archive_post_author").val(jQuery("#seopress_titles_archive_post_author").val() + ' ' + jQuery('#seopress-tag-site-title-author').attr('data-tag'));
36
+ });
37
+ jQuery('#seopress-tag-site-title-date').click(function() {
38
+ jQuery("#seopress_titles_archives_date_title").val(jQuery("#seopress_titles_archives_date_title").val() + ' ' + jQuery('#seopress-tag-site-title-date').attr('data-tag'));
39
+ });
40
+ jQuery('#seopress-tag-site-title-search').click(function() {
41
+ jQuery("#seopress_titles_archives_search_title").val(jQuery("#seopress_titles_archives_search_title").val() + ' ' + jQuery('#seopress-tag-site-title-search').attr('data-tag'));
42
+ });
43
+ jQuery('#seopress-tag-site-title-404').click(function() {
44
+ jQuery("#seopress_titles_archives_404_title").val(jQuery("#seopress_titles_archives_404_title").val() + ' ' + jQuery('#seopress-tag-site-title-404').attr('data-tag'));
45
+ });
46
+ jQuery('#seopress-tag-site-desc').click(function() {
47
+ jQuery("#seopress_titles_home_site_title").val(jQuery("#seopress_titles_home_site_title").val() + ' ' + jQuery('#seopress-tag-site-desc').attr('data-tag'));
48
+ });
49
+ jQuery('#seopress-tag-meta-desc').click(function() {
50
+ jQuery("#seopress_titles_home_site_desc").val(jQuery("#seopress_titles_home_site_desc").val() + ' ' + jQuery('#seopress-tag-meta-desc').attr('data-tag'));
51
+ });
52
+ jQuery('#seopress-tag-post-author').click(function() {
53
+ jQuery("#seopress_titles_archive_post_author").val(jQuery("#seopress_titles_archive_post_author").val() + ' ' + jQuery('#seopress-tag-post-author').attr('data-tag'));
54
+ });
55
+ jQuery('#seopress-tag-archive-date').click(function() {
56
+ jQuery("#seopress_titles_archives_date_title").val(jQuery("#seopress_titles_archives_date_title").val() + ' ' + jQuery('#seopress-tag-archive-date').attr('data-tag'));
57
+ });
58
+ jQuery('#seopress-tag-search-keywords').click(function() {
59
+ jQuery("#seopress_titles_archives_search_title").val(jQuery("#seopress_titles_archives_search_title").val() + ' ' + jQuery('#seopress-tag-search-keywords').attr('data-tag'));
60
+ });
61
+ jQuery('.more-tags').click(function() {
62
+ jQuery('#contextual-help-link').click();
63
+ });
64
});
assets/js/seopress-tabs6.js ADDED
@@ -0,0 +1,28 @@
1
+ jQuery(document).ready(function($) {
2
+ if(typeof sessionStorage!='undefined') {
3
+ var seopress_tab_session_storage = sessionStorage.getItem("tab_seopress_google_analytics_enable");
4
+ if (seopress_tab_session_storage) {
5
+ jQuery('#seopress-tabs').find('.nav-tab.nav-tab-active').removeClass("nav-tab-active");
6
+ jQuery('#seopress-tabs').find('.seopress-tab.active').removeClass("active");
7
+
8
+ jQuery('#'+seopress_tab_session_storage+'-tab').addClass("nav-tab-active");
9
+ jQuery('#'+seopress_tab_session_storage).addClass("active");
10
+ } else {
11
+ //Default TAB
12
+ jQuery('#tab_seopress_google_analytics_enable-tab').addClass("nav-tab-active");
13
+ jQuery('#tab_seopress_google_analytics_enable').addClass("active");
14
+ }
15
+ };
16
+ jQuery("#seopress-tabs").find("a.nav-tab").click(function(e){
17
+ e.preventDefault();
18
+ var hash = jQuery(this).attr('href').split('#tab=')[1];
19
+
20
+ jQuery('#seopress-tabs').find('.nav-tab.nav-tab-active').removeClass("nav-tab-active");
21
+ jQuery('#'+hash+'-tab').addClass("nav-tab-active");
22
+
23
+ sessionStorage.setItem("tab_seopress_google_analytics_enable", hash);
24
+
25
+ jQuery('#seopress-tabs').find('.seopress-tab.active').removeClass("active");
26
+ jQuery('#'+hash).addClass("active");
27
+ });
28
+ });
assets/js/seopress-yoast-migrate.js ADDED
@@ -0,0 +1,25 @@
1
+ jQuery(document).ready(function(){
2
+ jQuery('#seopress-yoast-migrate').on('click', function() {
3
+ jQuery.ajax({
4
+ method : 'POST',
5
+ url : seopressAjaxYoastMigrate.seopress_yoast_migration,
6
+ _ajax_nonce: seopressAjaxYoastMigrate.seopress_nonce,
7
+ data : {
8
+ action: 'seopress_yoast_migration',
9
+ },
10
+ success : function( data ) {
11
+ jQuery('#seopress-yoast-migrate').removeAttr("disabled");
12
+ jQuery( '.spinner' ).css( "visibility", "hidden" );
13
+ jQuery( '#yoast-migration-tool .log' ).html('Migration completed!');
14
+ },
15
+ });
16
+ });
17
+ });
18
+ jQuery(document).ready(function(){
19
+ jQuery('#seopress-yoast-migrate').on('click', function() {
20
+ jQuery(this).attr("disabled", "disabled");
21
+ jQuery( '.spinner' ).css( "visibility", "visible" );
22
+ jQuery( '.spinner' ).css( "float", "none" );
23
+ jQuery( '#yoast-migration-tool .log' ).html('');
24
+ });
25
+ });
contributors.txt CHANGED
@@ -2,3 +2,7 @@ Great people who contributed to this plugin :
2
3
Developers:
4
- Benjamin Denis: contact@seopress.org / @wpcloudy
2
3
Developers:
4
- Benjamin Denis: contact@seopress.org / @wpcloudy
5
+
6
+ Beta testers:
7
+ - Mickael Gris: mickael.gris@gmail.com / @mickaelgris
8
+ - Aurélien Denis: contact@wp-alacarte.com / @wpchannel
inc/admin/admin-header.php ADDED
@@ -0,0 +1,63 @@
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) or die( 'Please don&rsquo;t call the plugin directly. Thanks :)' );
4
+
5
+ function seopress_admin_header() { ?>
6
+ <div id="seopress-header">
7
+ <div id="seopress-admin">
8
+ <div id="seopress-navbar">
9
+ <h1>
10
+ <span class="screen-reader-text"><?php _e( 'SEOPress', 'wp-seopress' ); ?></span>
11
+ <?php if ( is_plugin_active( 'seopress-pro/seopress-pro.php' ) ) { ?>
12
+ <span class="seopress-info-version">
13
+ <strong>
14
+ <?php _e('PRO', 'wp-seopress'); ?>
15
+ <?php echo SEOPRESSPRO_VERSION; ?>
16
+ </strong>
17
+ </span>
18
+ <?php } else { ?>
19
+ <span class="seopress-info-version"><?php echo SEOPRESS_VERSION; ?></span>
20
+ <?php } ?>
21
+ </h1>
22
+ <div id="seopress-notice">
23
+ <div class="small">
24
+ <span class="dashicons dashicons-wordpress"></span>
25
+ <?php _e( 'You like SEOPress? Don\'t forget to rate it 5 stars!', 'wp-seopress' ); ?>
26
+
27
+ <div class="wporg-ratings rating-stars">
28
+ <a href="//wordpress.org/support/view/plugin-reviews/wp-seopress?rate=1#postform" data-rating="1" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
29
+ <a href="//wordpress.org/support/view/plugin-reviews/wp-seopress?rate=2#postform" data-rating="2" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
30
+ <a href="//wordpress.org/support/view/plugin-reviews/wp-seopress?rate=3#postform" data-rating="3" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
31
+ <a href="//wordpress.org/support/view/plugin-reviews/wp-seopress?rate=4#postform" data-rating="4" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
32
+ <a href="//wordpress.org/support/view/plugin-reviews/wp-seopress?rate=5#postform" data-rating="5" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
33
+ </div>
34
+ <script>
35
+ jQuery(document).ready( function($) {
36
+ $('.rating-stars').find('a').hover(
37
+ function() {
38
+ $(this).nextAll('a').children('span').removeClass('dashicons-star-filled').addClass('dashicons-star-empty');
39
+ $(this).prevAll('a').children('span').removeClass('dashicons-star-empty').addClass('dashicons-star-filled');
40
+ $(this).children('span').removeClass('dashicons-star-empty').addClass('dashicons-star-filled');
41
+ }, function() {
42
+ var rating = $('input#rating').val();
43
+ if (rating) {
44
+ var list = $('.rating-stars a');
45
+ list.children('span').removeClass('dashicons-star-filled').addClass('dashicons-star-empty');
46
+ list.slice(0, rating).children('span').removeClass('dashicons-star-empty').addClass('dashicons-star-filled');
47
+ }
48
+ }
49
+ );
50
+ });
51
+ </script>
52
+ </div>
53
+ <div class="small">
54
+ <a href="http://twitter.com/wpcloudy" target="_blank"><div class="dashicons dashicons-twitter"></div></a>
55
+ <a href="https://www.seopress.org/" target="_blank"><div class="dashicons dashicons-info"></div></a>
56
+ &nbsp;
57
+ <a href="https://www.seopress.org/support" target="_blank"><?php _e( 'Support', 'wp-seopress' ); ?></a>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ <?php } ?>
inc/admin/admin-metaboxes.php CHANGED
@@ -8,11 +8,13 @@ defined( 'ABSPATH' ) or die( 'Please don&rsquo;t call the plugin directly. Thank
8
add_action('add_meta_boxes','seopress_init_metabox');
9
function seopress_init_metabox(){
10
foreach (seopress_get_post_types() as $key => $value) {
11
- add_meta_box('seopress_cpt', __('SEOPress','wp-seopress'), 'seopress_cpt', $key, 'advanced');
12
}
13
}
14
15
function seopress_cpt($post){
16
$seopress_titles_title = get_post_meta($post->ID,'_seopress_titles_title',true);
17
$seopress_titles_desc = get_post_meta($post->ID,'_seopress_titles_desc',true);
18
$seopress_robots_index = get_post_meta($post->ID,'_seopress_robots_index',true);
@@ -31,7 +33,10 @@ function seopress_cpt($post){
31
$seopress_redirections_enabled = get_post_meta($post->ID,'_seopress_redirections_enabled',true);
32
$seopress_redirections_type = get_post_meta($post->ID,'_seopress_redirections_type',true);
33
$seopress_redirections_value = get_post_meta($post->ID,'_seopress_redirections_value',true);
34
-
35
function seopress_titles_title($seopress_titles_title) {
36
if ($seopress_titles_title !='') {
37
return $seopress_titles_title;
@@ -75,15 +80,23 @@ function seopress_cpt($post){
75
}
76
}
77
78
- echo '<div id="seopress-tabs">
79
- <ul>
80
- <li><a href="#tabs-1"><span class="dashicons dashicons-editor-table"></span>'. __( 'Titles settings', 'wp-seopress' ) .'</a></li>
81
- <li><a href="#tabs-2"><span class="dashicons dashicons-admin-generic"></span>'. __( 'Advanced', 'wp-seopress' ) .'</a></li>
82
- <li><a href="#tabs-3"><span class="dashicons dashicons-share"></span>'. __( 'Social', 'wp-seopress' ) .'</a></li>
83
- <li><a href="#tabs-4"><span class="dashicons dashicons-admin-links"></span>'. __( 'Redirections', 'wp-seopress' ) .'</a></li>
84
- </ul>
85
86
- <div id="tabs-1">
87
<div class="box-left">
88
<p>
89
<label for="seopress_titles_title_meta">'. __( 'Title', 'wp-seopress' ) .'</label>
@@ -122,37 +135,37 @@ function seopress_cpt($post){
122
<label for="seopress_robots_index_meta">
123
<input type="checkbox" name="seopress_robots_index" id="seopress_robots_index_meta" value="yes" '. checked( $seopress_robots_index, 'yes', false ) .' />
124
'. __( 'noindex', 'wp-seopress' ) .'
125
- </label>
126
</p>
127
<p>
128
<label for="seopress_robots_follow_meta">
129
<input type="checkbox" name="seopress_robots_follow" id="seopress_robots_follow_meta" value="yes" '. checked( $seopress_robots_follow, 'yes', false ) .' />
130
'. __( 'nofollow', 'wp-seopress' ) .'
131
- </label>
132
</p>
133
<p>
134
<label for="seopress_robots_odp_meta">
135
<input type="checkbox" name="seopress_robots_odp" id="seopress_robots_odp_meta" value="yes" '. checked( $seopress_robots_odp, 'yes', false ) .' />
136
'. __( 'noodp', 'wp-seopress' ) .'
137
- </label>
138
</p>
139
<p>
140
<label for="seopress_robots_imageindex_meta">
141
<input type="checkbox" name="seopress_robots_imageindex" id="seopress_robots_imageindex_meta" value="yes" '. checked( $seopress_robots_imageindex, 'yes', false ) .' />
142
'. __( 'noimageindex', 'wp-seopress' ) .'
143
- </label>
144
</p>
145
<p>
146
<label for="seopress_robots_archive_meta">
147
<input type="checkbox" name="seopress_robots_archive" id="seopress_robots_archive_meta" value="yes" '. checked( $seopress_robots_archive, 'yes', false ) .' />
148
'. __( 'noarchive', 'wp-seopress' ) .'
149
- </label>
150
</p>
151
<p>
152
<label for="seopress_robots_snippet_meta">
153
<input type="checkbox" name="seopress_robots_snippet" id="seopress_robots_snippet_meta" value="yes" '. checked( $seopress_robots_snippet, 'yes', false ) .' />
154
'. __( 'nosnippet', 'wp-seopress' ) .'
155
- </label>
156
</p>
157
<p>
158
<label for="seopress_robots_canonical_meta">'. __( 'Canonical URL', 'wp-seopress' ) .'</label>
@@ -171,6 +184,7 @@ function seopress_cpt($post){
171
</p>
172
<p>
173
<label for="seopress_social_fb_img_meta">'. __( 'Facebook Thumbnail', 'wp-seopress' ) .'</label>
174
<input id="seopress_social_fb_img_meta" type="text" name="seopress_social_fb_img" placeholder="'.__('Select your default thumbnail','wp-seopress').'" value="'.$seopress_social_fb_img.'" />
175
<input id="seopress_social_fb_img_upload" class="button" type="button" value="'.__('Upload an Image','wp-seopress').'" />
176
</p>
@@ -186,11 +200,14 @@ function seopress_cpt($post){
186
</p>
187
<p>
188
<label for="seopress_social_twitter_img_meta">'. __( 'Twitter Thumbnail', 'wp-seopress' ) .'</label>
189
<input id="seopress_social_twitter_img_meta" type="text" name="seopress_social_twitter_img" placeholder="'.__('Select your default thumbnail','wp-seopress').'" value="'.$seopress_social_twitter_img.'" />
190
<input id="seopress_social_twitter_img_upload" class="button" type="button" value="'.__('Upload an Image','wp-seopress').'" />
191
</p>
192
- </div>
193
- <div id="tabs-4">
194
<p>
195
<label for="seopress_redirections_enabled_meta" id="seopress_redirections_enabled">
196
<input type="checkbox" name="seopress_redirections_enabled" id="seopress_redirections_enabled_meta" value="yes" '. checked( $seopress_redirections_enabled, 'yes', false ) .' />
@@ -211,8 +228,37 @@ function seopress_cpt($post){
211
}
212
echo '<a href="" id="seopress_redirections_value_live" class="button" target="_blank" style="display: none">'.__('Test your URL','wp-seopress').'</a>
213
</p>
214
- </div>
215
- </div>
216
';
217
}
218
@@ -287,6 +333,17 @@ function seopress_save_metabox($post_id){
287
} else {
288
delete_post_meta( $post_id, '_seopress_redirections_enabled', '' );
289
}
290
}
291
}
292
?>
8
add_action('add_meta_boxes','seopress_init_metabox');
9
function seopress_init_metabox(){
10
foreach (seopress_get_post_types() as $key => $value) {
11
+ add_meta_box('seopress_cpt', __('SEO','wp-seopress'), 'seopress_cpt', $key, 'advanced');
12
}
13
+ add_meta_box('seopress_cpt', __('SEO','wp-seopress'), 'seopress_cpt', 'seopress_404', 'advanced');
14
}
15
16
function seopress_cpt($post){
17
+ global $typenow;
18
$seopress_titles_title = get_post_meta($post->ID,'_seopress_titles_title',true);
19
$seopress_titles_desc = get_post_meta($post->ID,'_seopress_titles_desc',true);
20
$seopress_robots_index = get_post_meta($post->ID,'_seopress_robots_index',true);
33
$seopress_redirections_enabled = get_post_meta($post->ID,'_seopress_redirections_enabled',true);
34
$seopress_redirections_type = get_post_meta($post->ID,'_seopress_redirections_type',true);
35
$seopress_redirections_value = get_post_meta($post->ID,'_seopress_redirections_value',true);
36
+ $seopress_news_disabled = get_post_meta($post->ID,'_seopress_news_disabled',true);
37
+ $seopress_news_genres = get_post_meta($post->ID,'_seopress_news_genres',true);
38
+ $seopress_news_keyboard = get_post_meta($post->ID,'_seopress_news_keyboard',true);
39
+
40
function seopress_titles_title($seopress_titles_title) {
41
if ($seopress_titles_title !='') {
42
return $seopress_titles_title;
80
}
81
}
82
83
+ echo '<div id="seopress-tabs">';
84
+ echo'<ul>';
85
+ if ("seopress_404" != $typenow) {
86
+ echo '<li><a href="#tabs-1"><span class="dashicons dashicons-editor-table"></span>'. __( 'Titles settings', 'wp-seopress' ) .'</a></li>
87
+ <li><a href="#tabs-2"><span class="dashicons dashicons-admin-generic"></span>'. __( 'Advanced', 'wp-seopress' ) .'</a></li>
88
+ <li><a href="#tabs-3"><span class="dashicons dashicons-share"></span>'. __( 'Social', 'wp-seopress' ) .'</a></li>';
89
+ }
90
+ echo '<li><a href="#tabs-4"><span class="dashicons dashicons-admin-links"></span>'. __( 'Redirections', 'wp-seopress' ) .'</a></li>';
91
+ if (is_plugin_active( 'wp-seopress-pro/seopress-pro.php' )) {
92
+ if ("seopress_404" != $typenow) {
93
+ echo '<li><a href="#tabs-5"><span class="dashicons dashicons-admin-post"></span>'. __( 'Google News', 'wp-seopress-pro' ) .'</a></li>';
94
+ }
95
+ }
96
+ echo '</ul>';
97
98
+ if ("seopress_404" != $typenow) {
99
+ echo '<div id="tabs-1">
100
<div class="box-left">
101
<p>
102
<label for="seopress_titles_title_meta">'. __( 'Title', 'wp-seopress' ) .'</label>
135
<label for="seopress_robots_index_meta">
136
<input type="checkbox" name="seopress_robots_index" id="seopress_robots_index_meta" value="yes" '. checked( $seopress_robots_index, 'yes', false ) .' />
137
'. __( 'noindex', 'wp-seopress' ) .'
138
+ </label><span class="dashicons dashicons-info" title="'.__('Do not display all pages of the site in Google search results and do not display "Cached" links in search results.','wp-seopress').'"></span>
139
</p>
140
<p>
141
<label for="seopress_robots_follow_meta">
142
<input type="checkbox" name="seopress_robots_follow" id="seopress_robots_follow_meta" value="yes" '. checked( $seopress_robots_follow, 'yes', false ) .' />
143
'. __( 'nofollow', 'wp-seopress' ) .'
144
+ </label><span class="dashicons dashicons-info" title="'.__('Do not follow links for all pages.','wp-seopress').'"></span>
145
</p>
146
<p>
147
<label for="seopress_robots_odp_meta">
148
<input type="checkbox" name="seopress_robots_odp" id="seopress_robots_odp_meta" value="yes" '. checked( $seopress_robots_odp, 'yes', false ) .' />
149
'. __( 'noodp', 'wp-seopress' ) .'
150
+ </label><span class="dashicons dashicons-info" title="'.__('Do not use Open Directory project metadata for titles or excerpts for all pages.','wp-seopress').'"></span>
151
</p>
152
<p>
153
<label for="seopress_robots_imageindex_meta">
154
<input type="checkbox" name="seopress_robots_imageindex" id="seopress_robots_imageindex_meta" value="yes" '. checked( $seopress_robots_imageindex, 'yes', false ) .' />
155
'. __( 'noimageindex', 'wp-seopress' ) .'
156
+ </label><span class="dashicons dashicons-info" title="'.__('Do not index images from the entire site.','wp-seopress').'"></span>
157
</p>
158
<p>
159
<label for="seopress_robots_archive_meta">
160
<input type="checkbox" name="seopress_robots_archive" id="seopress_robots_archive_meta" value="yes" '. checked( $seopress_robots_archive, 'yes', false ) .' />
161
'. __( 'noarchive', 'wp-seopress' ) .'
162
+ </label><span class="dashicons dashicons-info" title="'.__('Do not display a "Cached" link in the Google search results.','wp-seopress').'"></span>
163
</p>
164
<p>
165
<label for="seopress_robots_snippet_meta">
166
<input type="checkbox" name="seopress_robots_snippet" id="seopress_robots_snippet_meta" value="yes" '. checked( $seopress_robots_snippet, 'yes', false ) .' />
167
'. __( 'nosnippet', 'wp-seopress' ) .'
168
+ </label><span class="dashicons dashicons-info" title="'.__('Do not display a description in the Google search results for all pages.','wp-seopress').'"></span>
169
</p>
170
<p>
171
<label for="seopress_robots_canonical_meta">'. __( 'Canonical URL', 'wp-seopress' ) .'</label>
184
</p>
185
<p>
186
<label for="seopress_social_fb_img_meta">'. __( 'Facebook Thumbnail', 'wp-seopress' ) .'</label>
187
+ <span class="advise">'. __('Minimum size: 200x200px', 'wp-seopress') .'</span>
188
<input id="seopress_social_fb_img_meta" type="text" name="seopress_social_fb_img" placeholder="'.__('Select your default thumbnail','wp-seopress').'" value="'.$seopress_social_fb_img.'" />
189
<input id="seopress_social_fb_img_upload" class="button" type="button" value="'.__('Upload an Image','wp-seopress').'" />
190
</p>
200
</p>
201
<p>
202
<label for="seopress_social_twitter_img_meta">'. __( 'Twitter Thumbnail', 'wp-seopress' ) .'</label>
203
+ <span class="advise">'. __('Minimum size: 160x160px', 'wp-seopress') .'</span>
204
<input id="seopress_social_twitter_img_meta" type="text" name="seopress_social_twitter_img" placeholder="'.__('Select your default thumbnail','wp-seopress').'" value="'.$seopress_social_twitter_img.'" />
205
<input id="seopress_social_twitter_img_upload" class="button" type="button" value="'.__('Upload an Image','wp-seopress').'" />
206
</p>
207
+ </div>';
208
+ }
209
+
210
+ echo '<div id="tabs-4">
211
<p>
212
<label for="seopress_redirections_enabled_meta" id="seopress_redirections_enabled">
213
<input type="checkbox" name="seopress_redirections_enabled" id="seopress_redirections_enabled_meta" value="yes" '. checked( $seopress_redirections_enabled, 'yes', false ) .' />
228
}
229
echo '<a href="" id="seopress_redirections_value_live" class="button" target="_blank" style="display: none">'.__('Test your URL','wp-seopress').'</a>
230
</p>
231
+ </div>';
232
+ if (is_plugin_active( 'wp-seopress-pro/seopress-pro.php' )) {
233
+ if ("seopress_404" != $typenow) {
234
+ echo '<div id="tabs-5">
235
+ <p>
236
+ <label for="seopress_news_disabled_meta" id="seopress_news_disabled">
237
+ <input type="checkbox" name="seopress_news_disabled" id="seopress_news_disabled_meta" value="yes" '. checked( $seopress_news_disabled, 'yes', false ) .' />
238
+ '. __( 'Exclude this post from Google News Sitemap?', 'wp-seopress' ) .'
239
+ </label>
240
+ </p>
241
+ <p>
242
+ <label for="seopress_news_genres_meta">'. __( 'Google News Genres', 'wp-seopress' ) .'</label>
243
+ <select name="seopress_news_genres">
244
+ <option ' . selected( 'none', $seopress_news_genres, false ) . ' value="none">'. __( 'None', 'wp-seopress' ) .'</option>
245
+ <option ' . selected( 'pressrelease', $seopress_news_genres, false ) . ' value="pressrelease">'. __( 'Press Release', 'wp-seopress' ) .'</option>
246
+ <option ' . selected( 'satire', $seopress_news_genres, false ) . ' value="satire">'. __( 'Satire', 'wp-seopress' ) .'</option>
247
+ <option ' . selected( 'blog', $seopress_news_genres, false ) . ' value="blog">'. __( 'Blog', 'wp-seopress' ) .'</option>
248
+ <option ' . selected( 'oped', $seopress_news_genres, false ) . ' value="oped">'. __( 'OpEd', 'wp-seopress' ) .'</option>
249
+ <option ' . selected( 'opinion', $seopress_news_genres, false ) . ' value="opinion">'. __( 'Opinion', 'wp-seopress' ) .'</option>
250
+ <option ' . selected( 'usergenerated', $seopress_news_genres, false ) . ' value="usergenerated">'. __( 'UserGenerated', 'wp-seopress' ) .'</option>
251
+ </select>
252
+ </p>
253
+ <p>
254
+ <label for="seopress_news_keyboard_meta" id="seopress_news_keyboard">
255
+ '. __( 'Google News Keywords <em>(max recommended limit: 12)</em>', 'wp-seopress' ) .'</label>
256
+ <input id="seopress_news_keyboard_meta" type="text" name="seopress_news_keyboard" placeholder="'.__('Enter your Google News Keywords','wp-seopress').'" value="'.$seopress_news_keyboard.'" />
257
+ </p>
258
+ </div>';
259
+ }
260
+ }
261
+ echo '</div>
262
';
263
}
264
333
} else {
334
delete_post_meta( $post_id, '_seopress_redirections_enabled', '' );
335
}
336
+ if( isset( $_POST[ 'seopress_news_disabled' ] ) ) {
337
+ update_post_meta( $post_id, '_seopress_news_disabled', 'yes' );
338
+ } else {
339
+ delete_post_meta( $post_id, '_seopress_news_disabled', '' );
340
+ }
341
+ if(isset($_POST['seopress_news_genres'])){
342
+ update_post_meta($post_id, '_seopress_news_genres', $_POST['seopress_news_genres']);
343
+ }
344
+ if(isset($_POST['seopress_news_keyboard'])){
345
+ update_post_meta($post_id, '_seopress_news_keyboard', esc_html($_POST['seopress_news_keyboard']));
346
+ }
347
}
348
}
349
?>
inc/admin/admin.php CHANGED
@@ -14,6 +14,7 @@ class seopress_options
14
*/
15
public function __construct() {
16
add_action( 'admin_menu', array( $this, 'add_plugin_page' ), 10 );
17
add_action( 'admin_init', array( $this, 'page_init' ) );
18
}
19
@@ -25,15 +26,151 @@ class seopress_options
25
delete_option($this->seopress_options);
26
}
27
28
/**
29
* Add options page
30
*/
31
public function add_plugin_page()
32
{
33
- add_menu_page('SEOPress Option Page', 'SEOPress', 'manage_options', 'seopress-option', array( $this, 'create_admin_page' ), 'dashicons-admin-generic', 90);
34
$seopress_titles_help_tab = add_submenu_page('seopress-option', __('Titles & Metas','wp-seopress'), __('Titles & Metas','wp-seopress'), 'manage_options', 'seopress-titles', array( $this, 'seopress_titles_page' ));
35
add_submenu_page('seopress-option', __('XML Sitemap','wp-seopress'), __('XML Sitemap','wp-seopress'), 'manage_options', 'seopress-xml-sitemap', array( $this, 'seopress_xml_sitemap_page' ));
36
add_submenu_page('seopress-option', __('Social','wp-seopress'), __('Social','wp-seopress'), 'manage_options', 'seopress-social', array( $this, 'seopress_social_page' ));
37
add_submenu_page('seopress-option', __('Advanced','wp-seopress'), __('Advanced','wp-seopress'), 'manage_options', 'seopress-advanced', array( $this, 'seopress_advanced_page' ));
38
add_submenu_page('seopress-option', __('Import / Export / Reset settings','wp-seopress'), __('Import / Export / Reset','wp-seopress'), 'manage_options', 'seopress-import-export', array( $this,'seopress_import_export_page'));
39
@@ -56,6 +193,8 @@ class seopress_options
56
<li><span>'.__('%%term_description%%','wp-seopress').'</span>'.__('Term description','wp-seopress').'</li>
57
<li><span>'.__('%%search_keywords%%','wp-seopress').'</span>'.__('Search keywords','wp-seopress').'</li>
58
<li><span>'.__('%%current_pagination%%','wp-seopress').'</span>'.__('Current number page','wp-seopress').'</li>
59
</ul>
60
';
61
@@ -71,6 +210,9 @@ class seopress_options
71
72
function seopress_titles_page(){
73
$this->options = get_option( 'seopress_titles_option_name' );
74
?>
75
<form method="post" action="options.php" class="seopress-option">
76
<?php
@@ -83,7 +225,7 @@ class seopress_options
83
global $wp_version, $title;
84
$current_tab = '';
85
$tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
86
- echo '<'.$tag.'>'.$title.'</'.$tag.'>';
87
settings_fields( 'seopress_titles_option_group' );
88
?>
89
@@ -93,8 +235,8 @@ class seopress_options
93
$plugin_settings_tabs = array(
94
'tab_seopress_titles_home' => __( "Home", "wp-seopress" ),
95
'tab_seopress_titles_single' => __( "Single Post Types", "wp-seopress" ),
96
- 'tab_seopress_titles_tax' => __( "Taxonomies", "wp-seopress" ),
97
'tab_seopress_titles_archives' => __( "Archives", "wp-seopress" ),
98
'tab_seopress_titles_advanced' => __( "Advanced", "wp-seopress" ),
99
);
100
@@ -106,8 +248,8 @@ class seopress_options
106
?>
107
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_titles_home') { echo 'active'; } ?>" id="tab_seopress_titles_home"><?php do_settings_sections( 'seopress-settings-admin-titles-home' ); ?></div>
108
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_titles_single') { echo 'active'; } ?>" id="tab_seopress_titles_single"><?php do_settings_sections( 'seopress-settings-admin-titles-single' ); ?></div>
109
- <div class="seopress-tab <?php if ($current_tab == 'tab_seopress_titles_tax') { echo 'active'; } ?>" id="tab_seopress_titles_tax"><?php do_settings_sections( 'seopress-settings-admin-titles-tax' ); ?></div>
110
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_titles_archives') { echo 'active'; } ?>" id="tab_seopress_titles_archives"><?php do_settings_sections( 'seopress-settings-admin-titles-archives' ); ?></div>
111
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_titles_advanced') { echo 'active'; } ?>" id="tab_seopress_titles_advanced"><?php do_settings_sections( 'seopress-settings-admin-titles-advanced' ); ?></div>
112
</div>
113
@@ -118,13 +260,16 @@ class seopress_options
118
119
function seopress_xml_sitemap_page(){
120
$this->options = get_option( 'seopress_xml_sitemap_option_name' );
121
?>
122
- <form method="post" action="options.php" class="seopress-option">
123
<?php
124
global $wp_version, $title;
125
$current_tab = '';
126
$tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
127
- echo '<'.$tag.'>'.$title.'</'.$tag.'>';
128
settings_fields( 'seopress_xml_sitemap_option_group' );
129
?>
130
@@ -147,7 +292,6 @@ class seopress_options
147
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_xml_sitemap_post_types') { echo 'active'; } ?>" id="tab_seopress_xml_sitemap_post_types"><?php do_settings_sections( 'seopress-settings-admin-xml-sitemap-post-types' ); ?></div>
148
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_xml_sitemap_taxonomies') { echo 'active'; } ?>" id="tab_seopress_xml_sitemap_taxonomies"><?php do_settings_sections( 'seopress-settings-admin-xml-sitemap-taxonomies' ); ?></div>
149
</div>
150
-
151
<?php submit_button(); ?>
152
</form>
153
<?php
@@ -155,13 +299,16 @@ class seopress_options
155
156
function seopress_social_page(){
157
$this->options = get_option( 'seopress_social_option_name' );
158
?>
159
<form method="post" action="options.php" class="seopress-option">
160
<?php
161
global $wp_version, $title;
162
$current_tab = '';
163
$tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
164
- echo '<'.$tag.'>'.$title.'</'.$tag.'>';
165
settings_fields( 'seopress_social_option_group' );
166
?>
167
@@ -192,8 +339,51 @@ class seopress_options
192
<?php
193
}
194
195
function seopress_advanced_page(){
196
$this->options = get_option( 'seopress_advanced_option_name' );
197
?>
198
<form method="post" action="options.php" class="seopress-option">
199
<?php
@@ -201,7 +391,7 @@ class seopress_options
201
global $wp_version, $title;
202
$current_tab = '';
203
$tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
204
- echo '<'.$tag.'>'.$title.'</'.$tag.'>';
205
settings_fields( 'seopress_advanced_option_group' );
206
?>
207
@@ -210,6 +400,7 @@ class seopress_options
210
211
$plugin_settings_tabs = array(
212
'tab_seopress_advanced_advanced' => __( "Advanced", "wp-seopress" ),
213
);
214
215
echo '<h2 class="nav-tab-wrapper">';
@@ -219,6 +410,7 @@ class seopress_options
219
echo '</h2>';
220
?>
221
<div class="seopress-tab <?php if ($current_tab == 'tab_seopress_advanced_advanced') { echo 'active'; } ?>" id="tab_seopress_advanced_advanced"><?php do_settings_sections( 'seopress-settings-admin-advanced-advanced' ); ?></div>
222
</div>
223
224
<?php submit_button(); ?>
@@ -228,59 +420,81 @@ class seopress_options
228
229
function seopress_import_export_page(){
230
$this->options = get_option( 'seopress_import_export_option_name' );
231
?>
232
- <?php global $wp_version, $title;
233
- $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
234
- echo '<'.$tag.'>'.$title.'</'.$tag.'>';
235
- ?>
236
- <h3><span><?php _e( 'Import / Export Settings', 'wp-seopress' ); ?></span></h3>
237
- <?php print __('Import / Export SEOPress settings from site to site', 'wp-seopress'); ?>
238
- <div class="metabox-holder">
239
- <div class="postbox">
240
- <h3><span><?php _e( 'Export Settings', 'wp-seopress' ); ?></span></h3>
241
- <div class="inside">
242
- <p><?php _e( 'Export the plugin settings for this site as a .json file. This allows you to easily import the configuration into another site.', 'wp-seopress' ); ?></p>
243
- <form method="post">
244
- <p><input type="hidden" name="seopress_action" value="export_settings" /></p>
245
- <p>
246
- <?php wp_nonce_field( 'seopress_export_nonce', 'seopress_export_nonce' ); ?>
247
- <?php submit_button( __( 'Export', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
248
- </p>
249
- </form>
250
- </div><!-- .inside -->
251
- </div><!-- .postbox -->
252
-
253
- <div class="postbox">
254
- <h3><span><?php _e( 'Import Settings', 'wp-seopress' ); ?></span></h3>
255
- <div class="inside">
256
- <p><?php _e( 'Import the plugin settings from a .json file. This file can be obtained by exporting the settings on another site using the form above.', 'wp-seopress' ); ?></p>
257
- <form method="post" enctype="multipart/form-data">
258
- <p>
259
- <input type="file" name="import_file"/>
260
- </p>
261
- <p>
262
- <input type="hidden" name="seopress_action" value="import_settings" />
263
- <?php wp_nonce_field( 'seopress_import_nonce', 'seopress_import_nonce' ); ?>
264
- <?php submit_button( __( 'Import', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
265
- </p>
266
- </form>
267
- </div><!-- .inside -->
268
- </div><!-- .postbox -->
269
-
270
- <div class="postbox">
271
- <h3><span><?php _e( 'Reset All Settings', 'wp-seopress' ); ?></span></h3>
272
- <div class="inside">
273
- <p style="color:red"><?php _e( '<strong>WARNING:</strong> Delete all options related to SEOPress in your database.', 'wp-seopress' ); ?></p>
274
- <form method="post" enctype="multipart/form-data">
275
- <p>
276
- <input type="hidden" name="seopress_action" value="reset_settings" />
277
- <?php wp_nonce_field( 'seopress_reset_nonce', 'seopress_reset_nonce' ); ?>
278
- <?php submit_button( __( 'Reset settings', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
279
- </p>
280
- </form>
281
- </div><!-- .inside -->
282
- </div><!-- .postbox -->
283
- </div><!-- .metabox-holder -->
284
<?php
285
}
286
@@ -292,103 +506,101 @@ class seopress_options
292
293
// Set class property
294
$this->options = get_option( 'seopress_option_name' );
295
?>
296
- <div id="seopress-header">
297
- <div id="seopress-admin">
298
- <div id="seopress-navbar">
299
- <h1>
300
- <span class="screen-reader-text"><?php _e( 'SEOPress', 'wp-seopress' ); ?></span>
301
- <?php if ( is_plugin_active( 'seopress-pro/seopress-pro.php' ) ) { ?>
302
- <span class="seopress-info-version">
303
- <strong>
304
- <?php _e('PRO', 'wp-seopress'); ?>
305
- <?php echo SEOPRESSPRO_VERSION; ?>
306
- </strong>
307
- </span>
308
- <?php } else { ?>
309
- <span class="seopress-info-version"><?php echo SEOPRESS_VERSION; ?></span>
310
- <?php } ?>
311
- </h1>
312
- <div id="seopress-notice">
313
- <div class="small">
314
- <span class="dashicons dashicons-wordpress"></span>
315
- <?php _e( 'You like SEOPress? Don\'t forget to rate it 5 stars!', 'wp-seopress' ); ?>
316
-
317
- <div class="wporg-ratings rating-stars">
318
- <a href="//wordpress.org/support/view/plugin-reviews/seopress?rate=1#postform" data-rating="1" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
319
- <a href="//wordpress.org/support/view/plugin-reviews/seopress?rate=2#postform" data-rating="2" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
320
- <a href="//wordpress.org/support/view/plugin-reviews/seopress?rate=3#postform" data-rating="3" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
321
- <a href="//wordpress.org/support/view/plugin-reviews/seopress?rate=4#postform" data-rating="4" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
322
- <a href="//wordpress.org/support/view/plugin-reviews/seopress?rate=5#postform" data-rating="5" title="" target="_blank"><span class="dashicons dashicons-star-filled" style="color:#e6b800 !important;"></span></a>
323
- </div>
324
- <script>
325
- jQuery(document).ready( function($) {
326
- $('.rating-stars').find('a').hover(
327
- function() {
328
- $(this).nextAll('a').children('span').removeClass('dashicons-star-filled').addClass('dashicons-star-empty');
329
- $(this).prevAll('a').children('span').removeClass('dashicons-star-empty').addClass('dashicons-star-filled');
330
- $(this).children('span').removeClass('dashicons-star-empty').addClass('dashicons-star-filled');
331
- }, function() {
332
- var rating = $('input#rating').val();
333
- if (rating) {
334
- var list = $('.rating-stars a');
335
- list.children('span').removeClass('dashicons-star-filled').addClass('dashicons-star-empty');
336
- list.slice(0, rating).children('span').removeClass('dashicons-star-empty').addClass('dashicons-star-filled');
337
- }
338
- }
339
- );
340
- });
341
- </script>
342
- </div>
343
- <div class="small">
344
- <a href="http://twitter.com/wpcloudy" target="_blank"><div class="dashicons dashicons-twitter"></div></a>
345
- <a href="http://www.seopress.org/" target="_blank"><div class="dashicons dashicons-info"></div></a>
346
- &nbsp;
347
- <a href="http://www.seopress.org/support" target="_blank"><?php _e( 'Support', 'wp-seopress' ); ?></a>
348
- </div>
349
</div>
350
- </div>
351
</div>
352
- </div>
353
- <div id="seopress-content">
354
- <?php if (get_option('blog_public') !='1' || seopress_xml_sitemap_general_enable_option() !='1') { ?>
355
- <div id="seopress-notifications-center">
356
- <h2><span class="dashicons dashicons-flag"></span><?php _e('Notifications center','wp-seopress'); ?></h2>
357
- <?php if (get_option('blog_public') !='1') { ?>
358
- <div class="seopress-alert">
359
- <p><span class="dashicons dashicons-warning"></span><?php _e('Your site is not visible to Search Engines!','wp-seopress'); ?></p>
360
- <a class="button-primary" href="<?php echo admin_url( 'options-reading.php' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
361
- </div>
362
- <?php } ?>
363
- <?php if (get_option('blogname') =='') { ?>
364
- <div class="seopress-alert">
365
- <p><span class="dashicons dashicons-warning"></span><?php _e('Your site title is empty!','wp-seopress'); ?></p>
366
- <a class="button-primary" href="<?php echo admin_url( 'options-general.php' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
367
- </div>
368
- <?php } ?>
369
- <?php if (get_option('permalink_structure') =='') { ?>
370
- <div class="seopress-alert">
371
- <p><span class="dashicons dashicons-warning"></span><?php _e('Your permalinks are not SEO Friendly! Enable pretty permalinks to fix this.','wp-seopress'); ?></p>
372
- <a class="button-primary" href="<?php echo admin_url( 'options-permalink.php' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
373
- </div>
374
- <?php } ?>
375
- <?php if (seopress_xml_sitemap_general_enable_option() !='1') { ?>
376
- <div class="seopress-alert">
377
- <p><span class="dashicons dashicons-warning"></span><?php _e('You don\'t have an XML Sitemap!','wp-seopress'); ?></p>
378
- <a class="button-primary" href="<?php echo admin_url( 'admin.php?page=seopress-xml-sitemap' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
379
- </div>
380
- <?php } ?>
381
- </div>
382
- <?php } ?>
383
<div class="seopress-page-list">
384
<div class="seopress-feature">
385
<div class="img-tool">
386
<span class="dashicons dashicons-editor-table"></span>
387
</div>
388
<span class="inner">
389
- <h4><?php _e('Titles & metas','wp-seopress'); ?></h4>
390
<p><?php _e('Manage all your titles & metas','wp-seopress'); ?></p>
391
<a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-titles' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
392
</span>
393
</div>
394
<div class="seopress-feature">
@@ -396,9 +608,28 @@ class seopress_options
396
<span class="dashicons dashicons-media-spreadsheet"></span>
397
</div>
398
<span class="inner">
399
- <h4><?php _e('XML Sitemap','wp-seopress'); ?></h4>
400
<p><?php _e('Manage your XML Sitemap','wp-seopress'); ?></p>
401
<a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-xml-sitemap' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
402
</span>
403
</div>
404
<div class="seopress-feature">
@@ -406,9 +637,57 @@ class seopress_options
406
<span class="dashicons dashicons-share"></span>
407
</div>
408
<span class="inner">
409
- <h4><?php _e('Social','wp-seopress'); ?></h4>
410
<p><?php _e('Open Graph, Twitter Card, Google Knowledge Graph and more...','wp-seopress'); ?></p>
411
<a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-social' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
412
</span>
413
</div>
414
<div class="seopress-feature">
@@ -416,21 +695,220 @@ class seopress_options
416
<span class="dashicons dashicons-admin-tools"></span>
417
</div>
418
<span class="inner">
419
- <h4><?php _e('Advanced','wp-seopress'); ?></h4>
420
<p><?php _e('Advanced SEO options for advanced users!','wp-seopress'); ?></p>
421
<a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-advanced' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
422
</span>
423
</div>
424
<div class="seopress-feature">
425
<div class="img-tool">
426
<span class="dashicons dashicons-admin-settings"></span>
427
</div>
428
<span class="inner">
429
- <h4><?php _e('Import / Export / Reset','wp-seopress'); ?></h4>
430
<p><?php _e('Import / export SEOPress settings from site to site.','wp-seopress'); ?></p>
431
<a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-import-export' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
432
</span>
433
</div>
434
</div>
435
</div>
436
<?php
@@ -463,6 +941,12 @@ class seopress_options
463
'seopress_social_option_group', // Option group
464
'seopress_social_option_name', // Option name
465
array( $this, 'sanitize' ) // Sanitize
466
);
467
468
register_setting(
@@ -519,23 +1003,6 @@ class seopress_options
519
'seopress_setting_section_titles_single' // Section
520
);
521
522
- //Taxonomies SECTION=======================================================================
523
- add_settings_section(
524
- 'seopress_setting_section_titles_tax', // ID
525
- '',
526
- //__("Taxonomies","wp-seopress"), // Title
527
- array( $this, 'print_section_info_tax' ), // Callback
528
- 'seopress-settings-admin-titles-tax' // Page
529
- );
530
-
531
- add_settings_field(
532
- 'seopress_titles_tax_titles', // ID
533
- '',
534
- array( $this, 'seopress_titles_tax_titles_callback' ), // Callback
535
- 'seopress-settings-admin-titles-tax', // Page
536
- 'seopress_setting_section_titles_tax' // Section
537
- );
538
-
539
//Archives SECTION=========================================================================
540
add_settings_section(
541
'seopress_setting_section_titles_archives', // ID
@@ -545,6 +1012,14 @@ class seopress_options
545
'seopress-settings-admin-titles-archives' // Page
546
);
547
548
add_settings_field(
549
'seopress_titles_archives_author_title', // ID
550
'',
@@ -633,24 +1108,23 @@ class seopress_options
633
array( $this, 'seopress_titles_archives_404_desc_callback' ), // Callback
634
'seopress-settings-admin-titles-archives', // Page
635
'seopress_setting_section_titles_archives' // Section
636
- );
637
638
- add_settings_field(
639
- 'seopress_titles_archives_paged_title', // ID
640
'',
641
- //__('Title template','wp-seopress'),
642
- array( $this, 'seopress_titles_archives_paged_title_callback' ), // Callback
643
- 'seopress-settings-admin-titles-archives', // Page
644
- 'seopress_setting_section_titles_archives' // Section
645
- );
646
647
add_settings_field(
648
- 'seopress_titles_archives_paged_desc', // ID
649
'',
650
- //__('Meta description template','wp-seopress'),
651
- array( $this, 'seopress_titles_archives_paged_desc_callback' ), // Callback
652
- 'seopress-settings-admin-titles-archives', // Page
653
- 'seopress_setting_section_titles_archives' // Section
654
);
655
656
//Advanced SECTION=========================================================================
@@ -778,7 +1252,7 @@ class seopress_options
778
779
add_settings_field(
780
'seopress_social_knowledge_name', // ID
781
- __("Your name/organization","wp-seopress"), // Title
782
array( $this, 'seopress_social_knowledge_name_callback' ), // Callback
783
'seopress-settings-admin-social-knowledge', // Page
784
'seopress_setting_section_social_knowledge' // Section
@@ -954,6 +1428,140 @@ class seopress_options
954
'seopress-settings-admin-social-twitter', // Page
955
'seopress_setting_section_social_twitter' // Section
956
);
957
//Advanced SECTION=========================================================================
958
add_settings_section(
959
'seopress_setting_section_advanced_advanced', // ID
@@ -965,7 +1573,7 @@ class seopress_options
965
966
add_settings_field(
967
'seopress_advanced_advanced_attachments', // ID
968
- __("Redirect attachment pages to post parent (if none, redirect to homepage)","wp-seopress"), // Title
969
array( $this, 'seopress_advanced_advanced_attachments_callback' ), // Callback
970
'seopress-settings-admin-advanced-advanced', // Page
971
'seopress_setting_section_advanced_advanced' // Section
@@ -1009,7 +1617,40 @@ class seopress_options
1009
array( $this, 'seopress_advanced_advanced_yandex_callback' ), // Callback
1010
'seopress-settings-admin-advanced-advanced', // Page
1011
'seopress_setting_section_advanced_advanced' // Section
1012
- );
1013
}
1014
1015
/**
@@ -1020,7 +1661,7 @@ class seopress_options
1020
public function sanitize( $input )
1021
{
1022
1023
- $seopress_sanitize_fields = array('seopress_titles_home_site_title', 'seopress_titles_home_site_desc', 'seopress_titles_archives_author_title', 'seopress_titles_archives_author_desc', 'seopress_titles_archives_date_title', 'seopress_titles_archives_date_desc', 'seopress_titles_archives_search_title', 'seopress_titles_archives_search_desc', 'seopress_titles_archives_404_title', 'seopress_titles_archives_404_desc', 'seopress_titles_archives_paged_title', 'seopress_titles_archives_paged_desc', 'seopress_social_knowledge_name', 'seopress_social_knowledge_img', 'seopress_social_accounts_facebook', 'seopress_social_accounts_twitter', 'seopress_social_accounts_google', 'seopress_social_accounts_pinterest', 'seopress_social_accounts_instagram', 'seopress_social_accounts_youtube', 'seopress_social_accounts_linkedin', 'seopress_social_accounts_myspace', 'seopress_social_accounts_soundcloud', 'seopress_social_accounts_tumblr', 'seopress_social_facebook_admin_id', 'seopress_social_facebook_app_id' );
1024
1025
$seopress_sanitize_site_verification = array('seopress_advanced_advanced_google', 'seopress_advanced_advanced_bing', 'seopress_advanced_advanced_pinterest', 'seopress_advanced_advanced_yandex' );
1026
@@ -1080,7 +1721,7 @@ class seopress_options
1080
echo __('Only the last 1000 items are listed in Sitemaps for performances issues.', 'wp-seopress');
1081
echo '<br>';
1082
echo '<br>';
1083
- echo '<a href="'.home_url().'/sitemaps/" target="_blank" class="button">'.__('View your sitemap','wp-seopress').'</a>';
1084
echo '&nbsp;';
1085
echo '<a href="http://www.google.com/ping?sitemap='.home_url().'/sitemaps/" target="_blank" class="button">'.__('Ping Google manually','wp-seopress').'</a>';
1086
echo '&nbsp;';
@@ -1116,11 +1757,31 @@ class seopress_options
1116
public function print_section_info_social_twitter()
1117
{
1118
print __('<p>Manage your Twitter card</p>', 'wp-seopress');
1119
- }
1120
1121
- public function print_section_info_advanced_advanced()
1122
{
1123
print __('<p>Advanced SEO options</p>', 'wp-seopress');
1124
}
1125
1126
/**
@@ -1131,21 +1792,23 @@ class seopress_options
1131
public function seopress_titles_home_site_title_callback()
1132
{
1133
printf(
1134
- '<input type="text" name="seopress_titles_option_name[seopress_titles_home_site_title]" placeholder="'.__('My awesome website','wp-seopress').'" value="%s"/>',
1135
- esc_html( $this->options['seopress_titles_home_site_title'])
1136
-
1137
- );
1138
-
1139
}
1140
1141
public function seopress_titles_home_site_desc_callback()
1142
{
1143
printf(
1144
- '<textarea name="seopress_titles_option_name[seopress_titles_home_site_desc]" placeholder="'.__('This is cool website about Wookiees','wp-seopress').'">%s</textarea>',
1145
esc_html( $this->options['seopress_titles_home_site_desc'])
1146
1147
);
1148
-
1149
}
1150
1151
//Single CPT
@@ -1161,11 +1824,28 @@ class seopress_options
1161
_e('Title template','wp-seopress');
1162
echo "<br/>";
1163
1164
printf(
1165
- '<input type="text" name="seopress_titles_option_name[seopress_titles_single_titles]['.$seopress_cpt_key.'][title]" value="%s"/>',
1166
esc_html( $this->options['seopress_titles_single_titles'][$seopress_cpt_key]['title'])
1167
);
1168
1169
echo '</div>';
1170
1171
//Single Meta Description CPT
@@ -1253,11 +1933,34 @@ class seopress_options
1253
_e('Title template','wp-seopress');
1254
echo "<br/>";
1255
1256
printf(
1257
- '<input type="text" name="seopress_titles_option_name[seopress_titles_tax_titles]['.$seopress_tax_key.'][title]" value="%s"/>',
1258
esc_html( $this->options['seopress_titles_tax_titles'][$seopress_tax_key]['title'])
1259
);
1260
1261
echo '</div>';
1262
1263
//Tax Meta Description
@@ -1266,11 +1969,29 @@ class seopress_options
1266
_e('Meta description template','wp-seopress');
1267
echo "<br/>";
1268
1269
printf(
1270
- '<textarea name="seopress_titles_option_name[seopress_titles_tax_titles]['.$seopress_tax_key.'][description]">%s</textarea>',
1271
esc_html( $this->options['seopress_titles_tax_titles'][$seopress_tax_key]['description'])
1272
);
1273
1274
echo '</div>';
1275
1276
//Tax No-Index
@@ -1314,18 +2035,112 @@ class seopress_options
1314
}
1315
1316
//Archives
1317
public function seopress_titles_archives_author_title_callback()
1318
{
1319
echo '<h2>'.__('Author archives','wp-seopress').'</h2>';
1320
1321
_e('Title template','wp-seopress');
1322
echo "<br/>";
1323
-
1324
printf(
1325
- '<input type="text" name="seopress_titles_option_name[seopress_titles_archives_author_title]" value="%s"/>',
1326
esc_html( $this->options['seopress_titles_archives_author_title'])
1327
1328
);
1329
1330
}
1331
@@ -1368,10 +2183,14 @@ class seopress_options
1368
echo "<br/>";
1369
1370
printf(
1371
- '<input type="text" name="seopress_titles_option_name[seopress_titles_archives_date_title]" value="%s"/>',
1372
esc_html( $this->options['seopress_titles_archives_date_title'])
1373
1374
);
1375
1376
}
1377
@@ -1413,10 +2232,14 @@ class seopress_options
1413
echo "<br/>";
1414
1415
printf(
1416
- '<input type="text" name="seopress_titles_option_name[seopress_titles_archives_search_title]" value="%s"/>',
1417
esc_html( $this->options['seopress_titles_archives_search_title'])
1418
1419
);
1420
1421
}
1422
@@ -1441,10 +2264,12 @@ class seopress_options
1441
echo "<br/>";
1442
1443
printf(
1444
- '<input type="text" name="seopress_titles_option_name[seopress_titles_archives_404_title]" value="%s"/>',
1445
esc_html( $this->options['seopress_titles_archives_404_title'])
1446
1447
);
1448
1449
}
1450
@@ -1461,34 +2286,6 @@ class seopress_options
1461
1462
}
1463
1464
- public function seopress_titles_archives_paged_title_callback()
1465
- {
1466
- echo '<h2>'.__('Paged archives','wp-seopress').'</h2>';
1467
-
1468
- _e('Title template','wp-seopress');
1469