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,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA1LzEyLzE2LEZ4ogAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAABn1SURBVHic7Z2/bxtJnsWfvQPsJupVeAB7sZzQnYwvIgMN1heogaOwWB9E4GhMMmJAX2YGVCielw7FgAytgJqNxIDEzQZmQAZnwwrI6OwJyMuGA5DAhRr2H7AXSE3LMkk1u6u7qrrfBxgMLIvNksV69f1dDxAB6XT6CYDHAHYBPLn58p+ieG9CNOHdzf/fArgC8GE6nb4N+00fhPHQdDr9GMDTm/++CeM9CEkIHwH8CODH6XT6QfTDhQlAOp1OAyjjetP/UdRzCSFLfsG1GDSm0+lUxAMDC8CNeV8G8JfAqyGEeOXvuBaCt0Ee4lsAbsz8BujLEyKTdwDKft2D3/h5UTqdfgngAkDaz+sJIcJIA/iP3d3dB1dXV2+3ffFWFsDNqf8DGNgjREU+Avh+G2vAswCk0+mnuN78v99+XYSQiPgV1yLwo5dv9uQCpNPp73Ft8v/O/7oIIRHwOwCF3d3dX66uru61BO4VgJvNfy5gYYSQ6HjqRQQ2ugA3Zv9/CV0WISRK/m2TO7BWAG4Cfm9Bn58QnfkVwJN1gcGHG174A7j5CdGd3+N6L69kZQzgJs//7+GshxASMf+0rk7gCxfgxvT/nyhWRQiJlH++6wqscgEaES2GEBItX+ztzwTgprGHtf2ExJM/3ezxJXctgJeRLYUQIoOXt/+wjAHc9PP/HPFiCCHR87U7T+C2BVCWsxZCSMQs9/ptAXgqYSGEkOhZ7vWHwDL1xzFehCSDP97s+aUF8L28tRBCJPA98EkAnkhbBiFEBk+ATwLACT+EJItvAODBTWHAf0tdCiFEBv/yENc39hBCksfjh+BkX0KSSpoWACHJ5fGmgSCEkJjzIJ1O/0P2IgghcqAFQEiCoQAQkmAoAIQkGAoAIQmGAkBIgqEAEJJgKACEJBgKACEJhgJASIKhABCSYCgAhCSYr2QvIEmYpgnTND/72mw2w2w2k7QiknQoAILJZrOwLAumaS7/n0qlPL12MplgsVhgOBxiPB5jPB5THEiosBswIKZpwrZt2LaNTCYj/Pnz+Rz9fh+dTgfj8Vj480myoQD4wDAM5PN55PN5PHr0KLL3nc/naDQa6Pf7WCwWkb0viS8UgC2wLAvFYhGHh4dS1+E4DlqtFhoN3uROgkEB8EA2m0W5XA7FxA/CfD5HrVZDv9/39P3tdnvlz/D111+LXhrRBKYBN2CaJur1Oi4uLpTb/ACQSqXw+vVrnJ2dwTCMjd+bzWZX/gyTySSs5RENoACsoVwuo9frSTf3vbC/v4/Ly0tks9m131Mur778mYHFZEMBuINlWej1enjx4gV2dnZkL8czOzs7uLi4WLnR153+AAUg6VAAbpHP59FutyON7IvmxYsXqNfrn30tn8+v/f7hcBj2kojCMAh4Q71eF27uTyYTDIdDzGaz5Uk7Ho8/S+EZhgHLsgB8KiLKZrOBrY/JZIJCoQDDMPD+/fu138cAYLJJvAAYhoF6vY79/X0hzxsMBuj3+4Fz9W5xURBRmkwmmM1ma3+20WiEQqHg+/lEfxItAIZhCDH53bx8q9USXqBjmibK5XIowcjz83PUajXhzyX6kNgYgKjN32w2sbe3h0ajEUp13mw2Q6VSwbNnz+A4jtBn0/8niRWAarUaaPNPJhMcHByEtvHvMhwOsbe3JzRvzwwASaQAVKvVQCb1YDBAoVCIfAMtFgsUCgUhIuA4DjsNSfIEwLZtHB0d+X59t9tFqVSS1oyzWCxQKpUCuwM0/wmQMAFwS3v9MhgMUKlUBK7IH25cIAg0/wmQMAGo1+u+8+uTyUSJze/S7/cxGo18v54WAAESJAD5fD5QQ0+lUlGuBz9IOzAtAAIkZCSYYRhrm2G80Gw2ldwww+EQo9Foa2FzR4/pSrFYvLf78S7D4ZBWzwoSIQDFYtHzXL67uEU+qtJqtbYWABXFzCumaeLk5GTr17mzFsnnxN4FMAwDxWLR9+vDqO4TSb/f3zojoLMAbGp53gQ3/2piLwD5fD5QY02n0xG4mnDwOhHIRWcBsG1769fM53Otf+Ywib0ABDn93WYa1dlWAHQ+Df1YADr/vGETawGwLMu37w9sv7Fksc0HPEjqUDa2bfuy5igA64m1AGwahOEFXczGxWLhuTxYl59pFfT/xRNrAfDjL95G5eDfXbx+yHUWAL/+vw5unCxiKwDbXMm1Dp02i9e16noa+v196uLGySK2AuDXXLyNThaAl1NO5w5Av9acroIXFbEVAHfOXhC2rTaTiZcPuk4WzV0oAOFAAQj5GSqh62YwDMNXH4fuJc9REFsBEHF662QBAPen+HQVAEb/wyO2AiBitn/cLABdXQC/5j8DgPcTWwEQgYhAYpRs2uDz+Vxbc5j+f3hQADaQyWS0cgM2bXBdT3/LsnxV/+lc8RglFIB7CFpNqAq6noY8/cOFAnAPQZqJVEJXC4D+f7hQAO4hlUppIwKbXAAdT0TDMHwFcx3H0Vbwoia2V4P99NNPwq73dhwHe3t72gbRdCWfz+P09HTr1w0GA5RKpRBWFD9iawGIPAF2dnZwdnYm7HnEG/T/wye2MwFns1mgKcB3yWQyKJfLgSbxku0QXQBkmiZM01z5d4vFIpFuQ2wFYDweC79R98WLF5jNZlqMCdOdbDbry4VzHAemacK27eWG3zaV6E6CGo/HGA6HGI/HsXX/YhsDsCwLb968Ef5cx3Gk3AuYNKrVaqAr3EQzGo3Q7/fR7/e17ahcRWwFABAbCLwNRSB8Li8vA89zCIvBYIBWqxWLWENsg4BAeLngnZ0dtNvt2PUKqIKIYS5hsr+/j4uLC7Tbbe3Kxe8SawEI01enCIRH0FFuUZHJZHBxcYFqtapVyfhtYi0Aw+EQ8/k8tOe7IqDLB1YHTNPUrvz66OgIvV5Py8Mg1gIABLtA0ws7Ozt4/fq1NtWCqpLNZtFut/H+/XshrdxRk0ql8ObNG+3EK9ZBQJeoAkrdbhe1Wi22KaMwsG0bxWJRaM2GbI6Pj7VJFSdCAGzbxuvXryN5r8lkglKpFKtUURhks1mUy+XQNv7dceDD4XAZsIsiyKiLCCRCAADg7OwM+/v7kbyX4zioVCrsSFuBZVmoVqvCN36320Wn08FsNvMkvoZhwLZt5PP50ETo2bNnyqcKEyMAhmHg8vIylLqAdZyfn6NWq0X2fipjGAaq1arw6kyXg4MD33UZYYmS4zjI5XJKW4OxDwK6LBYLVCqVSN/z6OgI7XZ7bf15Usjn87i8vAxt8we9/Xc8HqNQKODVq1cCV3UdIK7X60KfKZrECABwXRjU7XYjfc9MJoNer5fIVKFpmmi32zg9PQ3V8hJlZrdaLRwcHMBxHCHPA65//ypnBhIlAABQq9U8X6QpCjdVWK1WI31fmeTzefR6vUii+yL9bNcaEEm5XBb6PJEkTgAWiwVKpZJQlfeKzgUjXjEMA2dnZ6Gf+rcRHWgbj8c4Pj4W9rxUKqWsFZA4AQCuZwWIVnmvPHr0CG/evIll4ZBlWej1eltnW7rdru8pvm7rrmg6nQ4Gg4Gw56lqBSRSAADxKr8tJycnODs707aG/C7FYhFv3rzZKr8+Go1wcHCASqXi2yoKM81WqVSEWYqpVErJOFBiBQC4VnmZIrC/vx8Ll6Ber+Pk5MTz9zuOg+Pj42VLtd/hH0C4ArBYLNBqtYQ9jwKgILJFQNcacuDa3+/1elul9waDAfb29j6rkguyMcIutGm1WsKsAAqAosgWAQA4PT1VPmd8G9ff99q44zgOnj9/jlKp9EWvhN+e+tFoFHrfxWKxEFbSu7Ozo9z8AArADSqIwOHhIdrttvJxAcuy0G63Pfv7o9EIe3t7K0ujTdP03f0XVZmtyJp+CoDCdDod4YUg25LJZJQWAdu20W63PfvszWYThUJh7UmtsvnvMh6Phc2VoAAojlsIEuYgkft49OiRksHBfD6P169fe9r8juPg2bNn985j8LshHMeJtNFG1Hup9julAKxgPB4jl8tFXjF4m1QqpdTIsW1u6ZlMJsjlcp42jd8Ozai77ES9X5TNaF6gAKxhsVggl8tF3jtwG1XmDm6z+bvdLgqFgqfiHB3MfxeRxUYquQEUgHuoVCpSg4OyRcC2bc+bv9lsolKpeI7M6yQAqvf1+4UC4AE3OCgrLiBLBCzL8pyaPD4+3nr+YhD/X8adDKKCwyoFeCkAHnHjAiLrw7fB7S2P6sPjtvLe57O6VX3bpsosy/I9lkvWpCVRoiPbpbsNBWAL3E7C4+NjKanCR48eRXZL8Ww2u3ejuTck+cmTB/GD42qOy4AC4INOpyMtS5DJZCKbK1CpVNYGQYNej6aT/x9nKAA+mc1myOVyOD8/j/y9j46OIoskrxKBoJvfMAzfg0LuTvslwaAABKRWq+H58+eRuwRRthLfFgERF6MGOf05aVksFAAB9Pv9yF2CnZ2dSEeMVSoVnJ+fC7kVOen+v0q3SlMABOFOGYqycOjw8DDSopJarSbkw5t0/1+lm6MoAAJxR4+LHi+9CZ1aiIHrFJjfctjJZCJ188RxvDsFIARarVZkcQGVB06uQmf/X9R1YnQBEkC/30ehUIhEBFQdOLkKXc1/kac/XYCEEFVXoS5WQJDhH0A8BMDv9OOwoACEjBscDFsEdLACggQsZZVgu4gKtqpk/gMUgEhYLBahi0AqlVKqxnwVupr/gLj6fQpAQolCBFR3A3TO/4sSANk/x10oABEStgioOHbaxbZt3+k/We2/LkE6F2+jYhkzBSBiwrybMJVKKZurDnL6y07/ifL/Zf8cq6AASCDMuwlVjQPo7P+Lcq1k/xyroABIIqy7CVUUANM0A5nQstN/QVKXLo7j0AIgn9PpdIT3Dqg0cNIlyOkv228WFVcRebmISCgAkqnValLvIIgCnf1/Ude4i7xkVCRfyV7AJorF4sqe906no1w01S9uA9HFxYWQ5/kdtBEWhmH4nv0PyDX/bdsWEv0fjUbKfl6VFoB1V06Px2Nl/0H9MBwOcX5+jqOjI9lLEU5Ql0SmAIg6/bedlhwlyroAm4JZKga6gtJoNKTeSRgWQXxome2/2WxWiDU1Go2UjP67KCsAquazw2KxWCjrJwZBV/9fVG+Fyqc/oLAAbDrl4yoOqkaK/RK0gk7WyZmU0x+gACjFbDaT3vUmkqApNFmbR9SsxVqtJuQ5YaKsAGza5HEVAEDNajG/BBEAWUJYLBaFFP6cn58r1/m3CmUFYNMvQdRoJhWJiwAYhqHd8A/DMIT4/o7jKO/7uygpAF6i/CpWvIkg6KmhSlGRjuZ/vV733bF4m21uSJaNkgLgxcSPsxsQZGyUKvURQQRaRvuvbduBCpZcBoOB9OrFbVBSALxYAHGsBRCBKgKgU/efaZpCxqvP53NUKhUBK4oObQUgri4AEGwDqCAA2Ww2kCkd9QkqyvQvlUramP4uSgqAF/NeRKQ2jqgQRNTJ/69Wq0Jy/q9evdIi6n8XJQXA6+ZWeQSWLFT4EAaxzqJs/83n80L6L7rdrrZVnMoJwDa+fZzdAD/IvjoL0Gf2v2VZOD09DfycyWSiRcHPOpQTgG2uvI6rBeBX2FQw/4OKchT+v2VZaLfbgZ8zmUxQKBSki24QlBOAbT5AOszC98M2IngbFdJPqvv/pmmi3W4HDvo5jqNVvn8dygnAtvl91Wfh+8GPCT2fz5WwAILk0sN2YQzDwNnZmZDNXygUlIi3BEV7AYibG+DXhObpvxnX7A+aPYrT5gcUFIBtUzK6XIzpFb+bSIUotKr+Pzf/epQSAL/lvUkXAFVmzqloAWSzWSE+/3w+j93mB2IiAJlMJhYpQb9DKFXoPAs6/COMa7Pz+TwuLi4Cb/7JZIJcLhe7zQ8oJgBBNrEO12Pfh58hlKpMnVHN/K/X60Ly/IPBQPtU3yaUEoAgHX6ZTEbrgKBt275KUlU4/QF1zH/LstDr9XB4eBj4Wc1mU8v6/m2IjQAA13XdfnPoMjEMw9cYqsFgoMTpbxhGoHp6Ue2/xWJRWLDv+fPnyohrmCglAEGbMlKplLB5blFSLpe39p8dx1GmBFX27H+3uOfk5ESYv69CWjUKlBEAUQM+Dg8PtcoK+G1IabVaSkT+geDmf5DNVi6X0ev1hHT0NZtN5HI5Zf5do0CZm4FETvipVqsYj8fKR20ty/JlsYxGI6XMUxn+fz6f92U5rcId5KGCOxU1ylgAItN4Ozs7aLfbSvcJuMUp25qsbg26KliWFcjs3rb9183rn56eCtn87qmfxM0PKCQAomf8qSwCtm37Lk6pVCpKmahRnf75fB69Xg8XFxfCLu04ODhAo9GIdZT/PmLpAri4IqBSBVe5XMaLFy98vbbZbCoXnArT/zdNE/l8Hvl8Xtgo+Pl8jkajEbtbmPzyIJ1O/0P2IgDg559/3vj3juMEMjVfvXoltV7eHTzp9/TqdrtKmf7Adfrv48ePgZ7xzTfffHYCG4YB27aFTel1cRwHrVYLrVYr0Sf+XZSwAO47/QeDARqNRqCa7pOTE9i2HbkJbRgGisWi71MfUHPzA8FPf7f917IsZLNZZLNZoZse4Ma/Dy0EYDgcYjweo1AoBBKBTCaD9+/fo9vtotFohCoErvlaLBYDWS6qbn4guACYpomffvpJyETeu3Dje0MJF+A+v/jbb79dblbLsnB2dibEJ3Qvcej3+0I+JKLNV5U3P4DQNm8QXB9f1O807ighAPV6fW3t9nw+x97e3mdfMwxDSMnnbdymmuFwiMVi4SlomM1mYZrm0oQVuZ5ms6lUrv8u2WwWFxcXspexZDAYoNVqJTad5xflXYBVv9DFYoFcLrdROLYlk8kgk8l8YYncHVMVNO99H26eX7Vo/11UaLyaz+dotVro9/tKpUZ1QgkB2BQZ37QR3OqtarUa2qaM8gKSyWSCUqmkxYdZlgDM53P0+310Oh1lUrs6I10AvAQAN9HpdDAcDgOl2FRAdZP/NqZpRnpF+2g0Qr/fXwaDiTiUFgCvU2JnsxkKhQKKxSLK5bJygalNjEYj5ar77iPs038ymSzjMW5MhoSDdAHY1AOwrR/carXQ6XRQLpeFXPkUJjo3oIjs23DnGbrNWzr+e+iMdAHYZAH4CYQtFgvUajW0Wi2Uy2VhQUJRTCaTpVDpStAUZxR1GMQb0puB1glA0Ckxs9kMlUoF3377LZrNJubzue9niaDb7eLZs2fI5XJab34R5r9KswySjnQLYF23nihTcDabodFooNFoLIt0bNuOJE4gutBIBYIKgKjxX0QMShQCycCtPc9ms8KyB6PRaOnHxjV4dXl5GSgDMBgMUCqVBK6IBEG6BSALd5O6mKYJ0zSXAS73z6uYzWZLE3abykHdCTr7H1DjBmPyicQKwF3cTc0P6HpERP/576sW0oOARB+CDludz+eJsJR0ggJAPGEYRuCyaJ7+6kEBIJ4Qkf6jAKgHBYB4gv5/PKEAEE+IGP/F4h/1oACQexExA4Gnv5pQAMi9iLhqjQKgJhQAci/0/+MLBYBsxDTNwOm/0WgUy7LoOEABIBvh6R9vKABkI8z/xxsKANlIUAvAcRwKgMJQAMhaRMxN4OZXGwoAWQv9//hDASBrof8ffygAZCUiZv+z/Vd9KABkJTz9kwEFgKyEApAMKADkCwzDEDIoVfULTgkFgKxARPSf5b96QAEgX0DzPzlQAMgXMP+fHCgA5DNEzP4HQPNfEygA5DNEXf3N/L8eUADIZ4gSAKIHFACyRMTwD6IXFACypFwuC3uWiEAiCR8KAAFwffofHh4Kex5dCT2gABAYhoGzszOhzzw6OoJlWUKfScRDAUg4hmGg3W6H4vu3222KgOL8Znd396XsRZDoMQwDf/7zn/G3v/1NSN5/Fb/97W/x3Xff4Q9/+AMWiwVvBlKQB+l0+h+yF0HCxzRNmKYJy7KQzWaRzWYDj/vaFsdxMB6PMRwOMR6Pl6JAYZAHBSCGVKtV5PP5yDe4KLrdLiqViuxlJALGAGKIiLv8ZEKLIDooADFERC+/TCgA0UEBiBmGYcheQmAoANFBAYgZcUi7sZEoOigAMSMOAsBW4uigAMQM3V2A0WgkewmJ4ivZCyBiGY/HaDabspfhG/r/0cI6AEISDF0AQhIMBYCQBEMBICTBUAAISTAUAEISDAWAkARDASAkwTwE8E72IgghUnhHC4CQBPMQwAfZiyCESOHDQwBT2asghEhhSguAkOTy4QEAsCGIkOQxnU4fuEHAj1JXQgiJmo/ApzqAt/LWQQiRwFvgkwD8IG0ZhBAZ/AAAD9w/pdPpKYA/SloMISQ6fplOp2ng81LgH+WshRASMcu9flsAGhIWQgiJnuVeXwrAdDqdgn0BhMSddzd7HcCX3YAvI10KISRqXt7+w4O7f5tOp98C+FNEiyGERMe76XT65PYXVnUDlqNZCyEkYr7Y27+5+4Wrq6v/293dfQDgSRQrIoREwl+n02n77he/cAFc0un0BwDfhLokQkgUfJxOp49X/cWmgSDfA/g1lOUQQqLiV1zv5ZWsFYDpdPph0wsJIVrw/c1eXskXMYDbXF1d/e/u7u4vAJ4KXxYhJGyOVvn9t9koAABwdXX1gSJAiHYcTafTH+77pnsFAFiKwEcA/wrgdwEXRggJj18BPLvv5HdZmwVYRTqdfozrNkJmBwhRj4+4x+e/y1YC4JJOp18C+E8/ryWEhMJfp9Ppy21f5EsAgKU10ADLhgmRyTsA5W1O/dv4FgCXdDr9BNclhn8J+ixCiGf+DqAxnU7fBnlIYAFwSafTaVwLwVNwshAhYfALrod5NG639AZBmADc5sY9eHrzHwOGhPjnI643/Y9+zfxNhCIAd7lxEx4D2MWnJiPGDgj5hDuM5y2AKwAfgpr3Xvh/hENXm+CaxHYAAAAASUVORK5CYII=');
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
- echo "<br/>";
1470
-
1471
- printf(
1472
- '<input type="text" name="seopress_titles_option_name[seopress_titles_archives_paged_title]" value="%s"/>',
1473
- esc_html( $this->options['seopress_titles_archives_paged_title'])
1474
-
1475
- );
1476
-
1477
- }
1478
-
1479
- public function seopress_titles_archives_paged_desc_callback()
1480
- {
1481
- _e('Meta description template','wp-seopress');
1482
- echo "<br/>";
1483
-
1484
- printf(
1485
- '<textarea name="seopress_titles_option_name[seopress_titles_archives_paged_desc]">%s</textarea>',
1486
- esc_html( $this->options['seopress_titles_archives_paged_desc'])
1487
-
1488
- );
1489
-
1490
- }
1491
-
1492
  //Advanced
1493
  public function seopress_titles_noindex_callback()
1494
  {
@@ -1502,6 +2299,8 @@ class seopress_options
1502
 
1503
  echo '<label for="seopress_titles_noindex">'. __( 'noindex', 'wp-seopress' ) .'</label>';
1504
 
 
 
1505
  if (isset($this->options['seopress_titles_noindex'])) {
1506
  esc_attr( $this->options['seopress_titles_noindex']);
1507
  }
@@ -1519,6 +2318,8 @@ class seopress_options
1519
 
1520
  echo '<label for="seopress_titles_nofollow">'. __( 'nofollow', 'wp-seopress' ) .'</label>';
1521
 
 
 
1522
  if (isset($this->options['seopress_titles_nofollow'])) {
1523
  esc_attr( $this->options['seopress_titles_nofollow']);
1524
  }
@@ -1536,6 +2337,8 @@ class seopress_options
1536
 
1537
  echo '<label for="seopress_titles_noodp">'. __( 'noodp', 'wp-seopress' ) .'</label>';
1538
 
 
 
1539
  if (isset($this->options['seopress_titles_noodp'])) {
1540
  esc_attr( $this->options['seopress_titles_noodp']);
1541
  }
@@ -1553,6 +2356,8 @@ class seopress_options
1553
 
1554
  echo '<label for="seopress_titles_noimageindex">'. __( 'noimageindex', 'wp-seopress' ) .'</label>';
1555
 
 
 
1556
  if (isset($this->options['seopress_titles_noimageindex'])) {
1557
  esc_attr( $this->options['seopress_titles_noimageindex']);
1558
  }
@@ -1570,6 +2375,8 @@ class seopress_options
1570
 
1571
  echo '<label for="seopress_titles_noarchive">'. __( 'noarchive', 'wp-seopress' ) .'</label>';
1572
 
 
 
1573
  if (isset($this->options['seopress_titles_noarchive'])) {
1574
  esc_attr( $this->options['seopress_titles_noarchive']);
1575
  }
@@ -1587,6 +2394,8 @@ class seopress_options
1587
 
1588
  echo '<label for="seopress_titles_nosnippet">'. __( 'nosnippet', 'wp-seopress' ) .'</label>';
1589
 
 
 
1590
  if (isset($this->options['seopress_titles_nosnippet'])) {
1591
  esc_attr( $this->options['seopress_titles_nosnippet']);
1592
  }
@@ -1732,6 +2541,20 @@ class seopress_options
1732
  if (isset($this->options['seopress_social_knowledge_img'])) {
1733
  esc_attr( $this->options['seopress_social_knowledge_img']);
1734
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1735
  }
1736
 
1737
  public function seopress_social_accounts_facebook_callback()
@@ -1938,6 +2761,521 @@ class seopress_options
1938
  }
1939
  }
1940
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1941
  public function seopress_advanced_advanced_attachments_callback()
1942
  {
1943
  $options = get_option( 'seopress_advanced_option_name' );
@@ -2011,6 +3349,57 @@ class seopress_options
2011
  );
2012
 
2013
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2014
  }
2015
 
2016
  if( is_admin() )
14
  */
15
  public function __construct() {
16
  add_action( 'admin_menu', array( $this, 'add_plugin_page' ), 10 );
17
+ add_action( 'admin_init', array( $this, 'set_default_values' ), 10 );
18
  add_action( 'admin_init', array( $this, 'page_init' ) );
19
  }
20
 
26
  delete_option($this->seopress_options);
27
  }
28
 
29
+ public function set_default_values() {
30
+
31
+ //Enable features==========================================================================
32
+ $seopress_toggle_options = get_option('seopress_toggle');
33
+
34
+ $seopress_toggle_options['toggle-titles'] = '1';
35
+ $seopress_toggle_options['toggle-xml-sitemap'] = '1';
36
+ $seopress_toggle_options['toggle-social'] = '1';
37
+ $seopress_toggle_options['toggle-advanced'] = '1';
38
+ if ( is_plugin_active( 'woocommerce/woocommerce.php' )) {
39
+ $seopress_toggle_options['toggle-woocommerce'] = '1';
40
+ }
41
+ $seopress_toggle_options['toggle-breadcrumbs'] = '1';
42
+ $seopress_toggle_options['toggle-robots'] = '1';
43
+ $seopress_toggle_options['toggle-404'] = '1';
44
+
45
+ add_option('seopress_toggle', $seopress_toggle_options);
46
+
47
+ //Titles & metas===========================================================================
48
+ $seopress_titles_options = get_option('seopress_titles_option_name');
49
+
50
+ //Site Title
51
+ $seopress_titles_options['seopress_titles_home_site_title'] = '%%sitetitle%%';
52
+
53
+ //Meta Description
54
+ $seopress_titles_options['seopress_titles_home_site_desc'] = '%%tagline%%';
55
+
56
+ //Post Types
57
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
58
+ $seopress_titles_options['seopress_titles_single_titles'][$seopress_cpt_key]['title'] = '%%post_title%% - %%sitetitle%%';
59
+ }
60
+
61
+ //Taxonomies
62
+ foreach (seopress_get_taxonomies() as $seopress_tax_key => $seopress_tax_value) {
63
+ //Title
64
+ if ($seopress_tax_key =='category') {
65
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['title'] = '%%_category_title%% %%current_pagination%% - %%sitetitle%%';
66
+ } elseif ($seopress_tax_key =='post_tag') {
67
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['title'] = '%%tag_title%% %%current_pagination%% - %%sitetitle%%';
68
+ } else {
69
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['title'] = '%%term_title%% %%current_pagination%% - %%sitetitle%%';
70
+ }
71
+
72
+ //Desc
73
+ if ($seopress_tax_key =='category') {
74
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['description'] = '%%_category_description%%';
75
+ } elseif ($seopress_tax_key =='post_tag') {
76
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['description'] = '%%tag_description%%';
77
+ } else {
78
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['description'] = '%%term_description%%';
79
+ }
80
+
81
+ //noindex
82
+ $seopress_titles_options['seopress_titles_tax_titles'][$seopress_tax_key]['noindex'] ='1';
83
+ }
84
+
85
+ //Archives
86
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
87
+ $seopress_titles_options['seopress_titles_archive_titles'][$seopress_cpt_key]['title'] = '%%cpt_plural%% %%current_pagination%% - %%sitetitle%%';
88
+ }
89
+
90
+ //Author
91
+ $seopress_titles_options['seopress_titles_archives_author_title'] = '%%post_author%% - %%sitetitle%%';
92
+ $seopress_titles_options['seopress_titles_archives_author_noindex'] = '1';
93
+
94
+ //Date
95
+ $seopress_titles_options['seopress_titles_archives_date_title'] = '%%archive_date%% - %%sitetitle%%';
96
+ $seopress_titles_options['seopress_titles_archives_date_noindex'] = '1';
97
+
98
+ //Search
99
+ $seopress_titles_options['seopress_titles_archives_search_title'] = '%%search_keywords%% - %%sitetitle%%';
100
+
101
+ //404
102
+ $seopress_titles_options['seopress_titles_archives_404_title'] = __('404 - Page not found','wp-seopress').' - %%sitetitle%%';
103
+
104
+ add_option('seopress_titles_option_name', $seopress_titles_options);
105
+
106
+ //XML Sitemap==============================================================================
107
+ $seopress_xml_sitemap_options = get_option('seopress_xml_sitemap_option_name');
108
+
109
+ $seopress_xml_sitemap_options['seopress_xml_sitemap_general_enable'] = '1';
110
+
111
+ global $wp_post_types;
112
+
113
+ $args = array(
114
+ 'show_ui' => true,
115
+ );
116
+
117
+ $output = 'objects'; // names or objects, note names is the default
118
+ $operator = 'and'; // 'and' or 'or'
119
+
120
+ $post_types = get_post_types( $args, $output, $operator );
121
+
122
+ foreach ($post_types as $seopress_cpt_key => $seopress_cpt_value) {
123
+ if ($seopress_cpt_key =='post' || $seopress_cpt_key =='page' || $seopress_cpt_key =='product') {
124
+ $seopress_xml_sitemap_options['seopress_xml_sitemap_post_types_list'][$seopress_cpt_key]['include'] = '1';
125
+ }
126
+ }
127
+
128
+ $args = array(
129
+ 'show_ui' => true,
130
+ 'public' => true,
131
+
132
+ );
133
+ $output = 'objects'; // or objects
134
+ $operator = 'and'; // 'and' or 'or'
135
+ $taxonomies = get_taxonomies( $args, $output, $operator );
136
+
137
+ foreach ($taxonomies as $seopress_tax_key => $seopress_tax_value) {
138
+ if ($seopress_tax_key =='category' || $seopress_tax_key =='post_tag') {
139
+ $seopress_xml_sitemap_options['seopress_xml_sitemap_taxonomies_list'][$seopress_tax_key]['include'] = '1';
140
+ }
141
+ }
142
+
143
+ add_option('seopress_xml_sitemap_option_name', $seopress_xml_sitemap_options);
144
+
145
+ //Social===================================================================================
146
+ $seopress_social_options = get_option('seopress_social_option_name');
147
+
148
+ $seopress_social_options['seopress_social_facebook_og'] = '1';
149
+ $seopress_social_options['seopress_social_twitter_card'] = '1';
150
+
151
+ add_option('seopress_social_option_name', $seopress_social_options);
152
+
153
+ //Advanced=================================================================================
154
+ $seopress_advanced_option_name = get_option('seopress_advanced_option_name');
155
+
156
+ $seopress_advanced_option_name['seopress_advanced_advanced_attachments'] = '1';
157
+ $seopress_advanced_option_name['seopress_advanced_advanced_stop_words'] = '1';
158
+ $seopress_advanced_option_name['seopress_advanced_appearance_title_col'] = '1';
159
+ $seopress_advanced_option_name['seopress_advanced_appearance_meta_desc_col'] = '1';
160
+
161
+ add_option('seopress_advanced_option_name', $seopress_advanced_option_name);
162
+ }
163
+
164
  /**
165
  * Add options page
166
  */
167
  public function add_plugin_page()
168
  {
169
+ add_menu_page('SEOPress Option Page', 'SEOPress', 'manage_options', 'seopress-option', array( $this, 'create_admin_page' ), 'dashicons-admin-seopress', 90);
170
  $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' ));
171
  add_submenu_page('seopress-option', __('XML Sitemap','wp-seopress'), __('XML Sitemap','wp-seopress'), 'manage_options', 'seopress-xml-sitemap', array( $this, 'seopress_xml_sitemap_page' ));
172
  add_submenu_page('seopress-option', __('Social','wp-seopress'), __('Social','wp-seopress'), 'manage_options', 'seopress-social', array( $this, 'seopress_social_page' ));
173
+ add_submenu_page('seopress-option', __('Google Analytics','wp-seopress'), __('Google Analytics','wp-seopress'), 'manage_options', 'seopress-google-analytics', array( $this, 'seopress_google_analytics_page' ));
174
  add_submenu_page('seopress-option', __('Advanced','wp-seopress'), __('Advanced','wp-seopress'), 'manage_options', 'seopress-advanced', array( $this, 'seopress_advanced_page' ));
175
  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'));
176
 
193
  <li><span>'.__('%%term_description%%','wp-seopress').'</span>'.__('Term description','wp-seopress').'</li>
194
  <li><span>'.__('%%search_keywords%%','wp-seopress').'</span>'.__('Search keywords','wp-seopress').'</li>
195
  <li><span>'.__('%%current_pagination%%','wp-seopress').'</span>'.__('Current number page','wp-seopress').'</li>
196
+ <li><span>'.__('%%cpt_plural%%','wp-seopress').'</span>'.__('Plural Post Type Archive name','wp-seopress').'</li>
197
+ <li><span>'.__('%%date_archive%%','wp-seopress').'</span>'.__('Date Archive','wp-seopress').'</li>
198
  </ul>
199
  ';
200
 
210
 
211
  function seopress_titles_page(){
212
  $this->options = get_option( 'seopress_titles_option_name' );
213
+ if (function_exists(seopress_admin_header)) {
214
+ echo seopress_admin_header();
215
+ }
216
  ?>
217
  <form method="post" action="options.php" class="seopress-option">
218
  <?php
225
  global $wp_version, $title;
226
  $current_tab = '';
227
  $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
228
+ echo '<'.$tag.'><span class="dashicons dashicons-editor-table"></span>'.$title.'</'.$tag.'>';
229
  settings_fields( 'seopress_titles_option_group' );
230
  ?>
231
 
235
  $plugin_settings_tabs = array(
236
  'tab_seopress_titles_home' => __( "Home", "wp-seopress" ),
237
  'tab_seopress_titles_single' => __( "Single Post Types", "wp-seopress" ),
 
238
  'tab_seopress_titles_archives' => __( "Archives", "wp-seopress" ),
239
+ 'tab_seopress_titles_tax' => __( "Taxonomies", "wp-seopress" ),
240
  'tab_seopress_titles_advanced' => __( "Advanced", "wp-seopress" ),
241
  );
242
 
248
  ?>
249
  <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>
250
  <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>
 
251
  <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>
252
+ <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>
253
  <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>
254
  </div>
255
 
260
 
261
  function seopress_xml_sitemap_page(){
262
  $this->options = get_option( 'seopress_xml_sitemap_option_name' );
263
+ if (function_exists(seopress_admin_header)) {
264
+ echo seopress_admin_header();
265
+ }
266
  ?>
267
+ <form method="post" action="options.php" class="seopress-option" name="seopress-flush">
268
  <?php
269
  global $wp_version, $title;
270
  $current_tab = '';
271
  $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
272
+ echo '<'.$tag.'><span class="dashicons dashicons-media-spreadsheet"></span>'.$title.'</'.$tag.'>';
273
  settings_fields( 'seopress_xml_sitemap_option_group' );
274
  ?>
275
 
292
  <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>
293
  <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>
294
  </div>
 
295
  <?php submit_button(); ?>
296
  </form>
297
  <?php
299
 
300
  function seopress_social_page(){
301
  $this->options = get_option( 'seopress_social_option_name' );
302
+ if (function_exists(seopress_admin_header)) {
303
+ echo seopress_admin_header();
304
+ }
305
  ?>
306
  <form method="post" action="options.php" class="seopress-option">
307
  <?php
308
  global $wp_version, $title;
309
  $current_tab = '';
310
  $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
311
+ echo '<'.$tag.'><span class="dashicons dashicons-share"></span>'.$title.'</'.$tag.'>';
312
  settings_fields( 'seopress_social_option_group' );
313
  ?>
314
 
339
  <?php
340
  }
341
 
342
+ function seopress_google_analytics_page(){
343
+ $this->options = get_option( 'seopress_google_analytics_option_name' );
344
+ if (function_exists(seopress_admin_header)) {
345
+ echo seopress_admin_header();
346
+ }
347
+ ?>
348
+ <form method="post" action="options.php" class="seopress-option">
349
+ <?php
350
+ global $wp_version, $title;
351
+ $current_tab = '';
352
+ $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
353
+ echo '<'.$tag.'><span class="dashicons dashicons-chart-area"></span>'.$title.'</'.$tag.'>';
354
+ settings_fields( 'seopress_google_analytics_option_group' );
355
+ ?>
356
+
357
+ <div id="seopress-tabs" class="wrap">
358
+ <?php
359
+
360
+ $plugin_settings_tabs = array(
361
+ 'tab_seopress_google_analytics_enable' => __( "General", "wp-seopress" ),
362
+ 'tab_seopress_google_analytics_features' => __( "Tracking", "wp-seopress" ),
363
+ 'tab_seopress_google_analytics_custom_dimensions' => __( "Custom Dimensions", "wp-seopress" ),
364
+ );
365
+
366
+ echo '<h2 class="nav-tab-wrapper">';
367
+ foreach ( $plugin_settings_tabs as $tab_key => $tab_caption ) {
368
+ echo '<a id="'. $tab_key .'-tab" class="nav-tab" href="?page=seopress-google-analytics#tab=' . $tab_key . '">' . $tab_caption . '</a>';
369
+ }
370
+ echo '</h2>';
371
+ ?>
372
+ <div class="seopress-tab <?php if ($current_tab == 'tab_seopress_google_analytics_enable') { echo 'active'; } ?>" id="tab_seopress_google_analytics_enable"><?php do_settings_sections( 'seopress-settings-admin-google-analytics-enable' ); ?></div>
373
+ <div class="seopress-tab <?php if ($current_tab == 'tab_seopress_google_analytics_features') { echo 'active'; } ?>" id="tab_seopress_google_analytics_features"><?php do_settings_sections( 'seopress-settings-admin-google-analytics-features' ); ?></div>
374
+ <div class="seopress-tab <?php if ($current_tab == 'tab_seopress_google_analytics_custom_dimensions') { echo 'active'; } ?>" id="tab_seopress_google_analytics_custom_dimensions"><?php do_settings_sections( 'seopress-settings-admin-google-analytics-custom-dimensions' ); ?></div>
375
+ </div>
376
+
377
+ <?php submit_button(); ?>
378
+ </form>
379
+ <?php
380
+ }
381
+
382
  function seopress_advanced_page(){
383
  $this->options = get_option( 'seopress_advanced_option_name' );
384
+ if (function_exists(seopress_admin_header)) {
385
+ echo seopress_admin_header();
386
+ }
387
  ?>
388
  <form method="post" action="options.php" class="seopress-option">
389
  <?php
391
  global $wp_version, $title;
392
  $current_tab = '';
393
  $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
394
+ echo '<'.$tag.'><span class="dashicons dashicons-admin-tools"></span>'.$title.'</'.$tag.'>';
395
  settings_fields( 'seopress_advanced_option_group' );
396
  ?>
397
 
400
 
401
  $plugin_settings_tabs = array(
402
  'tab_seopress_advanced_advanced' => __( "Advanced", "wp-seopress" ),
403
+ 'tab_seopress_advanced_appearance' => __( "Appearance", "wp-seopress" ),
404
  );
405
 
406
  echo '<h2 class="nav-tab-wrapper">';
410
  echo '</h2>';
411
  ?>
412
  <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>
413
+ <div class="seopress-tab <?php if ($current_tab == 'tab_seopress_advanced_appearance') { echo 'active'; } ?>" id="tab_seopress_advanced_appearance"><?php do_settings_sections( 'seopress-settings-admin-advanced-appearance' ); ?></div>
414
  </div>
415
 
416
  <?php submit_button(); ?>
420
 
421
  function seopress_import_export_page(){
422
  $this->options = get_option( 'seopress_import_export_option_name' );
423
+ if (function_exists(seopress_admin_header)) {
424
+ echo seopress_admin_header();
425
+ }
426
  ?>
427
+ <div class="seopress-option">
428
+ <?php global $wp_version, $title;
429
+ $tag = version_compare( $wp_version, '4.4' ) >= 0 ? 'h1' : 'h2';
430
+ echo '<'.$tag.'><span class="dashicons dashicons-admin-settings"></span>'.$title.'</'.$tag.'>';
431
+ ?>
432
+ <div class="metabox-holder">
433
+ <div class="postbox">
434
+ <h3><span><?php _e( 'Export Settings', 'wp-seopress' ); ?></span></h3>
435
+ <div class="inside">
436
+ <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>
437
+ <form method="post">
438
+ <p><input type="hidden" name="seopress_action" value="export_settings" /></p>
439
+ <p>
440
+ <?php wp_nonce_field( 'seopress_export_nonce', 'seopress_export_nonce' ); ?>
441
+ <?php submit_button( __( 'Export', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
442
+ </p>
443
+ </form>
444
+ </div><!-- .inside -->
445
+ </div><!-- .postbox -->
446
+
447
+ <div class="postbox">
448
+ <h3><span><?php _e( 'Import Settings', 'wp-seopress' ); ?></span></h3>
449
+ <div class="inside">
450
+ <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>
451
+ <form method="post" enctype="multipart/form-data">
452
+ <p>
453
+ <input type="file" name="import_file"/>
454
+ </p>
455
+ <p>
456
+ <input type="hidden" name="seopress_action" value="import_settings" />
457
+ <?php wp_nonce_field( 'seopress_import_nonce', 'seopress_import_nonce' ); ?>
458
+ <?php submit_button( __( 'Import', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
459
+ </p>
460
+ </form>
461
+ </div><!-- .inside -->
462
+ </div><!-- .postbox -->
463
+
464
+ <div id="yoast-migration-tool" class="postbox">
465
+ <h3><span><?php _e( 'Import posts metadata from Yoast', 'wp-seopress' ); ?></span></h3>
466
+ <div class="inside">
467
+ <p><?php _e( 'By clicking Migrate, we\'ll import:', 'wp-seopress' ); ?></p>
468
+ <ul>
469
+ <li><?php _e('Title tags','wp-seopress'); ?></li>
470
+ <li><?php _e('Meta description','wp-seopress'); ?></li>
471
+ <li><?php _e('Facebook Open Graph tags (title, description and image thumbnail)','wp-seopress'); ?></li>
472
+ <li><?php _e('Twitter tags (title, description and image thumbnail)','wp-seopress'); ?></li>
473
+ <li><?php _e('Meta Robots (noindex, nofollow...)','wp-seopress'); ?></li>
474
+ <li><?php _e('Canonical URL','wp-seopress'); ?></li>
475
+ </ul>
476
+ <p style="color:red"><span class="dashicons dashicons-warning"></span> <?php _e( '<strong>WARNING:</strong> Migration will delete all SEOPress posts metadata', 'wp-seopress' ); ?></p>
477
+ <div id="seopress-yoast-migrate" class="button"><?php _e('Migrate now','wp-seopress'); ?></div>
478
+ <span class="spinner"></span>
479
+ <div class="log"></div>
480
+ </div><!-- .inside -->
481
+ </div><!-- .postbox -->
482
+
483
+ <div class="postbox">
484
+ <h3><span><?php _e( 'Reset All Settings', 'wp-seopress' ); ?></span></h3>
485
+ <div class="inside">
486
+ <p style="color:red"><span class="dashicons dashicons-warning"></span> <?php _e( '<strong>WARNING:</strong> Delete all options related to SEOPress in your database AND set settings to their default values.', 'wp-seopress' ); ?></p>
487
+ <form method="post" enctype="multipart/form-data">
488
+ <p>
489
+ <input type="hidden" name="seopress_action" value="reset_settings" />
490
+ <?php wp_nonce_field( 'seopress_reset_nonce', 'seopress_reset_nonce' ); ?>
491
+ <?php submit_button( __( 'Reset settings', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
492
+ </p>
493
+ </form>
494
+ </div><!-- .inside -->
495
+ </div><!-- .postbox -->
496
+ </div><!-- .metabox-holder -->
497
+ </div>
498
  <?php
499
  }
500
 
506
 
507
  // Set class property
508
  $this->options = get_option( 'seopress_option_name' );
509
+
510
+ echo seopress_admin_header();
511
  ?>
512
+ <div id="seopress-content">
513
+ <div id="seopress-notifications-center">
514
+ <h2><span class="dashicons dashicons-flag"></span><?php _e('Notifications center','wp-seopress'); ?></h2>
515
+ <?php if (is_plugin_active('wordpress-seo/wp-seo.php')) { ?>
516
+ <div class="seopress-alert">
517
+ <p>
518
+ <span class="dashicons dashicons-warning"></span>
519
+ <?php _e('We notice that you use Yoast SEO plugin. <br>Do you want to migrate all your posts metadata to SEOPress?','wp-seopress'); ?>
520
+ </p>
521
+ <a class="button-primary" href="<?php echo admin_url( 'admin.php?page=seopress-import-export#yoast-migration-tool' ); ?>"><?php _e('Migrate!','wp-seopress'); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
522
  </div>
523
+ <?php } ?>
524
+ <?php if (!is_ssl()) { ?>
525
+ <div class="seopress-alert">
526
+ <p>
527
+ <span class="dashicons dashicons-warning"></span>
528
+ <?php _e('Your site doesn\'t use an SSL certificate!','wp-seopress'); ?>
529
+ <span class="impact low"><?php _e('Low impact','wp-seopress'); ?></span>
530
+ </p>
531
+ <a class="button-primary" href="https://www.namecheap.com/?aff=105841" target="_blank"><?php _e('Buy an SSL!','wp-seopress'); ?></a>
532
+ </div>
533
+ <?php } ?>
534
+ <?php if (get_option('blog_public') !='1') { ?>
535
+ <div class="seopress-alert">
536
+ <p>
537
+ <span class="dashicons dashicons-warning"></span>
538
+ <?php _e('Your site is not visible to Search Engines!','wp-seopress'); ?>
539
+ <span class="impact high"><?php _e('High impact','wp-seopress'); ?></span>
540
+ </p>
541
+ <a class="button-primary" href="<?php echo admin_url( 'options-reading.php' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
542
+ </div>
543
+ <?php } ?>
544
+ <?php if (get_option('blogname') =='') { ?>
545
+ <div class="seopress-alert">
546
+ <p>
547
+ <span class="dashicons dashicons-warning"></span>
548
+ <?php _e('Your site title is empty!','wp-seopress'); ?>
549
+ <span class="impact high"><?php _e('High impact','wp-seopress'); ?></span>
550
+ </p>
551
+ <a class="button-primary" href="<?php echo admin_url( 'options-general.php' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
552
+ </div>
553
+ <?php } ?>
554
+ <?php if (get_option('permalink_structure') =='') { ?>
555
+ <div class="seopress-alert">
556
+ <p>
557
+ <span class="dashicons dashicons-warning"></span>
558
+ <?php _e('Your permalinks are not SEO Friendly! Enable pretty permalinks to fix this.','wp-seopress'); ?>
559
+ <span class="impact high"><?php _e('High impact','wp-seopress'); ?></span>
560
+ </p>
561
+ <a class="button-primary" href="<?php echo admin_url( 'options-permalink.php' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
562
+ </div>
563
+ <?php } ?>
564
+ <?php if (seopress_xml_sitemap_general_enable_option() !='1') { ?>
565
+ <div class="seopress-alert">
566
+ <p>
567
+ <span class="dashicons dashicons-warning"></span>
568
+ <?php _e('You don\'t have an XML Sitemap!','wp-seopress'); ?>
569
+ <span class="impact medium"><?php _e('Medium impact','wp-seopress'); ?></span>
570
+ </p>
571
+ <a class="button-primary" href="<?php echo admin_url( 'admin.php?page=seopress-xml-sitemap' ); ?>"><?php _e('Fix this!','wp-seopress'); ?></a>
572
+ </div>
573
+ <?php } ?>
574
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
575
  <div class="seopress-page-list">
576
+ <div id="seopress-notice-save" style="display: none"><span class="dashicons dashicons-yes"></span><span class="html"></span></div>
577
  <div class="seopress-feature">
578
  <div class="img-tool">
579
  <span class="dashicons dashicons-editor-table"></span>
580
  </div>
581
  <span class="inner">
582
+ <h3><?php _e('Titles & metas','wp-seopress'); ?></h3>
583
  <p><?php _e('Manage all your titles & metas','wp-seopress'); ?></p>
584
  <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-titles' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
585
+ <?php
586
+ if(seopress_get_toggle_titles_option()=='1') {
587
+ $seopress_get_toggle_titles_option = '"1"';
588
+ } else {
589
+ $seopress_get_toggle_titles_option = '"0"';
590
+ }
591
+ ?>
592
+ <input type="checkbox" name="toggle-titles" id="toggle-titles" class="toggle" data-toggle=<?php echo $seopress_get_toggle_titles_option; ?>>
593
+ <label for="toggle-titles"></label>
594
+ <?php
595
+ if(seopress_get_toggle_titles_option()=='1') {
596
+ echo '<span id="titles-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
597
+ echo '<span id="titles-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
598
+ } else {
599
+ echo '<span id="titles-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
600
+ echo '<span id="titles-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
601
+ }
602
+ ?>
603
+ <a href="https://www.seopress.org/support/guides/manage-titles-meta-descriptions/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
604
  </span>
605
  </div>
606
  <div class="seopress-feature">
608
  <span class="dashicons dashicons-media-spreadsheet"></span>
609
  </div>
610
  <span class="inner">
611
+ <h3><?php _e('XML Sitemap','wp-seopress'); ?></h3>
612
  <p><?php _e('Manage your XML Sitemap','wp-seopress'); ?></p>
613
  <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-xml-sitemap' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
614
+ <?php
615
+ if(seopress_get_toggle_xml_sitemap_option()=='1') {
616
+ $seopress_get_toggle_xml_sitemap_option = '"1"';
617
+ } else {
618
+ $seopress_get_toggle_xml_sitemap_option = '"0"';
619
+ }
620
+ ?>
621
+ <input type="checkbox" name="toggle-xml-sitemap" id="toggle-xml-sitemap" class="toggle" data-toggle=<?php echo $seopress_get_toggle_xml_sitemap_option; ?>>
622
+ <label for="toggle-xml-sitemap"></label>
623
+ <?php
624
+ if(seopress_get_toggle_xml_sitemap_option()=='1') {
625
+ echo '<span id="sitemap-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
626
+ echo '<span id="sitemap-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
627
+ } else {
628
+ echo '<span id="sitemap-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
629
+ echo '<span id="sitemap-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
630
+ }
631
+ ?>
632
+ <a href="https://www.seopress.org/support/guides/enable-xml-sitemaps/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
633
  </span>
634
  </div>
635
  <div class="seopress-feature">
637
  <span class="dashicons dashicons-share"></span>
638
  </div>
639
  <span class="inner">
640
+ <h3><?php _e('Social','wp-seopress'); ?></h3>
641
  <p><?php _e('Open Graph, Twitter Card, Google Knowledge Graph and more...','wp-seopress'); ?></p>
642
  <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-social' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
643
+ <?php
644
+ if(seopress_get_toggle_social_option()=='1') {
645
+ $seopress_get_toggle_social_option = '"1"';
646
+ } else {
647
+ $seopress_get_toggle_social_option = '"0"';
648
+ }
649
+ ?>
650
+ <input type="checkbox" name="toggle-social" id="toggle-social" class="toggle" data-toggle=<?php echo $seopress_get_toggle_social_option; ?>>
651
+ <label for="toggle-social"></label>
652
+ <?php
653
+ if(seopress_get_toggle_social_option()=='1') {
654
+ echo '<span id="social-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
655
+ echo '<span id="social-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
656
+ } else {
657
+ echo '<span id="social-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
658
+ echo '<span id="social-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
659
+ }
660
+ ?>
661
+ <a href="https://www.seopress.org/support/guides/enable-google-knowledge-graph/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
662
+ </span>
663
+ </div>
664
+ <div class="seopress-feature">
665
+ <div class="img-tool">
666
+ <span class="dashicons dashicons-chart-area"></span>
667
+ </div>
668
+ <span class="inner">
669
+ <h3><?php _e('Google Analytics','wp-seopress'); ?></h3>
670
+ <p><?php _e('Track everything about your visitors with Google Analytics','wp-seopress'); ?></p>
671
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-google-analytics' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
672
+ <?php
673
+ if(seopress_get_toggle_google_analytics_option()=='1') {
674
+ $seopress_get_toggle_google_analytics_option = '"1"';
675
+ } else {
676
+ $seopress_get_toggle_google_analytics_option = '"0"';
677
+ }
678
+ ?>
679
+ <input type="checkbox" name="toggle-google-analytics" id="toggle-google-analytics" class="toggle" data-toggle=<?php echo $seopress_get_toggle_google_analytics_option; ?>>
680
+ <label for="toggle-google-analytics"></label>
681
+ <?php
682
+ if(seopress_get_toggle_google_analytics_option()=='1') {
683
+ echo '<span id="analytics-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
684
+ echo '<span id="analytics-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
685
+ } else {
686
+ echo '<span id="analytics-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
687
+ echo '<span id="analytics-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
688
+ }
689
+ ?>
690
+ <a href="https://www.seopress.org/support/guides/google-analytics/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
691
  </span>
692
  </div>
693
  <div class="seopress-feature">
695
  <span class="dashicons dashicons-admin-tools"></span>
696
  </div>
697
  <span class="inner">
698
+ <h3><?php _e('Advanced','wp-seopress'); ?></h3>
699
  <p><?php _e('Advanced SEO options for advanced users!','wp-seopress'); ?></p>
700
  <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-advanced' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
701
+ <?php
702
+ if(seopress_get_toggle_advanced_option()=='1') {
703
+ $seopress_get_toggle_advanced_option = '"1"';
704
+ } else {
705
+ $seopress_get_toggle_advanced_option = '"0"';
706
+ }
707
+ ?>
708
+ <input type="checkbox" name="toggle-advanced" id="toggle-advanced" class="toggle" data-toggle=<?php echo $seopress_get_toggle_advanced_option; ?>>
709
+ <label for="toggle-advanced"></label>
710
+ <?php
711
+ if(seopress_get_toggle_advanced_option()=='1') {
712
+ echo '<span id="advanced-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
713
+ echo '<span id="advanced-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
714
+ } else {
715
+ echo '<span id="advanced-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
716
+ echo '<span id="advanced-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
717
+ }
718
+ ?>
719
  </span>
720
  </div>
721
+ <?php if (is_plugin_active('wp-seopress-pro/seopress-pro.php')) { ?>
722
+ <div class="seopress-feature">
723
+ <div class="img-tool">
724
+ <span class="dashicons dashicons-cart"></span>
725
+ </div>
726
+ <span class="inner">
727
+ <h3><?php _e('WooCommerce','wp-seopress'); ?></h3>
728
+ <p><?php _e('Improve WooCommerce SEO','wp-seopress'); ?></p>
729
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_woocommerce$1' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
730
+ <?php
731
+ if(seopress_get_toggle_woocommerce_option()=='1') {
732
+ $seopress_get_toggle_woocommerce_option = '"1"';
733
+ } else {
734
+ $seopress_get_toggle_woocommerce_option = '"0"';
735
+ }
736
+ ?>
737
+ <input type="checkbox" name="toggle-woocommerce" id="toggle-woocommerce" class="toggle" data-toggle=<?php echo $seopress_get_toggle_woocommerce_option; ?>>
738
+ <label for="toggle-woocommerce"></label>
739
+ <?php
740
+ if(seopress_get_toggle_woocommerce_option()=='1') {
741
+ echo '<span id="woocommerce-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
742
+ echo '<span id="woocommerce-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
743
+ } else {
744
+ echo '<span id="woocommerce-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
745
+ echo '<span id="woocommerce-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
746
+ }
747
+ ?>
748
+ </span>
749
+ </div>
750
+ <div class="seopress-feature">
751
+ <div class="img-tool">
752
+ <span class="dashicons dashicons-feedback"></span>
753
+ </div>
754
+ <span class="inner">
755
+ <h3><?php _e('Breadcrumbs','wp-seopress'); ?></h3>
756
+ <p><?php _e('Enable Breadcrumbs for your theme and improve your SEO in SERPs','wp-seopress'); ?></p>
757
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_breadcrumbs$2' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
758
+ <?php
759
+ if(seopress_get_toggle_breadcrumbs_option()=='1') {
760
+ $seopress_get_toggle_breadcrumbs_option = '"1"';
761
+ } else {
762
+ $seopress_get_toggle_breadcrumbs_option = '"0"';
763
+ }
764
+ ?>
765
+ <input type="checkbox" name="toggle-breadcrumbs" id="toggle-breadcrumbs" class="toggle" data-toggle=<?php echo $seopress_get_toggle_breadcrumbs_option; ?>>
766
+ <label for="toggle-breadcrumbs"></label>
767
+ <?php
768
+ if(seopress_get_toggle_breadcrumbs_option()=='1') {
769
+ echo '<span id="breadcrumbs-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
770
+ echo '<span id="breadcrumbs-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
771
+ } else {
772
+ echo '<span id="breadcrumbs-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
773
+ echo '<span id="breadcrumbs-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
774
+ }
775
+ ?>
776
+ <a href="https://www.seopress.org/support/guides/enable-breadcrumbs/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
777
+ </span>
778
+ </div>
779
+ <div class="seopress-feature">
780
+ <div class="img-tool">
781
+ <span class="dashicons dashicons-performance"></span>
782
+ </div>
783
+ <span class="inner">
784
+ <h3><?php _e('Google Page Speed','wp-seopress'); ?></h3>
785
+ <p><?php _e('Track your website performance to improve SEO with Google Page Speed','wp-seopress'); ?></p>
786
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_page_speed$3' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
787
+ <a href="http://www.seopress.org/support/guides/analyse-site-google-page-speed/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
788
+ </span>
789
+ </div>
790
+ <div class="seopress-feature">
791
+ <div class="img-tool">
792
+ <span class="dashicons dashicons-media-text"></span>
793
+ </div>
794
+ <span class="inner">
795
+ <h3><?php _e('Robots','wp-seopress'); ?></h3>
796
+ <p><?php _e('Edit your robots.txt file','wp-seopress'); ?></p>
797
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_robots$4' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
798
+ <?php
799
+ if(seopress_get_toggle_robots_option()=='1') {
800
+ $seopress_get_toggle_robots_option = '"1"';
801
+ } else {
802
+ $seopress_get_toggle_robots_option = '"0"';
803
+ }
804
+ ?>
805
+ <input type="checkbox" name="toggle-robots" id="toggle-robots" class="toggle" data-toggle=<?php echo $seopress_get_toggle_robots_option; ?>>
806
+ <label for="toggle-robots"></label>
807
+ <?php
808
+ if(seopress_get_toggle_robots_option()=='1') {
809
+ echo '<span id="robots-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
810
+ echo '<span id="robots-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
811
+ } else {
812
+ echo '<span id="robots-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
813
+ echo '<span id="robots-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
814
+ }
815
+ ?>
816
+ <a href="https://www.seopress.org/support/guides/edit-robots-txt-file/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
817
+ </span>
818
+ </div>
819
+ <div class="seopress-feature">
820
+ <div class="img-tool">
821
+ <span class="dashicons dashicons-admin-post"></span>
822
+ </div>
823
+ <span class="inner">
824
+ <h3><?php _e('Google News Sitemap','wp-seopress'); ?></h3>
825
+ <p><?php _e('Optimize your site for Google News','wp-seopress'); ?></p>
826
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_news$5' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
827
+ <?php
828
+ if(seopress_get_toggle_news_option()=='1') {
829
+ $seopress_get_toggle_news_option = '"1"';
830
+ } else {
831
+ $seopress_get_toggle_news_option = '"0"';
832
+ }
833
+ ?>
834
+ <input type="checkbox" name="toggle-news" id="toggle-news" class="toggle" data-toggle=<?php echo $seopress_get_toggle_news_option; ?>>
835
+ <label for="toggle-news"></label>
836
+ <?php
837
+ if(seopress_get_toggle_news_option()=='1') {
838
+ echo '<span id="news-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
839
+ echo '<span id="news-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
840
+ } else {
841
+ echo '<span id="news-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
842
+ echo '<span id="news-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
843
+ }
844
+ ?>
845
+ </span>
846
+ </div>
847
+ <div class="seopress-feature">
848
+ <div class="img-tool">
849
+ <span class="dashicons dashicons-admin-links"></span>
850
+ </div>
851
+ <span class="inner">
852
+ <h3><?php _e('Redirections','wp-seopress'); ?></h3>
853
+ <p><?php _e('Monitor 404, create 301, 302 and 307 redirections','wp-seopress'); ?></p>
854
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_404$6' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
855
+ <?php
856
+ if(seopress_get_toggle_404_option()=='1') {
857
+ $seopress_get_toggle_404_option = '"1"';
858
+ } else {
859
+ $seopress_get_toggle_404_option = '"0"';
860
+ }
861
+ ?>
862
+ <input type="checkbox" name="toggle-404" id="toggle-404" class="toggle" data-toggle=<?php echo $seopress_get_toggle_404_option; ?>>
863
+ <label for="toggle-404"></label>
864
+ <?php
865
+ if(seopress_get_toggle_404_option()=='1') {
866
+ echo '<span id="redirections-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
867
+ echo '<span id="redirections-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
868
+ } else {
869
+ echo '<span id="redirections-state-default" class="feature-state"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to enable this feature','wp-seopress').'</span>';
870
+ echo '<span id="redirections-state" class="feature-state feature-state-off"><span class="dashicons dashicons-arrow-left-alt"></span>'.__('Click to disable this feature','wp-seopress').'</span>';
871
+ }
872
+ ?>
873
+ <a href="http://www.seopress.org/support/guides/redirections/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
874
+ </span>
875
+ </div>
876
+ <div class="seopress-feature">
877
+ <div class="img-tool">
878
+ <span class="dashicons dashicons-media-text"></span>
879
+ </div>
880
+ <span class="inner">
881
+ <h3><?php _e('htaccess','wp-seopress'); ?></h3>
882
+ <p><?php _e('Edit your htaccess file.','wp-seopress'); ?></p>
883
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-pro-page#tab=tab_seopress_htaccess$7' ); ?>"><?php _e('Manage','wp-seopress'); ?>
884
+ </a>
885
+ </span>
886
+ </div>
887
+ <?php } ?>
888
  <div class="seopress-feature">
889
  <div class="img-tool">
890
  <span class="dashicons dashicons-admin-settings"></span>
891
  </div>
892
  <span class="inner">
893
+ <h3><?php _e('Import / Export / Reset','wp-seopress'); ?></h3>
894
  <p><?php _e('Import / export SEOPress settings from site to site.','wp-seopress'); ?></p>
895
  <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-import-export' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
896
+ <a href="https://www.seopress.org/support/guides/export-import-reset-settings/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
897
  </span>
898
  </div>
899
+ <?php if (is_plugin_active('wp-seopress-pro/seopress-pro.php')) { ?>
900
+ <div class="seopress-feature">
901
+ <div class="img-tool">
902
+ <span class="dashicons dashicons-admin-network"></span>
903
+ </div>
904
+ <span class="inner">
905
+ <h3><?php _e('License','wp-seopress'); ?></h3>
906
+ <p><?php _e('Edit your SEOPress license key.','wp-seopress'); ?></p>
907
+ <a class="button-secondary" href="<?php echo admin_url( 'admin.php?page=seopress-license' ); ?>"><?php _e('Manage','wp-seopress'); ?></a>
908
+ <a href="https://www.seopress.org/support/guides/activate-seopress-pro-license/" target="_blank" class="seopress-doc"><span class="dashicons dashicons-editor-help"></span></a>
909
+ </span>
910
+ </div>
911
+ <?php } ?>
912
  </div>
913
  </div>
914
  <?php
941
  'seopress_social_option_group', // Option group
942
  'seopress_social_option_name', // Option name
943
  array( $this, 'sanitize' ) // Sanitize
944
+ );
945
+
946
+ register_setting(
947
+ 'seopress_google_analytics_option_group', // Option group
948
+ 'seopress_google_analytics_option_name', // Option name
949
+ array( $this, 'sanitize' ) // Sanitize
950
  );
951
 
952
  register_setting(
1003
  'seopress_setting_section_titles_single' // Section
1004
  );
1005
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1006
  //Archives SECTION=========================================================================
1007
  add_settings_section(
1008
  'seopress_setting_section_titles_archives', // ID
1012
  'seopress-settings-admin-titles-archives' // Page
1013
  );
1014
 
1015
+ add_settings_field(
1016
+ 'seopress_titles_archives_titles', // ID
1017
+ '',
1018
+ array( $this, 'seopress_titles_archives_titles_callback' ), // Callback
1019
+ 'seopress-settings-admin-titles-archives', // Page
1020
+ 'seopress_setting_section_titles_archives' // Section
1021
+ );
1022
+
1023
  add_settings_field(
1024
  'seopress_titles_archives_author_title', // ID
1025
  '',
1108
  array( $this, 'seopress_titles_archives_404_desc_callback' ), // Callback
1109
  'seopress-settings-admin-titles-archives', // Page
1110
  'seopress_setting_section_titles_archives' // Section
1111
+ );
1112
 
1113
+ //Taxonomies SECTION=======================================================================
1114
+ add_settings_section(
1115
+ 'seopress_setting_section_titles_tax', // ID
1116
  '',
1117
+ //__("Taxonomies","wp-seopress"), // Title
1118
+ array( $this, 'print_section_info_tax' ), // Callback
1119
+ 'seopress-settings-admin-titles-tax' // Page
1120
+ );
 
1121
 
1122
  add_settings_field(
1123
+ 'seopress_titles_tax_titles', // ID
1124
  '',
1125
+ array( $this, 'seopress_titles_tax_titles_callback' ), // Callback
1126
+ 'seopress-settings-admin-titles-tax', // Page
1127
+ 'seopress_setting_section_titles_tax' // Section
 
1128
  );
1129
 
1130
  //Advanced SECTION=========================================================================
1252
 
1253
  add_settings_field(
1254
  'seopress_social_knowledge_name', // ID
1255
+ __("Your name / organization","wp-seopress"), // Title
1256
  array( $this, 'seopress_social_knowledge_name_callback' ), // Callback
1257
  'seopress-settings-admin-social-knowledge', // Page
1258
  'seopress_setting_section_social_knowledge' // Section
1428
  'seopress-settings-admin-social-twitter', // Page
1429
  'seopress_setting_section_social_twitter' // Section
1430
  );
1431
+
1432
+ //Google Analytics Enable SECTION==========================================================
1433
+ add_settings_section(
1434
+ 'seopress_setting_section_google_analytics_enable', // ID
1435
+ '',
1436
+ //__("Google Analytics","wp-seopress"), // Title
1437
+ array( $this, 'print_section_info_google_analytics_enable' ), // Callback
1438
+ 'seopress-settings-admin-google-analytics-enable' // Page
1439
+ );
1440
+
1441
+ add_settings_field(
1442
+ 'seopress_google_analytics_enable', // ID
1443
+ __("Enable Google Analytics tracking","wp-seopress"), // Title
1444
+ array( $this, 'seopress_google_analytics_enable_callback' ), // Callback
1445
+ 'seopress-settings-admin-google-analytics-enable', // Page
1446
+ 'seopress_setting_section_google_analytics_enable' // Section
1447
+ );
1448
+
1449
+ add_settings_field(
1450
+ 'seopress_google_analytics_ua', // ID
1451
+ __("Enter your tracking ID","wp-seopress"), // Title
1452
+ array( $this, 'seopress_google_analytics_ua_callback' ), // Callback
1453
+ 'seopress-settings-admin-google-analytics-enable', // Page
1454
+ 'seopress_setting_section_google_analytics_enable' // Section
1455
+ );
1456
+
1457
+ add_settings_field(
1458
+ 'seopress_google_analytics_roles', // ID
1459
+ __("Exclude user roles from tracking","wp-seopress"), // Title
1460
+ array( $this, 'seopress_google_analytics_roles_callback' ), // Callback
1461
+ 'seopress-settings-admin-google-analytics-enable', // Page
1462
+ 'seopress_setting_section_google_analytics_enable' // Section
1463
+ );
1464
+
1465
+ //Google Analytics Tracking SECTION========================================================
1466
+
1467
+ add_settings_section(
1468
+ 'seopress_setting_section_google_analytics_features', // ID
1469
+ '',
1470
+ //__("Google Analytics","wp-seopress"), // Title
1471
+ array( $this, 'print_section_info_google_analytics_features' ), // Callback
1472
+ 'seopress-settings-admin-google-analytics-features' // Page
1473
+ );
1474
+
1475
+ add_settings_field(
1476
+ 'seopress_google_analytics_remarketing', // ID
1477
+ __("Enable remarketing, demographics and interest reporting","wp-seopress"), // Title
1478
+ array( $this, 'seopress_google_analytics_remarketing_callback' ), // Callback
1479
+ 'seopress-settings-admin-google-analytics-features', // Page
1480
+ 'seopress_setting_section_google_analytics_features' // Section
1481
+ );
1482
+
1483
+ add_settings_field(
1484
+ 'seopress_google_analytics_ip_anonymization', // ID
1485
+ __("Enable IP Anonymization","wp-seopress"), // Title
1486
+ array( $this, 'seopress_google_analytics_ip_anonymization_callback' ), // Callback
1487
+ 'seopress-settings-admin-google-analytics-features', // Page
1488
+ 'seopress_setting_section_google_analytics_features' // Section
1489
+ );
1490
+
1491
+ add_settings_field(
1492
+ 'seopress_google_analytics_link_attribution', // ID
1493
+ __("Enhanced Link Attribution","wp-seopress"), // Title
1494
+ array( $this, 'seopress_google_analytics_link_attribution_callback' ), // Callback
1495
+ 'seopress-settings-admin-google-analytics-features', // Page
1496
+ 'seopress_setting_section_google_analytics_features' // Section
1497
+ );
1498
+
1499
+ add_settings_field(
1500
+ 'seopress_google_analytics_cross_domain_enable', // ID
1501
+ __("Enable cross-domain tracking","wp-seopress"), // Title
1502
+ array( $this, 'seopress_google_analytics_cross_enable_callback' ), // Callback
1503
+ 'seopress-settings-admin-google-analytics-features', // Page
1504
+ 'seopress_setting_section_google_analytics_features' // Section
1505
+ );
1506
+
1507
+ add_settings_field(
1508
+ 'seopress_google_analytics_cross_domain', // ID
1509
+ __("Cross domains","wp-seopress"), // Title
1510
+ array( $this, 'seopress_google_analytics_cross_domain_callback' ), // Callback
1511
+ 'seopress-settings-admin-google-analytics-features', // Page
1512
+ 'seopress_setting_section_google_analytics_features' // Section
1513
+ );
1514
+
1515
+ //Google Analytics Custom Dimensions SECTION===============================================
1516
+
1517
+ add_settings_section(
1518
+ 'seopress_setting_section_google_analytics_custom_dimensions', // ID
1519
+ '',
1520
+ //__("Google Analytics","wp-seopress"), // Title
1521
+ array( $this, 'print_section_info_google_analytics_custom_dimensions' ), // Callback
1522
+ 'seopress-settings-admin-google-analytics-custom-dimensions' // Page
1523
+ );
1524
+
1525
+ add_settings_field(
1526
+ 'seopress_google_analytics_cd_author', // ID
1527
+ __("Track Authors","wp-seopress"), // Title
1528
+ array( $this, 'seopress_google_analytics_cd_author_callback' ), // Callback
1529
+ 'seopress-settings-admin-google-analytics-custom-dimensions', // Page
1530
+ 'seopress_setting_section_google_analytics_custom_dimensions' // Section
1531
+ );
1532
+
1533
+ add_settings_field(
1534
+ 'seopress_google_analytics_cd_category', // ID
1535
+ __("Track Categories","wp-seopress"), // Title
1536
+ array( $this, 'seopress_google_analytics_cd_category_callback' ), // Callback
1537
+ 'seopress-settings-admin-google-analytics-custom-dimensions', // Page
1538
+ 'seopress_setting_section_google_analytics_custom_dimensions' // Section
1539
+ );
1540
+
1541
+ add_settings_field(
1542
+ 'seopress_google_analytics_cd_tag', // ID
1543
+ __("Track Tags","wp-seopress"), // Title
1544
+ array( $this, 'seopress_google_analytics_cd_tag_callback' ), // Callback
1545
+ 'seopress-settings-admin-google-analytics-custom-dimensions', // Page
1546
+ 'seopress_setting_section_google_analytics_custom_dimensions' // Section
1547
+ );
1548
+
1549
+ add_settings_field(
1550
+ 'seopress_google_analytics_cd_post_type', // ID
1551
+ __("Track Post Types","wp-seopress"), // Title
1552
+ array( $this, 'seopress_google_analytics_cd_post_type_callback' ), // Callback
1553
+ 'seopress-settings-admin-google-analytics-custom-dimensions', // Page
1554
+ 'seopress_setting_section_google_analytics_custom_dimensions' // Section
1555
+ );
1556
+
1557
+ add_settings_field(
1558
+ 'seopress_google_analytics_cd_logged_in_user', // ID
1559
+ __("Track Logged In Users","wp-seopress"), // Title
1560
+ array( $this, 'seopress_google_analytics_cd_logged_in_user_callback' ), // Callback
1561
+ 'seopress-settings-admin-google-analytics-custom-dimensions', // Page
1562
+ 'seopress_setting_section_google_analytics_custom_dimensions' // Section
1563
+ );
1564
+
1565
  //Advanced SECTION=========================================================================
1566
  add_settings_section(
1567
  'seopress_setting_section_advanced_advanced', // ID
1573
 
1574
  add_settings_field(
1575
  'seopress_advanced_advanced_attachments', // ID
1576
+ __("Redirect attachment pages to post parent","wp-seopress"), // Title
1577
  array( $this, 'seopress_advanced_advanced_attachments_callback' ), // Callback
1578
  'seopress-settings-admin-advanced-advanced', // Page
1579
  'seopress_setting_section_advanced_advanced' // Section
1617
  array( $this, 'seopress_advanced_advanced_yandex_callback' ), // Callback
1618
  'seopress-settings-admin-advanced-advanced', // Page
1619
  'seopress_setting_section_advanced_advanced' // Section
1620
+ );
1621
+
1622
+ //Appearance SECTION=======================================================================
1623
+ add_settings_section(
1624
+ 'seopress_setting_section_advanced_appearance', // ID
1625
+ '',
1626
+ //__("Appearance","wp-seopress"), // Title
1627
+ array( $this, 'print_section_info_advanced_appearance' ), // Callback
1628
+ 'seopress-settings-admin-advanced-appearance' // Page
1629
+ );
1630
+
1631
+ add_settings_field(
1632
+ 'seopress_advanced_appearance_adminbar', // ID
1633
+ __("SEOPress in admin bar","wp-seopress"), // Title
1634
+ array( $this, 'seopress_advanced_appearance_adminbar_callback' ), // Callback
1635
+ 'seopress-settings-admin-advanced-appearance', // Page
1636
+ 'seopress_setting_section_advanced_appearance' // Section
1637
+ );
1638
+
1639
+ add_settings_field(
1640
+ 'seopress_advanced_appearance_title_col', // ID
1641
+ __("Show Title tag column in post types","wp-seopress"), // Title
1642
+ array( $this, 'seopress_advanced_appearance_title_col_callback' ), // Callback
1643
+ 'seopress-settings-admin-advanced-appearance', // Page
1644
+ 'seopress_setting_section_advanced_appearance' // Section
1645
+ );
1646
+
1647
+ add_settings_field(
1648
+ 'seopress_advanced_appearance_meta_desc_col', // ID
1649
+ __("Show Meta description column in post types","wp-seopress"), // Title
1650
+ array( $this, 'seopress_advanced_appearance_meta_desc_col_callback' ), // Callback
1651
+ 'seopress-settings-admin-advanced-appearance', // Page
1652
+ 'seopress_setting_section_advanced_appearance' // Section
1653
+ );
1654
  }
1655
 
1656
  /**
1661
  public function sanitize( $input )
1662
  {
1663
 
1664
+ $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_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', 'seopress_google_analytics_ua' );
1665
 
1666
  $seopress_sanitize_site_verification = array('seopress_advanced_advanced_google', 'seopress_advanced_advanced_bing', 'seopress_advanced_advanced_pinterest', 'seopress_advanced_advanced_yandex' );
1667
 
1721
  echo __('Only the last 1000 items are listed in Sitemaps for performances issues.', 'wp-seopress');
1722
  echo '<br>';
1723
  echo '<br>';
1724
+ echo '<a href="'.home_url().'/sitemaps.xml" target="_blank" class="button">'.__('View your sitemap','wp-seopress').'</a>';
1725
  echo '&nbsp;';
1726
  echo '<a href="http://www.google.com/ping?sitemap='.home_url().'/sitemaps/" target="_blank" class="button">'.__('Ping Google manually','wp-seopress').'</a>';
1727
  echo '&nbsp;';
1757
  public function print_section_info_social_twitter()
1758
  {
1759
  print __('<p>Manage your Twitter card</p>', 'wp-seopress');
1760
+ }
1761
 
1762
+ public function print_section_info_google_analytics_enable()
1763
+ {
1764
+ print __('<p>Link your Google Analytics to your website</p>', 'wp-seopress');
1765
+ }
1766
+
1767
+ public function print_section_info_google_analytics_features()
1768
+ {
1769
+ print __('<p>Configure your Google Analytics tracking code</p>', 'wp-seopress');
1770
+ }
1771
+
1772
+ public function print_section_info_google_analytics_custom_dimensions()
1773
+ {
1774
+ print __('<p>Configure your Google Analytics custom dimensions</p>', 'wp-seopress');
1775
+ }
1776
+
1777
+ public function print_section_info_advanced_advanced()
1778
  {
1779
  print __('<p>Advanced SEO options</p>', 'wp-seopress');
1780
+ }
1781
+
1782
+ public function print_section_info_advanced_appearance()
1783
+ {
1784
+ print __('<p>Customize SEOPress to fit your needs</p>', 'wp-seopress');
1785
  }
1786
 
1787
  /**
1792
  public function seopress_titles_home_site_title_callback()
1793
  {
1794
  printf(
1795
+ '<input type="text" id="seopress_titles_home_site_title" name="seopress_titles_option_name[seopress_titles_home_site_title]" placeholder="'.__('My awesome website','wp-seopress').'" value="%s"/>',
1796
+ esc_html( $this->options['seopress_titles_home_site_title'])
1797
+ );
1798
+ echo '<div class="wrap-tags"><span id="seopress-tag-site-title" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
1799
+ echo '<span id="seopress-tag-site-desc" data-tag="%%tagline%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Tagline','wp-seopress').'</span>';
1800
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
1801
  }
1802
 
1803
  public function seopress_titles_home_site_desc_callback()
1804
  {
1805
  printf(
1806
+ '<textarea id="seopress_titles_home_site_desc" name="seopress_titles_option_name[seopress_titles_home_site_desc]" placeholder="'.__('This is a cool website about Wookiees','wp-seopress').'">%s</textarea>',
1807
  esc_html( $this->options['seopress_titles_home_site_desc'])
1808
 
1809
  );
1810
+ echo '<div class="wrap-tags"><span id="seopress-tag-meta-desc" data-tag="%%tagline%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Tagline','wp-seopress').'</span>';
1811
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
1812
  }
1813
 
1814
  //Single CPT
1824
  _e('Title template','wp-seopress');
1825
  echo "<br/>";
1826
 
1827
+ echo "<script>
1828
+ jQuery(document).ready(function($) {
1829
+ jQuery('#seopress-tag-single-title-".$seopress_cpt_key."').click(function() {
1830
+ jQuery('#seopress_titles_single_titles_".$seopress_cpt_key."').val(jQuery('#seopress_titles_single_titles_".$seopress_cpt_key."').val() + ' ' + jQuery('#seopress-tag-single-title-".$seopress_cpt_key."').attr('data-tag'));
1831
+ });
1832
+ jQuery('#seopress-tag-single-sitetitle-".$seopress_cpt_key."').click(function() {
1833
+ jQuery('#seopress_titles_single_titles_".$seopress_cpt_key."').val(jQuery('#seopress_titles_single_titles_".$seopress_cpt_key."').val() + ' ' + jQuery('#seopress-tag-single-sitetitle-".$seopress_cpt_key."').attr('data-tag'));
1834
+ });
1835
+ });
1836
+ </script>";
1837
+
1838
  printf(
1839
+ '<input type="text" id="seopress_titles_single_titles_'.$seopress_cpt_key.'" name="seopress_titles_option_name[seopress_titles_single_titles]['.$seopress_cpt_key.'][title]" value="%s"/>',
1840
  esc_html( $this->options['seopress_titles_single_titles'][$seopress_cpt_key]['title'])
1841
  );
1842
 
1843
+ echo '<div class="wrap-tags"><span id="seopress-tag-single-title-'.$seopress_cpt_key.'" data-tag="%%post_title%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Post Title','wp-seopress').'</span>';
1844
+
1845
+ echo '<span id="seopress-tag-single-sitetitle-'.$seopress_cpt_key.'" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
1846
+
1847
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
1848
+
1849
  echo '</div>';
1850
 
1851
  //Single Meta Description CPT
1933
  _e('Title template','wp-seopress');
1934
  echo "<br/>";
1935
 
1936
+ echo "<script>
1937
+ jQuery(document).ready(function($) {
1938
+ jQuery('#seopress-tag-tax-title-".$seopress_tax_key."').click(function() {
1939
+ jQuery('#seopress_titles_tax_titles_".$seopress_tax_key."').val(jQuery('#seopress_titles_tax_titles_".$seopress_tax_key."').val() + ' ' + jQuery('#seopress-tag-tax-title-".$seopress_tax_key."').attr('data-tag'));
1940
+ });
1941
+ jQuery('#seopress-tag-tax-sitetitle-".$seopress_tax_key."').click(function() {
1942
+ jQuery('#seopress_titles_tax_titles_".$seopress_tax_key."').val(jQuery('#seopress_titles_tax_titles_".$seopress_tax_key."').val() + ' ' + jQuery('#seopress-tag-tax-sitetitle-".$seopress_tax_key."').attr('data-tag'));
1943
+ });
1944
+ });
1945
+ </script>";
1946
+
1947
  printf(
1948
+ '<input type="text" id="seopress_titles_tax_titles_'.$seopress_tax_key.'" name="seopress_titles_option_name[seopress_titles_tax_titles]['.$seopress_tax_key.'][title]" value="%s"/>',
1949
  esc_html( $this->options['seopress_titles_tax_titles'][$seopress_tax_key]['title'])
1950
  );
1951
 
1952
+ if ($seopress_tax_key =='category') {
1953
+ echo '<div class="wrap-tags"><span id="seopress-tag-tax-title-'.$seopress_tax_key.'" data-tag="%%_category_title%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Category Title','wp-seopress').'</span>';
1954
+ } elseif ($seopress_tax_key =='post_tag') {
1955
+ echo '<div class="wrap-tags"><span id="seopress-tag-tax-title-'.$seopress_tax_key.'" data-tag="%%tag_title%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Tag Title','wp-seopress').'</span>';
1956
+ } else {
1957
+ echo '<div class="wrap-tags"><span id="seopress-tag-tax-title-'.$seopress_tax_key.'" data-tag="%%term_title%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Term Title','wp-seopress').'</span>';
1958
+ }
1959
+
1960
+ echo '<span id="seopress-tag-tax-sitetitle-'.$seopress_tax_key.'" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
1961
+
1962
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
1963
+
1964
  echo '</div>';
1965
 
1966
  //Tax Meta Description
1969
  _e('Meta description template','wp-seopress');
1970
  echo "<br/>";
1971
 
1972
+ echo "<script>
1973
+ jQuery(document).ready(function($) {
1974
+ jQuery('#seopress-tag-tax-desc-".$seopress_tax_key."').click(function() {
1975
+ jQuery('#seopress_titles_tax_desc_".$seopress_tax_key."').val(jQuery('#seopress_titles_tax_desc_".$seopress_tax_key."').val() + ' ' + jQuery('#seopress-tag-tax-desc-".$seopress_tax_key."').attr('data-tag'));
1976
+ });
1977
+ });
1978
+ </script>";
1979
+
1980
  printf(
1981
+ '<textarea id="seopress_titles_tax_desc_'.$seopress_tax_key.'" name="seopress_titles_option_name[seopress_titles_tax_titles]['.$seopress_tax_key.'][description]">%s</textarea>',
1982
  esc_html( $this->options['seopress_titles_tax_titles'][$seopress_tax_key]['description'])
1983
  );
1984
 
1985
+ if ($seopress_tax_key =='category') {
1986
+ echo '<div class="wrap-tags"><span id="seopress-tag-tax-desc-'.$seopress_tax_key.'" data-tag="%%_category_description%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Category Description','wp-seopress').'</span>';
1987
+ } elseif ($seopress_tax_key =='post_tag') {
1988
+ echo '<div class="wrap-tags"><span id="seopress-tag-tax-desc-'.$seopress_tax_key.'" data-tag="%%tag_description%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Tag Description','wp-seopress').'</span>';
1989
+ } else {
1990
+ echo '<div class="wrap-tags"><span id="seopress-tag-tax-desc-'.$seopress_tax_key.'" data-tag="%%term_description%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Term Description','wp-seopress').'</span>';
1991
+ }
1992
+
1993
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
1994
+
1995
  echo '</div>';
1996
 
1997
  //Tax No-Index
2035
  }
2036
 
2037
  //Archives
2038
+ public function seopress_titles_archives_titles_callback()
2039
+ {
2040
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
2041
+
2042
+ echo '<h2>'.$seopress_cpt_value->labels->name.'</h2>';
2043
+
2044
+ //Archive Title CPT
2045
+ echo '<div class="seopress_wrap_archive_cpt">';
2046
+
2047
+ _e('Title template','wp-seopress');
2048
+ echo "<br/>";
2049
+
2050
+ echo "<script>
2051
+ jQuery(document).ready(function($) {
2052
+ jQuery('#seopress-tag-archive-title-".$seopress_cpt_key."').click(function() {
2053
+ jQuery('#seopress_titles_archive_titles_".$seopress_cpt_key."').val(jQuery('#seopress_titles_archive_titles_".$seopress_cpt_key."').val() + ' ' + jQuery('#seopress-tag-archive-title-".$seopress_cpt_key."').attr('data-tag'));
2054
+ });
2055
+ jQuery('#seopress-tag-archive-sitetitle-".$seopress_cpt_key."').click(function() {
2056
+ jQuery('#seopress_titles_archive_titles_".$seopress_cpt_key."').val(jQuery('#seopress_titles_archive_titles_".$seopress_cpt_key."').val() + ' ' + jQuery('#seopress-tag-archive-sitetitle-".$seopress_cpt_key."').attr('data-tag'));
2057
+ });
2058
+ });
2059
+ </script>";
2060
+
2061
+ printf(
2062
+ '<input type="text" id="seopress_titles_archive_titles_'.$seopress_cpt_key.'" name="seopress_titles_option_name[seopress_titles_archive_titles]['.$seopress_cpt_key.'][title]" value="%s"/>',
2063
+ esc_html( $this->options['seopress_titles_archive_titles'][$seopress_cpt_key]['title'])
2064
+ );
2065
+
2066
+ echo '<div class="wrap-tags"><span id="seopress-tag-archive-title-'.$seopress_cpt_key.'" data-tag="%%cpt_plural%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Post Type Archive Name','wp-seopress').'</span>';
2067
+
2068
+ echo '<span id="seopress-tag-archive-sitetitle-'.$seopress_cpt_key.'" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
2069
+
2070
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
2071
+
2072
+ echo '</div>';
2073
+
2074
+ //Archive Meta Description CPT
2075
+ echo '<div class="seopress_wrap_archive_cpt">';
2076
+
2077
+ _e('Meta description template','wp-seopress');
2078
+ echo "<br/>";
2079
+
2080
+ printf(
2081
+ '<textarea name="seopress_titles_option_name[seopress_titles_archive_titles]['.$seopress_cpt_key.'][description]">%s</textarea>',
2082
+ esc_html( $this->options['seopress_titles_archive_titles'][$seopress_cpt_key]['description'])
2083
+ );
2084
+
2085
+ echo '</div>';
2086
+
2087
+ //Archive No-Index CPT
2088
+ echo '<div class="seopress_wrap_archive_cpt">';
2089
+
2090
+ $options = get_option( 'seopress_titles_option_name' );
2091
+
2092
+ $check = isset($options['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex']);
2093
+
2094
+ echo '<input id="seopress_titles_archive_cpt_noindex['.$seopress_cpt_key.']" name="seopress_titles_option_name[seopress_titles_archive_titles]['.$seopress_cpt_key.'][noindex]" type="checkbox"';
2095
+ if ('1' == $check) echo 'checked="yes"';
2096
+ echo ' value="1"/>';
2097
+
2098
+ echo '<label for="seopress_titles_archive_cpt_noindex['.$seopress_cpt_key.']">'. __( 'noindex', 'wp-seopress' ) .'</label>';
2099
+
2100
+ if (isset($this->options['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex'])) {
2101
+ esc_attr( $this->options['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex']);
2102
+ }
2103
+
2104
+ echo '</div>';
2105
+
2106
+ //Archive No-Follow CPT
2107
+ echo '<div class="seopress_wrap_archive_cpt">';
2108
+
2109
+ $options = get_option( 'seopress_titles_option_name' );
2110
+
2111
+ $check = isset($options['seopress_titles_archive_titles'][$seopress_cpt_key]['nofollow']);
2112
+
2113
+ echo '<input id="seopress_titles_archive_cpt_nofollow['.$seopress_cpt_key.']" name="seopress_titles_option_name[seopress_titles_archive_titles]['.$seopress_cpt_key.'][nofollow]" type="checkbox"';
2114
+ if ('1' == $check) echo 'checked="yes"';
2115
+ echo ' value="1"/>';
2116
+
2117
+ echo '<label for="seopress_titles_archive_cpt_nofollow['.$seopress_cpt_key.']">'. __( 'nofollow', 'wp-seopress' ) .'</label>';
2118
+
2119
+ if (isset($this->options['seopress_titles_archive_titles'][$seopress_cpt_key]['nofollow'])) {
2120
+ esc_attr( $this->options['seopress_titles_archive_titles'][$seopress_cpt_key]['nofollow']);
2121
+ }
2122
+
2123
+ echo '</div>';
2124
+ }
2125
+ }
2126
+
2127
+
2128
  public function seopress_titles_archives_author_title_callback()
2129
  {
2130
  echo '<h2>'.__('Author archives','wp-seopress').'</h2>';
2131
 
2132
  _e('Title template','wp-seopress');
2133
  echo "<br/>";
2134
+
2135
  printf(
2136
+ '<input id="seopress_titles_archive_post_author" type="text" name="seopress_titles_option_name[seopress_titles_archives_author_title]" value="%s"/>',
2137
  esc_html( $this->options['seopress_titles_archives_author_title'])
2138
 
2139
  );
2140
+
2141
+ echo '<div class="wrap-tags"><span id="seopress-tag-post-author" data-tag="%%post_author%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Post author','wp-seopress').'</span>';
2142
+ echo '<span id="seopress-tag-site-title-author" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
2143
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
2144
 
2145
  }
2146
 
2183
  echo "<br/>";
2184
 
2185
  printf(
2186
+ '<input id="seopress_titles_archives_date_title" type="text" name="seopress_titles_option_name[seopress_titles_archives_date_title]" value="%s"/>',
2187
  esc_html( $this->options['seopress_titles_archives_date_title'])
2188
 
2189
  );
2190
+
2191
+ echo '<div class="wrap-tags"><span id="seopress-tag-archive-date" data-tag="%%archive_date%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Archive date','wp-seopress').'</span>';
2192
+ echo '<span id="seopress-tag-site-title-date" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
2193
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
2194
 
2195
  }
2196
 
2232
  echo "<br/>";
2233
 
2234
  printf(
2235
+ '<input id="seopress_titles_archives_search_title" type="text" name="seopress_titles_option_name[seopress_titles_archives_search_title]" value="%s"/>',
2236
  esc_html( $this->options['seopress_titles_archives_search_title'])
2237
 
2238
  );
2239
+
2240
+ echo '<div class="wrap-tags"><span id="seopress-tag-search-keywords" data-tag="%%search_keywords%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Search Keywords','wp-seopress').'</span>';
2241
+ echo '<span id="seopress-tag-site-title-search" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
2242
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
2243
 
2244
  }
2245
 
2264
  echo "<br/>";
2265
 
2266
  printf(
2267
+ '<input id="seopress_titles_archives_404_title" type="text" name="seopress_titles_option_name[seopress_titles_archives_404_title]" value="%s"/>',
2268
  esc_html( $this->options['seopress_titles_archives_404_title'])
2269
 
2270
  );
2271
+ echo '<div class="wrap-tags"><span id="seopress-tag-site-title-404" data-tag="%%sitetitle%%" class="tag-title"><span class="dashicons dashicons-plus"></span>'.__('Site Title','wp-seopress').'</span>';
2272
+ echo '<span id="seopress-quick-help" class="tag-title more-tags"><span class="dashicons dashicons-menu"></span>'.__('More tags','wp-seopress').'</span></div>';
2273
 
2274
  }
2275
 
2286
 
2287
  }
2288
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2289
  //Advanced
2290
  public function seopress_titles_noindex_callback()
2291
  {
2299
 
2300
  echo '<label for="seopress_titles_noindex">'. __( 'noindex', 'wp-seopress' ) .'</label>';
2301
 
2302
+ echo '<p class="description">'.__('Do not display all pages of the site in Google search results and do not display "Cached" links in search results.','wp-seopress').'</p>';
2303
+
2304
  if (isset($this->options['seopress_titles_noindex'])) {
2305
  esc_attr( $this->options['seopress_titles_noindex']);
2306
  }
2318
 
2319
  echo '<label for="seopress_titles_nofollow">'. __( 'nofollow', 'wp-seopress' ) .'</label>';
2320
 
2321
+ echo '<p class="description">'.__('Do not follow links for all pages.','wp-seopress').'</p>';
2322
+
2323
  if (isset($this->options['seopress_titles_nofollow'])) {
2324
  esc_attr( $this->options['seopress_titles_nofollow']);
2325
  }
2337
 
2338
  echo '<label for="seopress_titles_noodp">'. __( 'noodp', 'wp-seopress' ) .'</label>';
2339
 
2340
+ echo '<p class="description">'.__('Do not use Open Directory project metadata for titles or excerpts for all pages.','wp-seopress').'</p>';
2341
+
2342
  if (isset($this->options['seopress_titles_noodp'])) {
2343
  esc_attr( $this->options['seopress_titles_noodp']);
2344
  }
2356
 
2357
  echo '<label for="seopress_titles_noimageindex">'. __( 'noimageindex', 'wp-seopress' ) .'</label>';
2358
 
2359
+ echo '<p class="description">'.__('Do not index images from the entire site.','wp-seopress').'</p>';
2360
+
2361
  if (isset($this->options['seopress_titles_noimageindex'])) {
2362
  esc_attr( $this->options['seopress_titles_noimageindex']);
2363
  }
2375
 
2376
  echo '<label for="seopress_titles_noarchive">'. __( 'noarchive', 'wp-seopress' ) .'</label>';
2377
 
2378
+ echo '<p class="description">'.__('Do not display a "Cached" link in the Google search results.','wp-seopress').'</p>';
2379
+
2380
  if (isset($this->options['seopress_titles_noarchive'])) {
2381
  esc_attr( $this->options['seopress_titles_noarchive']);
2382
  }
2394
 
2395
  echo '<label for="seopress_titles_nosnippet">'. __( 'nosnippet', 'wp-seopress' ) .'</label>';
2396
 
2397
+ echo '<p class="description">'.__('Do not display a description in the Google search results for all pages.','wp-seopress').'</p>';
2398
+
2399
  if (isset($this->options['seopress_titles_nosnippet'])) {
2400
  esc_attr( $this->options['seopress_titles_nosnippet']);
2401
  }
2541
  if (isset($this->options['seopress_social_knowledge_img'])) {
2542
  esc_attr( $this->options['seopress_social_knowledge_img']);
2543
  }
2544
+
2545
+ function seopress_social_knowledge_img_option() {
2546
+ $seopress_social_knowledge_img_option = get_option("seopress_social_option_name");
2547
+ if ( ! empty ( $seopress_social_knowledge_img_option ) ) {
2548
+ foreach ($seopress_social_knowledge_img_option as $key => $seopress_social_knowledge_img_value)
2549
+ $options[$key] = $seopress_social_knowledge_img_value;
2550
+ if (isset($seopress_social_knowledge_img_option['seopress_social_knowledge_img'])) {
2551
+ return $seopress_social_knowledge_img_option['seopress_social_knowledge_img'];
2552
+ }
2553
+ }
2554
+ }
2555
+ echo '<br>';
2556
+ echo '<br>';
2557
+ echo '<img style="width:200px;max-height:300px;" src="'.seopress_social_knowledge_img_option().'"/>';
2558
  }
2559
 
2560
  public function seopress_social_accounts_facebook_callback()
2761
  }
2762
  }
2763
 
2764
+ public function seopress_google_analytics_enable_callback()
2765
+ {
2766
+ $options = get_option( 'seopress_google_analytics_option_name' );
2767
+
2768
+ $check = isset($options['seopress_google_analytics_enable']);
2769
+
2770
+ echo '<input id="seopress_google_analytics_enable" name="seopress_google_analytics_option_name[seopress_google_analytics_enable]" type="checkbox"';
2771
+ if ('1' == $check) echo 'checked="yes"';
2772
+ echo ' value="1"/>';
2773
+
2774
+ echo '<label for="seopress_google_analytics_enable">'. __( 'Enable Google Analytics tracking', 'wp-seopress' ) .'</label>';
2775
+
2776
+ if (isset($this->options['seopress_google_analytics_enable'])) {
2777
+ esc_attr( $this->options['seopress_google_analytics_enable']);
2778
+ }
2779
+ }
2780
+
2781
+ public function seopress_google_analytics_ua_callback()
2782
+ {
2783
+ printf(
2784
+ '<input type="text" name="seopress_google_analytics_option_name[seopress_google_analytics_ua]" placeholder="'.__('Enter your Tracking ID (UA-XXXX-XX)','wp-seopress').'" value="%s"/>',
2785
+ esc_html( $this->options['seopress_google_analytics_ua'])
2786
+
2787
+ );
2788
+
2789
+ }
2790
+
2791
+ public function seopress_google_analytics_roles_callback()
2792
+ {
2793
+ $options = get_option( 'seopress_google_analytics_option_name' );
2794
+
2795
+ global $wp_roles;
2796
+
2797
+ if ( ! isset( $wp_roles ) )
2798
+ $wp_roles = new WP_Roles();
2799
+
2800
+ foreach ($wp_roles->get_names() as $key => $value) {
2801
+
2802
+ $check = isset($options['seopress_google_analytics_roles'][$key]);
2803
+
2804
+ echo '<input id="seopress_google_analytics_roles_'.$key.'" name="seopress_google_analytics_option_name[seopress_google_analytics_roles]['.$key.']" type="checkbox"';
2805
+ if ('1' == $check) echo 'checked="yes"';
2806
+ echo ' value="1"/>';
2807
+
2808
+ echo '<label for="seopress_google_analytics_roles_'.$key.'">'. $value .'</label><br/>';
2809
+
2810
+ if (isset($this->options['seopress_google_analytics_roles'][$key])) {
2811
+ esc_attr( $this->options['seopress_google_analytics_roles'][$key]);
2812
+ }
2813
+ }
2814
+ }
2815
+
2816
+ public function seopress_google_analytics_remarketing_callback()
2817
+ {
2818
+ $options = get_option( 'seopress_google_analytics_option_name' );
2819
+
2820
+ $check = isset($options['seopress_google_analytics_remarketing']);
2821
+
2822
+ echo '<input id="seopress_google_analytics_remarketing" name="seopress_google_analytics_option_name[seopress_google_analytics_remarketing]" type="checkbox"';
2823
+ if ('1' == $check) echo 'checked="yes"';
2824
+ echo ' value="1"/>';
2825
+
2826
+ echo '<label for="seopress_google_analytics_remarketing">'. __( 'Enable remarketing, demographics and interest reporting', 'wp-seopress' ) .'</label>';
2827
+
2828
+ if (isset($this->options['seopress_google_analytics_remarketing'])) {
2829
+ esc_attr( $this->options['seopress_google_analytics_remarketing']);
2830
+ }
2831
+ }
2832
+
2833
+ public function seopress_google_analytics_ip_anonymization_callback()
2834
+ {
2835
+ $options = get_option( 'seopress_google_analytics_option_name' );
2836
+
2837
+ $check = isset($options['seopress_google_analytics_ip_anonymization']);
2838
+
2839
+ echo '<input id="seopress_google_analytics_ip_anonymization" name="seopress_google_analytics_option_name[seopress_google_analytics_ip_anonymization]" type="checkbox"';
2840
+ if ('1' == $check) echo 'checked="yes"';
2841
+ echo ' value="1"/>';
2842
+
2843
+ echo '<label for="seopress_google_analytics_ip_anonymization">'. __( 'Enable IP Anonymization', 'wp-seopress' ) .'</label>';
2844
+
2845
+ if (isset($this->options['seopress_google_analytics_ip_anonymization'])) {
2846
+ esc_attr( $this->options['seopress_google_analytics_ip_anonymization']);
2847
+ }
2848
+ }
2849
+
2850
+ public function seopress_google_analytics_link_attribution_callback()
2851
+ {
2852
+ $options = get_option( 'seopress_google_analytics_option_name' );
2853
+
2854
+ $check = isset($options['seopress_google_analytics_link_attribution']);
2855
+
2856
+ echo '<input id="seopress_google_analytics_link_attribution" name="seopress_google_analytics_option_name[seopress_google_analytics_link_attribution]" type="checkbox"';
2857
+ if ('1' == $check) echo 'checked="yes"';
2858
+ echo ' value="1"/>';
2859
+
2860
+ echo '<label for="seopress_google_analytics_link_attribution">'. __( 'Enhanced Link Attribution', 'wp-seopress' ) .'</label>';
2861
+
2862
+ if (isset($this->options['seopress_google_analytics_link_attribution'])) {
2863
+ esc_attr( $this->options['seopress_google_analytics_link_attribution']);
2864
+ }
2865
+ }
2866
+
2867
+ public function seopress_google_analytics_cross_enable_callback()
2868
+ {
2869
+ $options = get_option( 'seopress_google_analytics_option_name' );
2870
+
2871
+ $check = isset($options['seopress_google_analytics_cross_enable']);
2872
+
2873
+ echo '<input id="seopress_google_analytics_cross_enable" name="seopress_google_analytics_option_name[seopress_google_analytics_cross_enable]" type="checkbox"';
2874
+ if ('1' == $check) echo 'checked="yes"';
2875
+ echo ' value="1"/>';
2876
+
2877
+ echo '<label for="seopress_google_analytics_cross_enable">'. __( 'Enable cross-domain tracking', 'wp-seopress' ) .'</label>';
2878
+
2879
+ if (isset($this->options['seopress_google_analytics_cross_enable'])) {
2880
+ esc_attr( $this->options['seopress_google_analytics_cross_enable']);
2881
+ }
2882
+ }
2883
+
2884
+ public function seopress_google_analytics_cross_domain_callback()
2885
+ {
2886
+ printf(
2887
+ '<input type="text" name="seopress_google_analytics_option_name[seopress_google_analytics_cross_domain]" placeholder="'.__('Enter yours domains','wp-seopress').'" value="%s"/>',
2888
+ esc_html( $this->options['seopress_google_analytics_cross_domain'])
2889
+
2890
+ );
2891
+
2892
+ }
2893
+
2894
+ public function seopress_google_analytics_cd_author_callback()
2895
+ {
2896
+ $options = get_option( 'seopress_google_analytics_option_name' );
2897
+
2898
+ $selected = $options['seopress_google_analytics_cd_author'];
2899
+
2900
+ echo '<select id="seopress_google_analytics_cd_author" name="seopress_google_analytics_option_name[seopress_google_analytics_cd_author]">';
2901
+ echo ' <option ';
2902
+ if ('none' == $selected) echo 'selected="selected"';
2903
+ echo ' value="none">'. __("None","wp-seopress") .'</option>';
2904
+ echo ' <option ';
2905
+ if ('dimension1' == $selected) echo 'selected="selected"';
2906
+ echo ' value="dimension1">'. __("Custom Dimension #1","wp-seopress") .'</option>';
2907
+ echo '<option ';
2908
+ if ('dimension2' == $selected) echo 'selected="selected"';
2909
+ echo ' value="dimension2">'. __("Custom Dimension #2","wp-seopress") .'</option>';
2910
+ echo '<option ';
2911
+ if ('dimension3' == $selected) echo 'selected="selected"';
2912
+ echo ' value="dimension3">'. __("Custom Dimension #3","wp-seopress") .'</option>';
2913
+ echo '<option ';
2914
+ if ('dimension4' == $selected) echo 'selected="selected"';
2915
+ echo ' value="dimension4">'. __("Custom Dimension #4","wp-seopress") .'</option>';
2916
+ echo '<option ';
2917
+ if ('dimension5' == $selected) echo 'selected="selected"';
2918
+ echo ' value="dimension5">'. __("Custom Dimension #5","wp-seopress") .'</option>';
2919
+ echo '<option ';
2920
+ if ('dimension6' == $selected) echo 'selected="selected"';
2921
+ echo ' value="dimension6">'. __("Custom Dimension #6","wp-seopress") .'</option>';
2922
+ echo '<option ';
2923
+ if ('dimension7' == $selected) echo 'selected="selected"';
2924
+ echo ' value="dimension7">'. __("Custom Dimension #7","wp-seopress") .'</option>';
2925
+ echo '<option ';
2926
+ if ('dimension8' == $selected) echo 'selected="selected"';
2927
+ echo ' value="dimension8">'. __("Custom Dimension #8","wp-seopress") .'</option>';
2928
+ echo '<option ';
2929
+ if ('dimension9' == $selected) echo 'selected="selected"';
2930
+ echo ' value="dimension9">'. __("Custom Dimension #9","wp-seopress") .'</option>';
2931
+ echo '<option ';
2932
+ if ('dimension10' == $selected) echo 'selected="selected"';
2933
+ echo ' value="dimension10">'. __("Custom Dimension #10","wp-seopress") .'</option>';
2934
+ echo '<option ';
2935
+ if ('dimension11' == $selected) echo 'selected="selected"';
2936
+ echo ' value="dimension11">'. __("Custom Dimension #11","wp-seopress") .'</option>';
2937
+ echo '<option ';
2938
+ if ('dimension12' == $selected) echo 'selected="selected"';
2939
+ echo ' value="dimension12">'. __("Custom Dimension #12","wp-seopress") .'</option>';
2940
+ echo '<option ';
2941
+ if ('dimension13' == $selected) echo 'selected="selected"';
2942
+ echo ' value="dimension13">'. __("Custom Dimension #13","wp-seopress") .'</option>';
2943
+ echo '<option ';
2944
+ if ('dimension14' == $selected) echo 'selected="selected"';
2945
+ echo ' value="dimension14">'. __("Custom Dimension #14","wp-seopress") .'</option>';
2946
+ echo '<option ';
2947
+ if ('dimension15' == $selected) echo 'selected="selected"';
2948
+ echo ' value="dimension15">'. __("Custom Dimension #15","wp-seopress") .'</option>';
2949
+ echo '<option ';
2950
+ if ('dimension16' == $selected) echo 'selected="selected"';
2951
+ echo ' value="dimension16">'. __("Custom Dimension #16","wp-seopress") .'</option>';
2952
+ echo '<option ';
2953
+ if ('dimension17' == $selected) echo 'selected="selected"';
2954
+ echo ' value="dimension17">'. __("Custom Dimension #17","wp-seopress") .'</option>';
2955
+ echo '<option ';
2956
+ if ('dimension18' == $selected) echo 'selected="selected"';
2957
+ echo ' value="dimension18">'. __("Custom Dimension #18","wp-seopress") .'</option>';
2958
+ echo '<option ';
2959
+ if ('dimension19' == $selected) echo 'selected="selected"';
2960
+ echo ' value="dimension19">'. __("Custom Dimension #19","wp-seopress") .'</option>';
2961
+ echo '<option ';
2962
+ if ('dimension20' == $selected) echo 'selected="selected"';
2963
+ echo ' value="dimension20">'. __("Custom Dimension #20","wp-seopress") .'</option>';
2964
+ echo '</select>';
2965
+
2966
+ if (isset($this->options['seopress_google_analytics_cd_author'])) {
2967
+ esc_attr( $this->options['seopress_google_analytics_cd_author']);
2968
+ }
2969
+ }
2970
+
2971
+ public function seopress_google_analytics_cd_category_callback()
2972
+ {
2973
+ $options = get_option( 'seopress_google_analytics_option_name' );
2974
+
2975
+ $selected = $options['seopress_google_analytics_cd_category'];
2976
+
2977
+ echo '<select id="seopress_google_analytics_cd_category" name="seopress_google_analytics_option_name[seopress_google_analytics_cd_category]">';
2978
+ echo ' <option ';
2979
+ if ('none' == $selected) echo 'selected="selected"';
2980
+ echo ' value="none">'. __("None","wp-seopress") .'</option>';
2981
+ echo ' <option ';
2982
+ if ('dimension1' == $selected) echo 'selected="selected"';
2983
+ echo ' value="dimension1">'. __("Custom Dimension #1","wp-seopress") .'</option>';
2984
+ echo '<option ';
2985
+ if ('dimension2' == $selected) echo 'selected="selected"';
2986
+ echo ' value="dimension2">'. __("Custom Dimension #2","wp-seopress") .'</option>';
2987
+ echo '<option ';
2988
+ if ('dimension3' == $selected) echo 'selected="selected"';
2989
+ echo ' value="dimension3">'. __("Custom Dimension #3","wp-seopress") .'</option>';
2990
+ echo '<option ';
2991
+ if ('dimension4' == $selected) echo 'selected="selected"';
2992
+ echo ' value="dimension4">'. __("Custom Dimension #4","wp-seopress") .'</option>';
2993
+ echo '<option ';
2994
+ if ('dimension5' == $selected) echo 'selected="selected"';
2995
+ echo ' value="dimension5">'. __("Custom Dimension #5","wp-seopress") .'</option>';
2996
+ echo '<option ';
2997
+ if ('dimension6' == $selected) echo 'selected="selected"';
2998
+ echo ' value="dimension6">'. __("Custom Dimension #6","wp-seopress") .'</option>';
2999
+ echo '<option ';
3000
+ if ('dimension7' == $selected) echo 'selected="selected"';
3001
+ echo ' value="dimension7">'. __("Custom Dimension #7","wp-seopress") .'</option>';
3002
+ echo '<option ';
3003
+ if ('dimension8' == $selected) echo 'selected="selected"';
3004
+ echo ' value="dimension8">'. __("Custom Dimension #8","wp-seopress") .'</option>';
3005
+ echo '<option ';
3006
+ if ('dimension9' == $selected) echo 'selected="selected"';
3007
+ echo ' value="dimension9">'. __("Custom Dimension #9","wp-seopress") .'</option>';
3008
+ echo '<option ';
3009
+ if ('dimension10' == $selected) echo 'selected="selected"';
3010
+ echo ' value="dimension10">'. __("Custom Dimension #10","wp-seopress") .'</option>';
3011
+ echo '<option ';
3012
+ if ('dimension11' == $selected) echo 'selected="selected"';
3013
+ echo ' value="dimension11">'. __("Custom Dimension #11","wp-seopress") .'</option>';
3014
+ echo '<option ';
3015
+ if ('dimension12' == $selected) echo 'selected="selected"';
3016
+ echo ' value="dimension12">'. __("Custom Dimension #12","wp-seopress") .'</option>';
3017
+ echo '<option ';
3018
+ if ('dimension13' == $selected) echo 'selected="selected"';
3019
+ echo ' value="dimension13">'. __("Custom Dimension #13","wp-seopress") .'</option>';
3020
+ echo '<option ';
3021
+ if ('dimension14' == $selected) echo 'selected="selected"';
3022
+ echo ' value="dimension14">'. __("Custom Dimension #14","wp-seopress") .'</option>';
3023
+ echo '<option ';
3024
+ if ('dimension15' == $selected) echo 'selected="selected"';
3025
+ echo ' value="dimension15">'. __("Custom Dimension #15","wp-seopress") .'</option>';
3026
+ echo '<option ';
3027
+ if ('dimension16' == $selected) echo 'selected="selected"';
3028
+ echo ' value="dimension16">'. __("Custom Dimension #16","wp-seopress") .'</option>';
3029
+ echo '<option ';
3030
+ if ('dimension17' == $selected) echo 'selected="selected"';
3031
+ echo ' value="dimension17">'. __("Custom Dimension #17","wp-seopress") .'</option>';
3032
+ echo '<option ';
3033
+ if ('dimension18' == $selected) echo 'selected="selected"';
3034
+ echo ' value="dimension18">'. __("Custom Dimension #18","wp-seopress") .'</option>';
3035
+ echo '<option ';
3036
+ if ('dimension19' == $selected) echo 'selected="selected"';
3037
+ echo ' value="dimension19">'. __("Custom Dimension #19","wp-seopress") .'</option>';
3038
+ echo '<option ';
3039
+ if ('dimension20' == $selected) echo 'selected="selected"';
3040
+ echo ' value="dimension20">'. __("Custom Dimension #20","wp-seopress") .'</option>';
3041
+ echo '</select>';
3042
+
3043
+ if (isset($this->options['seopress_google_analytics_cd_category'])) {
3044
+ esc_attr( $this->options['seopress_google_analytics_cd_category']);
3045
+ }
3046
+ }
3047
+
3048
+ public function seopress_google_analytics_cd_tag_callback()
3049
+ {
3050
+ $options = get_option( 'seopress_google_analytics_option_name' );
3051
+
3052
+ $selected = $options['seopress_google_analytics_cd_tag'];
3053
+
3054
+ echo '<select id="seopress_google_analytics_cd_tag" name="seopress_google_analytics_option_name[seopress_google_analytics_cd_tag]">';
3055
+ echo ' <option ';
3056
+ if ('none' == $selected) echo 'selected="selected"';
3057
+ echo ' value="none">'. __("None","wp-seopress") .'</option>';
3058
+ echo ' <option ';
3059
+ if ('dimension1' == $selected) echo 'selected="selected"';
3060
+ echo ' value="dimension1">'. __("Custom Dimension #1","wp-seopress") .'</option>';
3061
+ echo '<option ';
3062
+ if ('dimension2' == $selected) echo 'selected="selected"';
3063
+ echo ' value="dimension2">'. __("Custom Dimension #2","wp-seopress") .'</option>';
3064
+ echo '<option ';
3065
+ if ('dimension3' == $selected) echo 'selected="selected"';
3066
+ echo ' value="dimension3">'. __("Custom Dimension #3","wp-seopress") .'</option>';
3067
+ echo '<option ';
3068
+ if ('dimension4' == $selected) echo 'selected="selected"';
3069
+ echo ' value="dimension4">'. __("Custom Dimension #4","wp-seopress") .'</option>';
3070
+ echo '<option ';
3071
+ if ('dimension5' == $selected) echo 'selected="selected"';
3072
+ echo ' value="dimension5">'. __("Custom Dimension #5","wp-seopress") .'</option>';
3073
+ echo '<option ';
3074
+ if ('dimension6' == $selected) echo 'selected="selected"';
3075
+ echo ' value="dimension6">'. __("Custom Dimension #6","wp-seopress") .'</option>';
3076
+ echo '<option ';
3077
+ if ('dimension7' == $selected) echo 'selected="selected"';
3078
+ echo ' value="dimension7">'. __("Custom Dimension #7","wp-seopress") .'</option>';
3079
+ echo '<option ';
3080
+ if ('dimension8' == $selected) echo 'selected="selected"';
3081
+ echo ' value="dimension8">'. __("Custom Dimension #8","wp-seopress") .'</option>';
3082
+ echo '<option ';
3083
+ if ('dimension9' == $selected) echo 'selected="selected"';
3084
+ echo ' value="dimension9">'. __("Custom Dimension #9","wp-seopress") .'</option>';
3085
+ echo '<option ';
3086
+ if ('dimension10' == $selected) echo 'selected="selected"';
3087
+ echo ' value="dimension10">'. __("Custom Dimension #10","wp-seopress") .'</option>';
3088
+ echo '<option ';
3089
+ if ('dimension11' == $selected) echo 'selected="selected"';
3090
+ echo ' value="dimension11">'. __("Custom Dimension #11","wp-seopress") .'</option>';
3091
+ echo '<option ';
3092
+ if ('dimension12' == $selected) echo 'selected="selected"';
3093
+ echo ' value="dimension12">'. __("Custom Dimension #12","wp-seopress") .'</option>';
3094
+ echo '<option ';
3095
+ if ('dimension13' == $selected) echo 'selected="selected"';
3096
+ echo ' value="dimension13">'. __("Custom Dimension #13","wp-seopress") .'</option>';
3097
+ echo '<option ';
3098
+ if ('dimension14' == $selected) echo 'selected="selected"';
3099
+ echo ' value="dimension14">'. __("Custom Dimension #14","wp-seopress") .'</option>';
3100
+ echo '<option ';
3101
+ if ('dimension15' == $selected) echo 'selected="selected"';
3102
+ echo ' value="dimension15">'. __("Custom Dimension #15","wp-seopress") .'</option>';
3103
+ echo '<option ';
3104
+ if ('dimension16' == $selected) echo 'selected="selected"';
3105
+ echo ' value="dimension16">'. __("Custom Dimension #16","wp-seopress") .'</option>';
3106
+ echo '<option ';
3107
+ if ('dimension17' == $selected) echo 'selected="selected"';
3108
+ echo ' value="dimension17">'. __("Custom Dimension #17","wp-seopress") .'</option>';
3109
+ echo '<option ';
3110
+ if ('dimension18' == $selected) echo 'selected="selected"';
3111
+ echo ' value="dimension18">'. __("Custom Dimension #18","wp-seopress") .'</option>';
3112
+ echo '<option ';
3113
+ if ('dimension19' == $selected) echo 'selected="selected"';
3114
+ echo ' value="dimension19">'. __("Custom Dimension #19","wp-seopress") .'</option>';
3115
+ echo '<option ';
3116
+ if ('dimension20' == $selected) echo 'selected="selected"';
3117
+ echo ' value="dimension20">'. __("Custom Dimension #20","wp-seopress") .'</option>';
3118
+ echo '</select>';
3119
+
3120
+ if (isset($this->options['seopress_google_analytics_cd_tag'])) {
3121
+ esc_attr( $this->options['seopress_google_analytics_cd_tag']);
3122
+ }
3123
+ }
3124
+
3125
+ public function seopress_google_analytics_cd_post_type_callback()
3126
+ {
3127
+ $options = get_option( 'seopress_google_analytics_option_name' );
3128
+
3129
+ $selected = $options['seopress_google_analytics_cd_post_type'];
3130
+
3131
+ echo '<select id="seopress_google_analytics_cd_post_type" name="seopress_google_analytics_option_name[seopress_google_analytics_cd_post_type]">';
3132
+ echo ' <option ';
3133
+ if ('none' == $selected) echo 'selected="selected"';
3134
+ echo ' value="none">'. __("None","wp-seopress") .'</option>';
3135
+ echo ' <option ';
3136
+ if ('dimension1' == $selected) echo 'selected="selected"';
3137
+ echo ' value="dimension1">'. __("Custom Dimension #1","wp-seopress") .'</option>';
3138
+ echo '<option ';
3139
+ if ('dimension2' == $selected) echo 'selected="selected"';
3140
+ echo ' value="dimension2">'. __("Custom Dimension #2","wp-seopress") .'</option>';
3141
+ echo '<option ';
3142
+ if ('dimension3' == $selected) echo 'selected="selected"';
3143
+ echo ' value="dimension3">'. __("Custom Dimension #3","wp-seopress") .'</option>';
3144
+ echo '<option ';
3145
+ if ('dimension4' == $selected) echo 'selected="selected"';
3146
+ echo ' value="dimension4">'. __("Custom Dimension #4","wp-seopress") .'</option>';
3147
+ echo '<option ';
3148
+ if ('dimension5' == $selected) echo 'selected="selected"';
3149
+ echo ' value="dimension5">'. __("Custom Dimension #5","wp-seopress") .'</option>';
3150
+ echo '<option ';
3151
+ if ('dimension6' == $selected) echo 'selected="selected"';
3152
+ echo ' value="dimension6">'. __("Custom Dimension #6","wp-seopress") .'</option>';
3153
+ echo '<option ';
3154
+ if ('dimension7' == $selected) echo 'selected="selected"';
3155
+ echo ' value="dimension7">'. __("Custom Dimension #7","wp-seopress") .'</option>';
3156
+ echo '<option ';
3157
+ if ('dimension8' == $selected) echo 'selected="selected"';
3158
+ echo ' value="dimension8">'. __("Custom Dimension #8","wp-seopress") .'</option>';
3159
+ echo '<option ';
3160
+ if ('dimension9' == $selected) echo 'selected="selected"';
3161
+ echo ' value="dimension9">'. __("Custom Dimension #9","wp-seopress") .'</option>';
3162
+ echo '<option ';
3163
+ if ('dimension10' == $selected) echo 'selected="selected"';
3164
+ echo ' value="dimension10">'. __("Custom Dimension #10","wp-seopress") .'</option>';
3165
+ echo '<option ';
3166
+ if ('dimension11' == $selected) echo 'selected="selected"';
3167
+ echo ' value="dimension11">'. __("Custom Dimension #11","wp-seopress") .'</option>';
3168
+ echo '<option ';
3169
+ if ('dimension12' == $selected) echo 'selected="selected"';
3170
+ echo ' value="dimension12">'. __("Custom Dimension #12","wp-seopress") .'</option>';
3171
+ echo '<option ';
3172
+ if ('dimension13' == $selected) echo 'selected="selected"';
3173
+ echo ' value="dimension13">'. __("Custom Dimension #13","wp-seopress") .'</option>';
3174
+ echo '<option ';
3175
+ if ('dimension14' == $selected) echo 'selected="selected"';
3176
+ echo ' value="dimension14">'. __("Custom Dimension #14","wp-seopress") .'</option>';
3177
+ echo '<option ';
3178
+ if ('dimension15' == $selected) echo 'selected="selected"';
3179
+ echo ' value="dimension15">'. __("Custom Dimension #15","wp-seopress") .'</option>';
3180
+ echo '<option ';
3181
+ if ('dimension16' == $selected) echo 'selected="selected"';
3182
+ echo ' value="dimension16">'. __("Custom Dimension #16","wp-seopress") .'</option>';
3183
+ echo '<option ';
3184
+ if ('dimension17' == $selected) echo 'selected="selected"';
3185
+ echo ' value="dimension17">'. __("Custom Dimension #17","wp-seopress") .'</option>';
3186
+ echo '<option ';
3187
+ if ('dimension18' == $selected) echo 'selected="selected"';
3188
+ echo ' value="dimension18">'. __("Custom Dimension #18","wp-seopress") .'</option>';
3189
+ echo '<option ';
3190
+ if ('dimension19' == $selected) echo 'selected="selected"';
3191
+ echo ' value="dimension19">'. __("Custom Dimension #19","wp-seopress") .'</option>';
3192
+ echo '<option ';
3193
+ if ('dimension20' == $selected) echo 'selected="selected"';
3194
+ echo ' value="dimension20">'. __("Custom Dimension #20","wp-seopress") .'</option>';
3195
+ echo '</select>';
3196
+
3197
+ if (isset($this->options['seopress_google_analytics_cd_post_type'])) {
3198
+ esc_attr( $this->options['seopress_google_analytics_cd_post_type']);
3199
+ }
3200
+ }
3201
+
3202
+ public function seopress_google_analytics_cd_logged_in_user_callback()
3203
+ {
3204
+ $options = get_option( 'seopress_google_analytics_option_name' );
3205
+
3206
+ $selected = $options['seopress_google_analytics_cd_logged_in_user'];
3207
+
3208
+ echo '<select id="seopress_google_analytics_cd_logged_in_user" name="seopress_google_analytics_option_name[seopress_google_analytics_cd_logged_in_user]">';
3209
+ echo ' <option ';
3210
+ if ('none' == $selected) echo 'selected="selected"';
3211
+ echo ' value="none">'. __("None","wp-seopress") .'</option>';
3212
+ echo ' <option ';
3213
+ if ('dimension1' == $selected) echo 'selected="selected"';
3214
+ echo ' value="dimension1">'. __("Custom Dimension #1","wp-seopress") .'</option>';
3215
+ echo '<option ';
3216
+ if ('dimension2' == $selected) echo 'selected="selected"';
3217
+ echo ' value="dimension2">'. __("Custom Dimension #2","wp-seopress") .'</option>';
3218
+ echo '<option ';
3219
+ if ('dimension3' == $selected) echo 'selected="selected"';
3220
+ echo ' value="dimension3">'. __("Custom Dimension #3","wp-seopress") .'</option>';
3221
+ echo '<option ';
3222
+ if ('dimension4' == $selected) echo 'selected="selected"';
3223
+ echo ' value="dimension4">'. __("Custom Dimension #4","wp-seopress") .'</option>';
3224
+ echo '<option ';
3225
+ if ('dimension5' == $selected) echo 'selected="selected"';
3226
+ echo ' value="dimension5">'. __("Custom Dimension #5","wp-seopress") .'</option>';
3227
+ echo '<option ';
3228
+ if ('dimension6' == $selected) echo 'selected="selected"';
3229
+ echo ' value="dimension6">'. __("Custom Dimension #6","wp-seopress") .'</option>';
3230
+ echo '<option ';
3231
+ if ('dimension7' == $selected) echo 'selected="selected"';
3232
+ echo ' value="dimension7">'. __("Custom Dimension #7","wp-seopress") .'</option>';
3233
+ echo '<option ';
3234
+ if ('dimension8' == $selected) echo 'selected="selected"';
3235
+ echo ' value="dimension8">'. __("Custom Dimension #8","wp-seopress") .'</option>';
3236
+ echo '<option ';
3237
+ if ('dimension9' == $selected) echo 'selected="selected"';
3238
+ echo ' value="dimension9">'. __("Custom Dimension #9","wp-seopress") .'</option>';
3239
+ echo '<option ';
3240
+ if ('dimension10' == $selected) echo 'selected="selected"';
3241
+ echo ' value="dimension10">'. __("Custom Dimension #10","wp-seopress") .'</option>';
3242
+ echo '<option ';
3243
+ if ('dimension11' == $selected) echo 'selected="selected"';
3244
+ echo ' value="dimension11">'. __("Custom Dimension #11","wp-seopress") .'</option>';
3245
+ echo '<option ';
3246
+ if ('dimension12' == $selected) echo 'selected="selected"';
3247
+ echo ' value="dimension12">'. __("Custom Dimension #12","wp-seopress") .'</option>';
3248
+ echo '<option ';
3249
+ if ('dimension13' == $selected) echo 'selected="selected"';
3250
+ echo ' value="dimension13">'. __("Custom Dimension #13","wp-seopress") .'</option>';
3251
+ echo '<option ';
3252
+ if ('dimension14' == $selected) echo 'selected="selected"';
3253
+ echo ' value="dimension14">'. __("Custom Dimension #14","wp-seopress") .'</option>';
3254
+ echo '<option ';
3255
+ if ('dimension15' == $selected) echo 'selected="selected"';
3256
+ echo ' value="dimension15">'. __("Custom Dimension #15","wp-seopress") .'</option>';
3257
+ echo '<option ';
3258
+ if ('dimension16' == $selected) echo 'selected="selected"';
3259
+ echo ' value="dimension16">'. __("Custom Dimension #16","wp-seopress") .'</option>';
3260
+ echo '<option ';
3261
+ if ('dimension17' == $selected) echo 'selected="selected"';
3262
+ echo ' value="dimension17">'. __("Custom Dimension #17","wp-seopress") .'</option>';
3263
+ echo '<option ';
3264
+ if ('dimension18' == $selected) echo 'selected="selected"';
3265
+ echo ' value="dimension18">'. __("Custom Dimension #18","wp-seopress") .'</option>';
3266
+ echo '<option ';
3267
+ if ('dimension19' == $selected) echo 'selected="selected"';
3268
+ echo ' value="dimension19">'. __("Custom Dimension #19","wp-seopress") .'</option>';
3269
+ echo '<option ';
3270
+ if ('dimension20' == $selected) echo 'selected="selected"';
3271
+ echo ' value="dimension20">'. __("Custom Dimension #20","wp-seopress") .'</option>';
3272
+ echo '</select>';
3273
+
3274
+ if (isset($this->options['seopress_google_analytics_cd_logged_in_user'])) {
3275
+ esc_attr( $this->options['seopress_google_analytics_cd_logged_in_user']);
3276
+ }
3277
+ }
3278
+
3279
  public function seopress_advanced_advanced_attachments_callback()
3280
  {
3281
  $options = get_option( 'seopress_advanced_option_name' );
3349
  );
3350
 
3351
  }
3352
+
3353
+ public function seopress_advanced_appearance_adminbar_callback()
3354
+ {
3355
+ $options = get_option( 'seopress_advanced_option_name' );
3356
+
3357
+ $check = isset($options['seopress_advanced_appearance_adminbar']);
3358
+
3359
+ echo '<input id="seopress_advanced_appearance_adminbar" name="seopress_advanced_option_name[seopress_advanced_appearance_adminbar]" type="checkbox"';
3360
+ if ('1' == $check) echo 'checked="yes"';
3361
+ echo ' value="1"/>';
3362
+
3363
+ echo '<label for="seopress_advanced_appearance_adminbar">'. __( 'Remove SEOPress from Admin Bar in backend', 'wp-seopress' ) .'</label>';
3364
+
3365
+ if (isset($this->options['seopress_advanced_appearance_adminbar'])) {
3366
+ esc_attr( $this->options['seopress_advanced_appearance_adminbar']);
3367
+ }
3368
+ }
3369
+
3370
+ public function seopress_advanced_appearance_title_col_callback()
3371
+ {
3372
+ $options = get_option( 'seopress_advanced_option_name' );
3373
+
3374
+ $check = isset($options['seopress_advanced_appearance_title_col']);
3375
+
3376
+ echo '<input id="seopress_advanced_appearance_title_col" name="seopress_advanced_option_name[seopress_advanced_appearance_title_col]" type="checkbox"';
3377
+ if ('1' == $check) echo 'checked="yes"';
3378
+ echo ' value="1"/>';
3379
+
3380
+ echo '<label for="seopress_advanced_appearance_title_col">'. __( 'Add title column', 'wp-seopress' ) .'</label>';
3381
+
3382
+ if (isset($this->options['seopress_advanced_appearance_title_col'])) {
3383
+ esc_attr( $this->options['seopress_advanced_appearance_title_col']);
3384
+ }
3385
+ }
3386
+
3387
+ public function seopress_advanced_appearance_meta_desc_col_callback()
3388
+ {
3389
+ $options = get_option( 'seopress_advanced_option_name' );
3390
+
3391
+ $check = isset($options['seopress_advanced_appearance_meta_desc_col']);
3392
+
3393
+ echo '<input id="seopress_advanced_appearance_meta_desc_col" name="seopress_advanced_option_name[seopress_advanced_appearance_meta_desc_col]" type="checkbox"';
3394
+ if ('1' == $check) echo 'checked="yes"';
3395
+ echo ' value="1"/>';
3396
+
3397
+ echo '<label for="seopress_advanced_appearance_meta_desc_col">'. __( 'Add meta description column', 'wp-seopress' ) .'</label>';
3398
+
3399
+ if (isset($this->options['seopress_advanced_appearance_meta_desc_col'])) {
3400
+ esc_attr( $this->options['seopress_advanced_appearance_meta_desc_col']);
3401
+ }
3402
+ }
3403
  }
3404
 
3405
  if( is_admin() )
inc/admin/adminbar.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Please don&rsquo;t call the plugin directly. Thanks :)' );
3
+
4
+ /**
5
+ * Admin bar customization
6
+ */
7
+
8
+ function seopress_admin_bar_links() {
9
+
10
+ global $wp_admin_bar;
11
+
12
+ // Adds a new top level admin bar link and a submenu to it
13
+ $wp_admin_bar->add_menu( array(
14
+ 'parent' => false,
15
+ 'id' => 'seopress_custom_top_level',
16
+ 'title' => '<img style="height:22px;vertical-align:middle;margin-right:5px" src=" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA1LzEyLzE2LEZ4ogAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAABn1SURBVHic7Z2/bxtJnsWfvQPsJupVeAB7sZzQnYwvIgMN1heogaOwWB9E4GhMMmJAX2YGVCielw7FgAytgJqNxIDEzQZmQAZnwwrI6OwJyMuGA5DAhRr2H7AXSE3LMkk1u6u7qrrfBxgMLIvNksV69f1dDxAB6XT6CYDHAHYBPLn58p+ieG9CNOHdzf/fArgC8GE6nb4N+00fhPHQdDr9GMDTm/++CeM9CEkIHwH8CODH6XT6QfTDhQlAOp1OAyjjetP/UdRzCSFLfsG1GDSm0+lUxAMDC8CNeV8G8JfAqyGEeOXvuBaCt0Ee4lsAbsz8BujLEyKTdwDKft2D3/h5UTqdfgngAkDaz+sJIcJIA/iP3d3dB1dXV2+3ffFWFsDNqf8DGNgjREU+Avh+G2vAswCk0+mnuN78v99+XYSQiPgV1yLwo5dv9uQCpNPp73Ft8v/O/7oIIRHwOwCF3d3dX66uru61BO4VgJvNfy5gYYSQ6HjqRQQ2ugA3Zv9/CV0WISRK/m2TO7BWAG4Cfm9Bn58QnfkVwJN1gcGHG174A7j5CdGd3+N6L69kZQzgJs//7+GshxASMf+0rk7gCxfgxvT/nyhWRQiJlH++6wqscgEaES2GEBItX+ztzwTgprGHtf2ExJM/3ezxJXctgJeRLYUQIoOXt/+wjAHc9PP/HPFiCCHR87U7T+C2BVCWsxZCSMQs9/ptAXgqYSGEkOhZ7vWHwDL1xzFehCSDP97s+aUF8L28tRBCJPA98EkAnkhbBiFEBk+ATwLACT+EJItvAODBTWHAf0tdCiFEBv/yENc39hBCksfjh+BkX0KSSpoWACHJ5fGmgSCEkJjzIJ1O/0P2IgghcqAFQEiCoQAQkmAoAIQkGAoAIQmGAkBIgqEAEJJgKACEJBgKACEJhgJASIKhABCSYCgAhCSYr2QvIEmYpgnTND/72mw2w2w2k7QiknQoAILJZrOwLAumaS7/n0qlPL12MplgsVhgOBxiPB5jPB5THEiosBswIKZpwrZt2LaNTCYj/Pnz+Rz9fh+dTgfj8Vj480myoQD4wDAM5PN55PN5PHr0KLL3nc/naDQa6Pf7WCwWkb0viS8UgC2wLAvFYhGHh4dS1+E4DlqtFhoN3uROgkEB8EA2m0W5XA7FxA/CfD5HrVZDv9/39P3tdnvlz/D111+LXhrRBKYBN2CaJur1Oi4uLpTb/ACQSqXw+vVrnJ2dwTCMjd+bzWZX/gyTySSs5RENoACsoVwuo9frSTf3vbC/v4/Ly0tks9m131Mur778mYHFZEMBuINlWej1enjx4gV2dnZkL8czOzs7uLi4WLnR153+AAUg6VAAbpHP59FutyON7IvmxYsXqNfrn30tn8+v/f7hcBj2kojCMAh4Q71eF27uTyYTDIdDzGaz5Uk7Ho8/S+EZhgHLsgB8KiLKZrOBrY/JZIJCoQDDMPD+/fu138cAYLJJvAAYhoF6vY79/X0hzxsMBuj3+4Fz9W5xURBRmkwmmM1ma3+20WiEQqHg+/lEfxItAIZhCDH53bx8q9USXqBjmibK5XIowcjz83PUajXhzyX6kNgYgKjN32w2sbe3h0ajEUp13mw2Q6VSwbNnz+A4jtBn0/8niRWAarUaaPNPJhMcHByEtvHvMhwOsbe3JzRvzwwASaQAVKvVQCb1YDBAoVCIfAMtFgsUCgUhIuA4DjsNSfIEwLZtHB0d+X59t9tFqVSS1oyzWCxQKpUCuwM0/wmQMAFwS3v9MhgMUKlUBK7IH25cIAg0/wmQMAGo1+u+8+uTyUSJze/S7/cxGo18v54WAAESJAD5fD5QQ0+lUlGuBz9IOzAtAAIkZCSYYRhrm2G80Gw2ldwww+EQo9Foa2FzR4/pSrFYvLf78S7D4ZBWzwoSIQDFYtHzXL67uEU+qtJqtbYWABXFzCumaeLk5GTr17mzFsnnxN4FMAwDxWLR9+vDqO4TSb/f3zojoLMAbGp53gQ3/2piLwD5fD5QY02n0xG4mnDwOhHIRWcBsG1769fM53Otf+Ywib0ABDn93WYa1dlWAHQ+Df1YADr/vGETawGwLMu37w9sv7Fksc0HPEjqUDa2bfuy5igA64m1AGwahOEFXczGxWLhuTxYl59pFfT/xRNrAfDjL95G5eDfXbx+yHUWAL/+vw5unCxiKwDbXMm1Dp02i9e16noa+v196uLGySK2AuDXXLyNThaAl1NO5w5Av9acroIXFbEVAHfOXhC2rTaTiZcPuk4WzV0oAOFAAQj5GSqh62YwDMNXH4fuJc9REFsBEHF662QBAPen+HQVAEb/wyO2AiBitn/cLABdXQC/5j8DgPcTWwEQgYhAYpRs2uDz+Vxbc5j+f3hQADaQyWS0cgM2bXBdT3/LsnxV/+lc8RglFIB7CFpNqAq6noY8/cOFAnAPQZqJVEJXC4D+f7hQAO4hlUppIwKbXAAdT0TDMHwFcx3H0Vbwoia2V4P99NNPwq73dhwHe3t72gbRdCWfz+P09HTr1w0GA5RKpRBWFD9iawGIPAF2dnZwdnYm7HnEG/T/wye2MwFns1mgKcB3yWQyKJfLgSbxku0QXQBkmiZM01z5d4vFIpFuQ2wFYDweC79R98WLF5jNZlqMCdOdbDbry4VzHAemacK27eWG3zaV6E6CGo/HGA6HGI/HsXX/YhsDsCwLb968Ef5cx3Gk3AuYNKrVaqAr3EQzGo3Q7/fR7/e17ahcRWwFABAbCLwNRSB8Li8vA89zCIvBYIBWqxWLWENsg4BAeLngnZ0dtNvt2PUKqIKIYS5hsr+/j4uLC7Tbbe3Kxe8SawEI01enCIRH0FFuUZHJZHBxcYFqtapVyfhtYi0Aw+EQ8/k8tOe7IqDLB1YHTNPUrvz66OgIvV5Py8Mg1gIABLtA0ws7Ozt4/fq1NtWCqpLNZtFut/H+/XshrdxRk0ql8ObNG+3EK9ZBQJeoAkrdbhe1Wi22KaMwsG0bxWJRaM2GbI6Pj7VJFSdCAGzbxuvXryN5r8lkglKpFKtUURhks1mUy+XQNv7dceDD4XAZsIsiyKiLCCRCAADg7OwM+/v7kbyX4zioVCrsSFuBZVmoVqvCN36320Wn08FsNvMkvoZhwLZt5PP50ETo2bNnyqcKEyMAhmHg8vIylLqAdZyfn6NWq0X2fipjGAaq1arw6kyXg4MD33UZYYmS4zjI5XJKW4OxDwK6LBYLVCqVSN/z6OgI7XZ7bf15Usjn87i8vAxt8we9/Xc8HqNQKODVq1cCV3UdIK7X60KfKZrECABwXRjU7XYjfc9MJoNer5fIVKFpmmi32zg9PQ3V8hJlZrdaLRwcHMBxHCHPA65//ypnBhIlAABQq9U8X6QpCjdVWK1WI31fmeTzefR6vUii+yL9bNcaEEm5XBb6PJEkTgAWiwVKpZJQlfeKzgUjXjEMA2dnZ6Gf+rcRHWgbj8c4Pj4W9rxUKqWsFZA4AQCuZwWIVnmvPHr0CG/evIll4ZBlWej1eltnW7rdru8pvm7rrmg6nQ4Gg4Gw56lqBSRSAADxKr8tJycnODs707aG/C7FYhFv3rzZKr8+Go1wcHCASqXi2yoKM81WqVSEWYqpVErJOFBiBQC4VnmZIrC/vx8Ll6Ber+Pk5MTz9zuOg+Pj42VLtd/hH0C4ArBYLNBqtYQ9jwKgILJFQNcacuDa3+/1elul9waDAfb29j6rkguyMcIutGm1WsKsAAqAosgWAQA4PT1VPmd8G9ff99q44zgOnj9/jlKp9EWvhN+e+tFoFHrfxWKxEFbSu7Ozo9z8AArADSqIwOHhIdrttvJxAcuy0G63Pfv7o9EIe3t7K0ujTdP03f0XVZmtyJp+CoDCdDod4YUg25LJZJQWAdu20W63PfvszWYThUJh7UmtsvnvMh6Phc2VoAAojlsIEuYgkft49OiRksHBfD6P169fe9r8juPg2bNn985j8LshHMeJtNFG1Hup9julAKxgPB4jl8tFXjF4m1QqpdTIsW1u6ZlMJsjlcp42jd8Ozai77ES9X5TNaF6gAKxhsVggl8tF3jtwG1XmDm6z+bvdLgqFgqfiHB3MfxeRxUYquQEUgHuoVCpSg4OyRcC2bc+bv9lsolKpeI7M6yQAqvf1+4UC4AE3OCgrLiBLBCzL8pyaPD4+3nr+YhD/X8adDKKCwyoFeCkAHnHjAiLrw7fB7S2P6sPjtvLe57O6VX3bpsosy/I9lkvWpCVRoiPbpbsNBWAL3E7C4+NjKanCR48eRXZL8Ww2u3ejuTck+cmTB/GD42qOy4AC4INOpyMtS5DJZCKbK1CpVNYGQYNej6aT/x9nKAA+mc1myOVyOD8/j/y9j46OIoskrxKBoJvfMAzfg0LuTvslwaAABKRWq+H58+eRuwRRthLfFgERF6MGOf05aVksFAAB9Pv9yF2CnZ2dSEeMVSoVnJ+fC7kVOen+v0q3SlMABOFOGYqycOjw8DDSopJarSbkw5t0/1+lm6MoAAJxR4+LHi+9CZ1aiIHrFJjfctjJZCJ188RxvDsFIARarVZkcQGVB06uQmf/X9R1YnQBEkC/30ehUIhEBFQdOLkKXc1/kac/XYCEEFVXoS5WQJDhH0A8BMDv9OOwoACEjBscDFsEdLACggQsZZVgu4gKtqpk/gMUgEhYLBahi0AqlVKqxnwVupr/gLj6fQpAQolCBFR3A3TO/4sSANk/x10oABEStgioOHbaxbZt3+k/We2/LkE6F2+jYhkzBSBiwrybMJVKKZurDnL6y07/ifL/Zf8cq6AASCDMuwlVjQPo7P+Lcq1k/xyroABIIqy7CVUUANM0A5nQstN/QVKXLo7j0AIgn9PpdIT3Dqg0cNIlyOkv228WFVcRebmISCgAkqnValLvIIgCnf1/Ude4i7xkVCRfyV7AJorF4sqe906no1w01S9uA9HFxYWQ5/kdtBEWhmH4nv0PyDX/bdsWEv0fjUbKfl6VFoB1V06Px2Nl/0H9MBwOcX5+jqOjI9lLEU5Ql0SmAIg6/bedlhwlyroAm4JZKga6gtJoNKTeSRgWQXxome2/2WxWiDU1Go2UjP67KCsAquazw2KxWCjrJwZBV/9fVG+Fyqc/oLAAbDrl4yoOqkaK/RK0gk7WyZmU0x+gACjFbDaT3vUmkqApNFmbR9SsxVqtJuQ5YaKsAGza5HEVAEDNajG/BBEAWUJYLBaFFP6cn58r1/m3CmUFYNMvQdRoJhWJiwAYhqHd8A/DMIT4/o7jKO/7uygpAF6i/CpWvIkg6KmhSlGRjuZ/vV733bF4m21uSJaNkgLgxcSPsxsQZGyUKvURQQRaRvuvbduBCpZcBoOB9OrFbVBSALxYAHGsBRCBKgKgU/efaZpCxqvP53NUKhUBK4oObQUgri4AEGwDqCAA2Ww2kCkd9QkqyvQvlUramP4uSgqAF/NeRKQ2jqgQRNTJ/69Wq0Jy/q9evdIi6n8XJQXA6+ZWeQSWLFT4EAaxzqJs/83n80L6L7rdrrZVnMoJwDa+fZzdAD/IvjoL0Gf2v2VZOD09DfycyWSiRcHPOpQTgG2uvI6rBeBX2FQw/4OKchT+v2VZaLfbgZ8zmUxQKBSki24QlBOAbT5AOszC98M2IngbFdJPqvv/pmmi3W4HDvo5jqNVvn8dygnAtvl91Wfh+8GPCT2fz5WwAILk0sN2YQzDwNnZmZDNXygUlIi3BEV7AYibG+DXhObpvxnX7A+aPYrT5gcUFIBtUzK6XIzpFb+bSIUotKr+Pzf/epQSAL/lvUkXAFVmzqloAWSzWSE+/3w+j93mB2IiAJlMJhYpQb9DKFXoPAs6/COMa7Pz+TwuLi4Cb/7JZIJcLhe7zQ8oJgBBNrEO12Pfh58hlKpMnVHN/K/X60Ly/IPBQPtU3yaUEoAgHX6ZTEbrgKBt275KUlU4/QF1zH/LstDr9XB4eBj4Wc1mU8v6/m2IjQAA13XdfnPoMjEMw9cYqsFgoMTpbxhGoHp6Ue2/xWJRWLDv+fPnyohrmCglAEGbMlKplLB5blFSLpe39p8dx1GmBFX27H+3uOfk5ESYv69CWjUKlBEAUQM+Dg8PtcoK+G1IabVaSkT+geDmf5DNVi6X0ev1hHT0NZtN5HI5Zf5do0CZm4FETvipVqsYj8fKR20ty/JlsYxGI6XMUxn+fz6f92U5rcId5KGCOxU1ylgAItN4Ozs7aLfbSvcJuMUp25qsbg26KliWFcjs3rb9183rn56eCtn87qmfxM0PKCQAomf8qSwCtm37Lk6pVCpKmahRnf75fB69Xg8XFxfCLu04ODhAo9GIdZT/PmLpAri4IqBSBVe5XMaLFy98vbbZbCoXnArT/zdNE/l8Hvl8Xtgo+Pl8jkajEbtbmPzyIJ1O/0P2IgDg559/3vj3juMEMjVfvXoltV7eHTzp9/TqdrtKmf7Adfrv48ePgZ7xzTfffHYCG4YB27aFTel1cRwHrVYLrVYr0Sf+XZSwAO47/QeDARqNRqCa7pOTE9i2HbkJbRgGisWi71MfUHPzA8FPf7f917IsZLNZZLNZoZse4Ma/Dy0EYDgcYjweo1AoBBKBTCaD9+/fo9vtotFohCoErvlaLBYDWS6qbn4guACYpomffvpJyETeu3Dje0MJF+A+v/jbb79dblbLsnB2dibEJ3Qvcej3+0I+JKLNV5U3P4DQNm8QXB9f1O807ighAPV6fW3t9nw+x97e3mdfMwxDSMnnbdymmuFwiMVi4SlomM1mYZrm0oQVuZ5ms6lUrv8u2WwWFxcXspexZDAYoNVqJTad5xflXYBVv9DFYoFcLrdROLYlk8kgk8l8YYncHVMVNO99H26eX7Vo/11UaLyaz+dotVro9/tKpUZ1QgkB2BQZ37QR3OqtarUa2qaM8gKSyWSCUqmkxYdZlgDM53P0+310Oh1lUrs6I10AvAQAN9HpdDAcDgOl2FRAdZP/NqZpRnpF+2g0Qr/fXwaDiTiUFgCvU2JnsxkKhQKKxSLK5bJygalNjEYj5ar77iPs038ymSzjMW5MhoSDdAHY1AOwrR/carXQ6XRQLpeFXPkUJjo3oIjs23DnGbrNWzr+e+iMdAHYZAH4CYQtFgvUajW0Wi2Uy2VhQUJRTCaTpVDpStAUZxR1GMQb0puB1glA0Ckxs9kMlUoF3377LZrNJubzue9niaDb7eLZs2fI5XJab34R5r9KswySjnQLYF23nihTcDabodFooNFoLIt0bNuOJE4gutBIBYIKgKjxX0QMShQCycCtPc9ms8KyB6PRaOnHxjV4dXl5GSgDMBgMUCqVBK6IBEG6BSALd5O6mKYJ0zSXAS73z6uYzWZLE3abykHdCTr7H1DjBmPyicQKwF3cTc0P6HpERP/576sW0oOARB+CDludz+eJsJR0ggJAPGEYRuCyaJ7+6kEBIJ4Qkf6jAKgHBYB4gv5/PKEAEE+IGP/F4h/1oACQexExA4Gnv5pQAMi9iLhqjQKgJhQAci/0/+MLBYBsxDTNwOm/0WgUy7LoOEABIBvh6R9vKABkI8z/xxsKANlIUAvAcRwKgMJQAMhaRMxN4OZXGwoAWQv9//hDASBrof8ffygAZCUiZv+z/Vd9KABkJTz9kwEFgKyEApAMKADkCwzDEDIoVfULTgkFgKxARPSf5b96QAEgX0DzPzlQAMgXMP+fHCgA5DNEzP4HQPNfEygA5DNEXf3N/L8eUADIZ4gSAKIHFACyRMTwD6IXFACypFwuC3uWiEAiCR8KAAFwffofHh4Kex5dCT2gABAYhoGzszOhzzw6OoJlWUKfScRDAUg4hmGg3W6H4vu3222KgOL8Znd396XsRZDoMQwDf/7zn/G3v/1NSN5/Fb/97W/x3Xff4Q9/+AMWiwVvBlKQB+l0+h+yF0HCxzRNmKYJy7KQzWaRzWYDj/vaFsdxMB6PMRwOMR6Pl6JAYZAHBSCGVKtV5PP5yDe4KLrdLiqViuxlJALGAGKIiLv8ZEKLIDooADFERC+/TCgA0UEBiBmGYcheQmAoANFBAYgZcUi7sZEoOigAMSMOAsBW4uigAMQM3V2A0WgkewmJ4ivZCyBiGY/HaDabspfhG/r/0cI6AEISDF0AQhIMBYCQBEMBICTBUAAISTAUAEISDAWAkARDASAkwTwE8E72IgghUnhHC4CQBPMQwAfZiyCESOHDQwBT2asghEhhSguAkOTy4QEAsCGIkOQxnU4fuEHAj1JXQgiJmo/ApzqAt/LWQQiRwFvgkwD8IG0ZhBAZ/AAAD9w/pdPpKYA/SloMISQ6fplOp2ng81LgH+WshRASMcu9flsAGhIWQgiJnuVeXwrAdDqdgn0BhMSddzd7HcCX3YAvI10KISRqXt7+w4O7f5tOp98C+FNEiyGERMe76XT65PYXVnUDlqNZCyEkYr7Y27+5+4Wrq6v/293dfQDgSRQrIoREwl+n02n77he/cAFc0un0BwDfhLokQkgUfJxOp49X/cWmgSDfA/g1lOUQQqLiV1zv5ZWsFYDpdPph0wsJIVrw/c1eXskXMYDbXF1d/e/u7u4vAJ4KXxYhJGyOVvn9t9koAABwdXX1gSJAiHYcTafTH+77pnsFAFiKwEcA/wrgdwEXRggJj18BPLvv5HdZmwVYRTqdfozrNkJmBwhRj4+4x+e/y1YC4JJOp18C+E8/ryWEhMJfp9Ppy21f5EsAgKU10ADLhgmRyTsA5W1O/dv4FgCXdDr9BNclhn8J+ixCiGf+DqAxnU7fBnlIYAFwSafTaVwLwVNwshAhYfALrod5NG639AZBmADc5sY9eHrzHwOGhPjnI643/Y9+zfxNhCIAd7lxEx4D2MWnJiPGDgj5hDuM5y2AKwAfgpr3Xvh/hENXm+CaxHYAAAAASUVORK5CYII="/>'.__( 'SEO', 'wp-seopress' ),
17
+ 'href' => admin_url( 'admin.php?page=seopress-option' ),
18
+ ));
19
+ $wp_admin_bar->add_menu( array(
20
+ 'parent' => 'seopress_custom_top_level',
21
+ 'id' => 'seopress_custom_sub_menu_titles',
22
+ 'title' => __( 'Titles & Metas', 'wp-seopress' ),
23
+ 'href' => admin_url( 'admin.php?page=seopress-titles' ),
24
+ ));
25
+ $wp_admin_bar->add_menu( array(
26
+ 'parent' => 'seopress_custom_top_level',
27
+ 'id' => 'seopress_custom_sub_menu_xml_sitemap',
28
+ 'title' => __( 'XML Sitemap', 'wp-seopress' ),
29
+ 'href' => admin_url( 'admin.php?page=seopress-xml-sitemap' ),
30
+ ));
31
+ $wp_admin_bar->add_menu( array(
32
+ 'parent' => 'seopress_custom_top_level',
33
+ 'id' => 'seopress_custom_sub_menu_social',
34
+ 'title' => __( 'Social', 'wp-seopress' ),
35
+ 'href' => admin_url( 'admin.php?page=seopress-social' ),
36
+ ));
37
+ $wp_admin_bar->add_menu( array(
38
+ 'parent' => 'seopress_custom_top_level',
39
+ 'id' => 'seopress_custom_sub_menu_google_analytics',
40
+ 'title' => __( 'Google Analytics', 'wp-seopress' ),
41
+ 'href' => admin_url( 'admin.php?page=seopress-google-analytics' ),
42
+ ));
43
+ $wp_admin_bar->add_menu( array(
44
+ 'parent' => 'seopress_custom_top_level',
45
+ 'id' => 'seopress_custom_sub_menu_advanced',
46
+ 'title' => __( 'Advanced', 'wp-seopress' ),
47
+ 'href' => admin_url( 'admin.php?page=seopress-advanced' ),
48
+ ));
49
+ $wp_admin_bar->add_menu( array(
50
+ 'parent' => 'seopress_custom_top_level',
51
+ 'id' => 'seopress_custom_sub_menu_import_export',
52
+ 'title' => __( 'Import / Export / Reset', 'wp-seopress' ),
53
+ 'href' => admin_url( 'admin.php?page=seopress-import-export' ),
54
+ ));
55
+ if ( is_plugin_active( 'wp-seopress-pro/seopress-pro.php' ) ) {
56
+ $wp_admin_bar->add_menu( array(
57
+ 'parent' => 'seopress_custom_top_level',
58
+ 'id' => 'seopress_custom_sub_menu_pro',
59
+ 'title' => __( 'PRO', 'wp-seopress' ),
60
+ 'href' => admin_url( 'admin.php?page=seopress-pro-page' ),
61
+ ));
62
+ }
63
+ }
64
+ add_action( 'admin_bar_menu', 'seopress_admin_bar_links', 99 );
inc/admin/ajax.php CHANGED
@@ -10,3 +10,88 @@ function seopress_flush_permalinks() {
10
  }
11
  add_action('wp_ajax_seopress_flush_permalinks', 'seopress_flush_permalinks');
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  }
11
  add_action('wp_ajax_seopress_flush_permalinks', 'seopress_flush_permalinks');
12
 
13
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
14
+ //Dashboard toggle features
15
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
16
+ function seopress_toggle_features() {
17
+ if ( isset( $_POST['feature']) && isset( $_POST['feature_value'] )) {
18
+ $seopress_toggle_options = get_option('seopress_toggle');
19
+ $seopress_toggle_options[$_POST['feature']] = $_POST['feature_value'];
20
+ update_option('seopress_toggle', $seopress_toggle_options, yes);
21
+ }
22
+ die();
23
+ }
24
+ add_action('wp_ajax_seopress_toggle_features', 'seopress_toggle_features');
25
+
26
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
27
+ //Yoast migration
28
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
29
+ function seopress_yoast_migration() {
30
+ global $post;
31
+ $args = array(
32
+ 'posts_per_page' => '-1',
33
+ 'post_type' => 'any',
34
+ );
35
+
36
+ $yoast_query = get_posts( $args );
37
+
38
+ if ($yoast_query) {
39
+ foreach ($yoast_query as $post) {
40
+ if (get_post_meta($post->ID, '_yoast_wpseo_title', true) !='') { //Import title tag
41
+ update_post_meta($post->ID, '_seopress_titles_title', get_post_meta($post->ID, '_yoast_wpseo_title', true));
42
+ }
43
+ if (get_post_meta($post->ID, '_yoast_wpseo_metadesc', true) !='') { //Import meta desc
44
+ update_post_meta($post->ID, '_seopress_titles_desc', get_post_meta($post->ID, '_yoast_wpseo_metadesc', true));
45
+ }
46
+ if (get_post_meta($post->ID, '_yoast_wpseo_opengraph-title', true) !='') { //Import Facebook Title
47
+ update_post_meta($post->ID, '_seopress_social_fb_title', get_post_meta($post->ID, '_yoast_wpseo_opengraph-title', true));
48
+ }
49
+ if (get_post_meta($post->ID, '_yoast_wpseo_opengraph-description', true) !='') { //Import Facebook Desc
50
+ update_post_meta($post->ID, '_seopress_social_fb_desc', get_post_meta($post->ID, '_yoast_wpseo_opengraph-description', true));
51
+ }
52
+ if (get_post_meta($post->ID, '_yoast_wpseo_opengraph-image', true) !='') { //Import Facebook Image
53
+ update_post_meta($post->ID, '_seopress_social_fb_img', get_post_meta($post->ID, '_yoast_wpseo_opengraph-image', true));
54
+ }
55
+ if (get_post_meta($post->ID, '_yoast_wpseo_twitter-title', true) !='') { //Import Twitter Title
56
+ update_post_meta($post->ID, '_seopress_social_twitter_title', get_post_meta($post->ID, '_yoast_wpseo_twitter-title', true));
57
+ }
58
+ if (get_post_meta($post->ID, '_yoast_wpseo_twitter-description', true) !='') { //Import Twitter Desc
59
+ update_post_meta($post->ID, '_seopress_social_twitter_desc', get_post_meta($post->ID, '_yoast_wpseo_twitter-description', true));
60
+ }
61
+ if (get_post_meta($post->ID, '_yoast_wpseo_twitter-image', true) !='') { //Import Twitter Image
62
+ update_post_meta($post->ID, '_seopress_social_twitter_img', get_post_meta($post->ID, '_yoast_wpseo_twitter-image', true));
63
+ }
64
+ if (get_post_meta($post->ID, '_yoast_wpseo_meta-robots-noindex', true) =='1') { //Import Robots NoIndex
65
+ update_post_meta($post->ID, '_seopress_robots_index', "yes");
66
+ }
67
+ if (get_post_meta($post->ID, '_yoast_wpseo_meta-robots-nofollow', true) =='1') { //Import Robots NoFollow
68
+ update_post_meta($post->ID, '_seopress_robots_follow', "yes");
69
+ }
70
+ if (get_post_meta($post->ID, '_yoast_wpseo_meta-robots-adv', true) !='') { //Import Robots NoOdp, NoImageIndex, NoArchive, NoSnippet
71
+ $yoast_wpseo_meta_robots_adv = get_post_meta($post->ID, '_yoast_wpseo_meta-robots-adv', true);
72
+
73
+ if (strpos($yoast_wpseo_meta_robots_adv, 'noodp') !== false) {
74
+ update_post_meta($post->ID, '_seopress_robots_odp', "yes");
75
+ }
76
+ if (strpos($yoast_wpseo_meta_robots_adv, 'noimageindex') !== false) {
77
+ update_post_meta($post->ID, '_seopress_robots_imageindex', "yes");
78
+ }
79
+ if (strpos($yoast_wpseo_meta_robots_adv, 'noarchive') !== false) {
80
+ update_post_meta($post->ID, '_seopress_robots_archive', "yes");
81
+ }
82
+ if (strpos($yoast_wpseo_meta_robots_adv, 'nosnippet') !== false) {
83
+ update_post_meta($post->ID, '_seopress_robots_snippet', "yes");
84
+ }
85
+ }
86
+ if (get_post_meta($post->ID, '_yoast_wpseo_canonical', true) !='') { //Import Canonical URL
87
+ update_post_meta($post->ID, '_seopress_robots_canonical', get_post_meta($post->ID, '_yoast_wpseo_canonical', true));
88
+ }
89
+ }
90
+ }
91
+
92
+ wp_reset_query();
93
+
94
+ die();
95
+ }
96
+ add_action('wp_ajax_seopress_yoast_migration', 'seopress_yoast_migration');
97
+
inc/functions/options-advanced-admin.php CHANGED
@@ -3,6 +3,77 @@ defined( 'ABSPATH' ) or die( 'Please don&rsquo;t call the plugin directly. Thank
3
 
4
  //Advanced
5
  //=================================================================================================
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  //Stop words
7
  function seopress_advanced_advanced_stop_words_option() {
8
  $seopress_advanced_advanced_stop_words_option = get_option("seopress_advanced_option_name");
@@ -13,7 +84,7 @@ function seopress_advanced_advanced_stop_words_option() {
13
  return $seopress_advanced_advanced_stop_words_option['seopress_advanced_advanced_stop_words'];
14
  }
15
  }
16
- };
17
 
18
  if (seopress_advanced_advanced_stop_words_option() !='') {
19
  function seopress_advanced_advanced_stop_words_hook($slug) {
3
 
4
  //Advanced
5
  //=================================================================================================
6
+ //Admin bar
7
+ function seopress_advanced_appearance_adminbar_option() {
8
+ $seopress_advanced_appearance_adminbar_option = get_option("seopress_advanced_option_name");
9
+ if ( ! empty ( $seopress_advanced_appearance_adminbar_option ) ) {
10
+ foreach ($seopress_advanced_appearance_adminbar_option as $key => $seopress_advanced_appearance_adminbar_value)
11
+ $options[$key] = $seopress_advanced_appearance_adminbar_value;
12
+ if (isset($seopress_advanced_appearance_adminbar_option['seopress_advanced_appearance_adminbar'])) {
13
+ return $seopress_advanced_appearance_adminbar_option['seopress_advanced_appearance_adminbar'];
14
+ }
15
+ }
16
+ }
17
+
18
+ if (seopress_advanced_appearance_adminbar_option() !='') {
19
+ add_action( 'admin_bar_menu', 'seopress_advanced_appearance_adminbar_hook', 999 );
20
+
21
+ function seopress_advanced_appearance_adminbar_hook( $wp_admin_bar ) {
22
+ $wp_admin_bar->remove_node( 'seopress_custom_top_level' );
23
+ }
24
+ }
25
+
26
+ //Columns in post types
27
+ function seopress_advanced_appearance_title_col_option() {
28
+ $seopress_advanced_appearance_title_col_option = get_option("seopress_advanced_option_name");
29
+ if ( ! empty ( $seopress_advanced_appearance_title_col_option ) ) {
30
+ foreach ($seopress_advanced_appearance_title_col_option as $key => $seopress_advanced_appearance_title_col_value)
31
+ $options[$key] = $seopress_advanced_appearance_title_col_value;
32
+ if (isset($seopress_advanced_appearance_title_col_option['seopress_advanced_appearance_title_col'])) {
33
+ return $seopress_advanced_appearance_title_col_option['seopress_advanced_appearance_title_col'];
34
+ }
35
+ }
36
+ }
37
+ function seopress_advanced_appearance_meta_desc_col_option() {
38
+ $seopress_advanced_appearance_meta_desc_col_option = get_option("seopress_advanced_option_name");
39
+ if ( ! empty ( $seopress_advanced_appearance_meta_desc_col_option ) ) {
40
+ foreach ($seopress_advanced_appearance_meta_desc_col_option as $key => $seopress_advanced_appearance_meta_desc_col_value)
41
+ $options[$key] = $seopress_advanced_appearance_meta_desc_col_value;
42
+ if (isset($seopress_advanced_appearance_meta_desc_col_option['seopress_advanced_appearance_meta_desc_col'])) {
43
+ return $seopress_advanced_appearance_meta_desc_col_option['seopress_advanced_appearance_meta_desc_col'];
44
+ }
45
+ }
46
+ }
47
+
48
+ if (seopress_advanced_appearance_title_col_option() !='' || seopress_advanced_appearance_meta_desc_col_option() !='') {
49
+ function seopress_add_columns() {
50
+ foreach (seopress_get_post_types() as $key => $value) {
51
+ add_filter('manage_'.$key.'_posts_columns', 'seopress_title_columns');
52
+ add_action('manage_'.$key.'_posts_custom_column', 'seopress_title_display_column', 10, 2);
53
+ }
54
+
55
+ function seopress_title_columns($columns) {
56
+ if(seopress_advanced_appearance_title_col_option() !='') {
57
+ $columns['seopress_title'] = __('Title tag', 'wp-seopress-pro');
58
+ }
59
+ if(seopress_advanced_appearance_meta_desc_col_option() !='') {
60
+ $columns['seopress_desc'] = __('Meta Desc.', 'wp-seopress-pro');
61
+ }
62
+ return $columns;
63
+ }
64
+
65
+ function seopress_title_display_column($column, $post_id) {
66
+ if ($column == 'seopress_title') {
67
+ echo get_post_meta($post_id, "_seopress_titles_title", true);
68
+ }
69
+ if ($column == 'seopress_desc') {
70
+ echo get_post_meta($post_id, "_seopress_titles_desc", true);
71
+ }
72
+ }
73
+ }
74
+ add_action('admin_menu', 'seopress_add_columns', 999);
75
+ }
76
+
77
  //Stop words
78
  function seopress_advanced_advanced_stop_words_option() {
79
  $seopress_advanced_advanced_stop_words_option = get_option("seopress_advanced_option_name");
84
  return $seopress_advanced_advanced_stop_words_option['seopress_advanced_advanced_stop_words'];
85
  }
86
  }
87
+ }
88
 
89
  if (seopress_advanced_advanced_stop_words_option() !='') {
90
  function seopress_advanced_advanced_stop_words_hook($slug) {
inc/functions/options-google-analytics.php ADDED
@@ -0,0 +1,285 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Please don&rsquo;t call the plugin directly. Thanks :)' );
3
+
4
+ //Google Analytics
5
+ //=================================================================================================
6
+ //Enabled
7
+ function seopress_google_analytics_enable_option() {
8
+ $seopress_google_analytics_enable_option = get_option("seopress_google_analytics_option_name");
9
+ if ( ! empty ( $seopress_google_analytics_enable_option ) ) {
10
+ foreach ($seopress_google_analytics_enable_option as $key => $seopress_google_analytics_enable_value)
11
+ $options[$key] = $seopress_google_analytics_enable_value;
12
+ if (isset($seopress_google_analytics_enable_option['seopress_google_analytics_enable'])) {
13
+ return $seopress_google_analytics_enable_option['seopress_google_analytics_enable'];
14
+ }
15
+ }
16
+ }
17
+
18
+ //UA
19
+ function seopress_google_analytics_ua_option() {
20
+ $seopress_google_analytics_ua_option = get_option("seopress_google_analytics_option_name");
21
+ if ( ! empty ( $seopress_google_analytics_ua_option ) ) {
22
+ foreach ($seopress_google_analytics_ua_option as $key => $seopress_google_analytics_ua_value)
23
+ $options[$key] = $seopress_google_analytics_ua_value;
24
+ if (isset($seopress_google_analytics_ua_option['seopress_google_analytics_ua'])) {
25
+ return $seopress_google_analytics_ua_option['seopress_google_analytics_ua'];
26
+ }
27
+ }
28
+ }
29
+
30
+ //User roles
31
+ function seopress_google_analytics_roles_option() {
32
+ $seopress_google_analytics_roles_option = get_option("seopress_google_analytics_option_name");
33
+ if ( ! empty ( $seopress_google_analytics_roles_option ) ) {
34
+ foreach ($seopress_google_analytics_roles_option as $key => $seopress_google_analytics_roles_value)
35
+ $options[$key] = $seopress_google_analytics_roles_value;
36
+ if (isset($seopress_google_analytics_roles_option['seopress_google_analytics_roles'])) {
37
+ return $seopress_google_analytics_roles_option['seopress_google_analytics_roles'];
38
+ }
39
+ }
40
+ }
41
+
42
+ //Remarketing
43
+ function seopress_google_analytics_remarketing_option() {
44
+ $seopress_google_analytics_remarketing_option = get_option("seopress_google_analytics_option_name");
45
+ if ( ! empty ( $seopress_google_analytics_remarketing_option ) ) {
46
+ foreach ($seopress_google_analytics_remarketing_option as $key => $seopress_google_analytics_remarketing_value)
47
+ $options[$key] = $seopress_google_analytics_remarketing_value;
48
+ if (isset($seopress_google_analytics_remarketing_option['seopress_google_analytics_remarketing'])) {
49
+ return $seopress_google_analytics_remarketing_option['seopress_google_analytics_remarketing'];
50
+ }
51
+ }
52
+ }
53
+
54
+ //IP Anonymization
55
+ function seopress_google_analytics_ip_anonymization_option() {
56
+ $seopress_google_analytics_ip_anonymization_option = get_option("seopress_google_analytics_option_name");
57
+ if ( ! empty ( $seopress_google_analytics_ip_anonymization_option ) ) {
58
+ foreach ($seopress_google_analytics_ip_anonymization_option as $key => $seopress_google_analytics_ip_anonymization_value)
59
+ $options[$key] = $seopress_google_analytics_ip_anonymization_value;
60
+ if (isset($seopress_google_analytics_ip_anonymization_option['seopress_google_analytics_ip_anonymization'])) {
61
+ return $seopress_google_analytics_ip_anonymization_option['seopress_google_analytics_ip_anonymization'];
62
+ }
63
+ }
64
+ }
65
+
66
+ //Link attribution
67
+ function seopress_google_analytics_link_attribution_option() {
68
+ $seopress_google_analytics_link_attribution_option = get_option("seopress_google_analytics_option_name");
69
+ if ( ! empty ( $seopress_google_analytics_link_attribution_option ) ) {
70
+ foreach ($seopress_google_analytics_link_attribution_option as $key => $seopress_google_analytics_link_attribution_value)
71
+ $options[$key] = $seopress_google_analytics_link_attribution_value;
72
+ if (isset($seopress_google_analytics_link_attribution_option['seopress_google_analytics_link_attribution'])) {
73
+ return $seopress_google_analytics_link_attribution_option['seopress_google_analytics_link_attribution'];
74
+ }
75
+ }
76
+ }
77
+
78
+ //Cross Domain Enable
79
+ function seopress_google_analytics_cross_enable_option() {
80
+ $seopress_google_analytics_cross_enable_option = get_option("seopress_google_analytics_option_name");
81
+ if ( ! empty ( $seopress_google_analytics_cross_enable_option ) ) {
82
+ foreach ($seopress_google_analytics_cross_enable_option as $key => $seopress_google_analytics_cross_enable_value)
83
+ $options[$key] = $seopress_google_analytics_cross_enable_value;
84
+ if (isset($seopress_google_analytics_cross_enable_option['seopress_google_analytics_cross_enable'])) {
85
+ return $seopress_google_analytics_cross_enable_option['seopress_google_analytics_cross_enable'];
86
+ }
87
+ }
88
+ }
89
+
90
+ //Cross Domain
91
+ function seopress_google_analytics_cross_domain_option() {
92
+ $seopress_google_analytics_cross_domain_option = get_option("seopress_google_analytics_option_name");
93
+ if ( ! empty ( $seopress_google_analytics_cross_domain_option ) ) {
94
+ foreach ($seopress_google_analytics_cross_domain_option as $key => $seopress_google_analytics_cross_domain_value)
95
+ $options[$key] = $seopress_google_analytics_cross_domain_value;
96
+ if (isset($seopress_google_analytics_cross_domain_option['seopress_google_analytics_cross_domain'])) {
97
+ return $seopress_google_analytics_cross_domain_option['seopress_google_analytics_cross_domain'];
98
+ }
99
+ }
100
+ }
101
+
102
+ //Custom Dimension Author
103
+ function seopress_google_analytics_cd_author_option() {
104
+ $seopress_google_analytics_cd_author_option = get_option("seopress_google_analytics_option_name");
105
+ if ( ! empty ( $seopress_google_analytics_cd_author_option ) ) {
106
+ foreach ($seopress_google_analytics_cd_author_option as $key => $seopress_google_analytics_cd_author_value)
107
+ $options[$key] = $seopress_google_analytics_cd_author_value;
108
+ if (isset($seopress_google_analytics_cd_author_option['seopress_google_analytics_cd_author'])) {
109
+ return $seopress_google_analytics_cd_author_option['seopress_google_analytics_cd_author'];
110
+ }
111
+ }
112
+ }
113
+
114
+ //Custom Dimension Category
115
+ function seopress_google_analytics_cd_category_option() {
116
+ $seopress_google_analytics_cd_category_option = get_option("seopress_google_analytics_option_name");
117
+ if ( ! empty ( $seopress_google_analytics_cd_category_option ) ) {
118
+ foreach ($seopress_google_analytics_cd_category_option as $key => $seopress_google_analytics_cd_category_value)
119
+ $options[$key] = $seopress_google_analytics_cd_category_value;
120
+ if (isset($seopress_google_analytics_cd_category_option['seopress_google_analytics_cd_category'])) {
121
+ return $seopress_google_analytics_cd_category_option['seopress_google_analytics_cd_category'];
122
+ }
123
+ }
124
+ }
125
+
126
+ //Custom Dimension Tag
127
+ function seopress_google_analytics_cd_tag_option() {
128
+ $seopress_google_analytics_cd_tag_option = get_option("seopress_google_analytics_option_name");
129
+ if ( ! empty ( $seopress_google_analytics_cd_tag_option ) ) {
130
+ foreach ($seopress_google_analytics_cd_tag_option as $key => $seopress_google_analytics_cd_tag_value)
131
+ $options[$key] = $seopress_google_analytics_cd_tag_value;
132
+ if (isset($seopress_google_analytics_cd_tag_option['seopress_google_analytics_cd_tag'])) {
133
+ return $seopress_google_analytics_cd_tag_option['seopress_google_analytics_cd_tag'];
134
+ }
135
+ }
136
+ }
137
+
138
+ //Custom Dimension Post Type
139
+ function seopress_google_analytics_cd_post_type_option() {
140
+ $seopress_google_analytics_cd_post_type_option = get_option("seopress_google_analytics_option_name");
141
+ if ( ! empty ( $seopress_google_analytics_cd_post_type_option ) ) {
142
+ foreach ($seopress_google_analytics_cd_post_type_option as $key => $seopress_google_analytics_cd_post_type_value)
143
+ $options[$key] = $seopress_google_analytics_cd_post_type_value;
144
+ if (isset($seopress_google_analytics_cd_post_type_option['seopress_google_analytics_cd_post_type'])) {
145
+ return $seopress_google_analytics_cd_post_type_option['seopress_google_analytics_cd_post_type'];
146
+ }
147
+ }
148
+ }
149
+
150
+ //Custom Dimension Logged In
151
+ function seopress_google_analytics_cd_logged_in_user_option() {
152
+ $seopress_google_analytics_cd_logged_in_user_option = get_option("seopress_google_analytics_option_name");
153
+ if ( ! empty ( $seopress_google_analytics_cd_logged_in_user_option ) ) {
154
+ foreach ($seopress_google_analytics_cd_logged_in_user_option as $key => $seopress_google_analytics_cd_logged_in_user_value)
155
+ $options[$key] = $seopress_google_analytics_cd_logged_in_user_value;
156
+ if (isset($seopress_google_analytics_cd_logged_in_user_option['seopress_google_analytics_cd_logged_in_user'])) {
157
+ return $seopress_google_analytics_cd_logged_in_user_option['seopress_google_analytics_cd_logged_in_user'];
158
+ }
159
+ }
160
+ }
161
+
162
+ //Build Custom GA
163
+ function seopress_google_analytics_js() {
164
+ $seopress_google_analytics_html =
165
+ "<!-- Google Analytics -->
166
+ <script>
167
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
168
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
169
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
170
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
171
+ ";
172
+ if (seopress_google_analytics_ua_option() && seopress_google_analytics_ip_anonymization_option() =='1') {
173
+ $seopress_google_analytics_html .= "ga('create', '".seopress_google_analytics_ua_option()."', 'auto', {anonymizeIp: true});";
174
+ $seopress_google_analytics_html .= "\n";
175
+ } elseif (seopress_google_analytics_ua_option()) {
176
+ $seopress_google_analytics_html .= "ga('create', '".seopress_google_analytics_ua_option()."', 'auto');";
177
+ $seopress_google_analytics_html .= "\n";
178
+ }
179
+
180
+ if (seopress_google_analytics_cross_enable_option() =='1' && seopress_google_analytics_cross_domain_option()) {
181
+ $seopress_google_analytics_html .= "ga('require', 'linker');";
182
+ $seopress_google_analytics_html .= "\n";
183
+ $seopress_google_analytics_html .= "ga('linker:autoLink', ['".seopress_google_analytics_cross_domain_option()."'], false, true);";
184
+ $seopress_google_analytics_html .= "\n";
185
+ }
186
+
187
+ if (seopress_google_analytics_remarketing_option() =='1') {
188
+ $seopress_google_analytics_html .= "ga('require', 'displayfeatures');";
189
+ $seopress_google_analytics_html .= "\n";
190
+ }
191
+
192
+ if (seopress_google_analytics_link_attribution_option() =='1') {
193
+ $seopress_google_analytics_html .= "ga('require', 'linkid', 'linkid.js');";
194
+ $seopress_google_analytics_html .= "\n";
195
+ }
196
+
197
+ if (seopress_google_analytics_cd_author_option() !='') {
198
+ if (seopress_google_analytics_cd_author_option() !='none') {
199
+ if (is_singular()) {
200
+ $seopress_google_analytics_html .= "ga('set', '".seopress_google_analytics_cd_author_option()."', '".get_the_author()."');";
201
+ $seopress_google_analytics_html .= "\n";
202
+ }
203
+ }
204
+ }
205
+
206
+ if (seopress_google_analytics_cd_category_option() !='') {
207
+ if (seopress_google_analytics_cd_category_option() !='none') {
208
+ if (is_single() && has_category()) {
209
+ $categories = get_the_category();
210
+
211
+ if ( ! empty( $categories ) ) {
212
+ $get_first_category = esc_html( $categories[0]->name );
213
+ }
214
+ $seopress_google_analytics_html .= "ga('set', '".seopress_google_analytics_cd_category_option()."', '".$get_first_category."');";
215
+ $seopress_google_analytics_html .= "\n";
216
+ }
217
+ }
218
+ }
219
+
220
+ if (seopress_google_analytics_cd_tag_option() !='') {
221
+ if (seopress_google_analytics_cd_tag_option() !='none') {
222
+ if (is_single() && has_tag()) {
223
+ $tags = get_the_tags();
224
+ if ( ! empty( $tags ) ) {
225
+ $seopress_comma_count = count($tags);
226
+ foreach ($tags as $key => $value) {
227
+ $get_tags .= esc_html( $value->name );
228
+ if ( $key < $seopress_comma_count -1){
229
+ $get_tags .= ', ';
230
+ }
231
+ }
232
+ }
233
+ $seopress_google_analytics_html .= "ga('set', '".seopress_google_analytics_cd_tag_option()."', '".$get_tags."');";
234
+ $seopress_google_analytics_html .= "\n";
235
+ }
236
+ }
237
+ }
238
+
239
+ if (seopress_google_analytics_cd_post_type_option() !='') {
240
+ if (seopress_google_analytics_cd_post_type_option() !='none') {
241
+ if (is_single()) {
242
+ $seopress_google_analytics_html .= "ga('set', '".seopress_google_analytics_cd_post_type_option()."', '".get_post_type()."');";
243
+ $seopress_google_analytics_html .= "\n";
244
+ }
245
+ }
246
+ }
247
+
248
+ if (seopress_google_analytics_cd_logged_in_user_option() !='') {
249
+ if (seopress_google_analytics_cd_logged_in_user_option() !='none') {
250
+ if (wp_get_current_user()->user_login) {
251
+ $seopress_google_analytics_html .= "ga('set', '".seopress_google_analytics_cd_logged_in_user_option()."', '".wp_get_current_user()->user_login."');";
252
+ $seopress_google_analytics_html .= "\n";
253
+ }
254
+ }
255
+ }
256
+
257
+ $seopress_google_analytics_html .= "ga('send', 'pageview');";
258
+ $seopress_google_analytics_html .= "\n";
259
+ $seopress_google_analytics_html .= "</script>
260
+ <!-- End Google Analytics -->";
261
+ $seopress_google_analytics_html .= "\n";
262
+
263
+ echo $seopress_google_analytics_html;
264
+ }
265
+
266
+ if (seopress_google_analytics_enable_option() =='1' && seopress_google_analytics_ua_option() !='') {
267
+ if (is_user_logged_in()) {
268
+ global $wp_roles;
269
+
270
+ //Get current user role
271
+ if(isset(wp_get_current_user()->roles[0])) {
272
+ $seopress_user_role = wp_get_current_user()->roles[0];
273
+ //If current user role matchs values from SEOPress GA settings then apply
274
+ if (function_exists('seopress_google_analytics_roles_option')) {
275
+ if( array_key_exists( $seopress_user_role, seopress_google_analytics_roles_option())) {
276
+ //do nothing
277
+ } else {
278
+ add_action( 'wp_head', 'seopress_google_analytics_js', 999 );
279
+ }
280
+ }
281
+ }
282
+ } else {
283
+ add_action( 'wp_head', 'seopress_google_analytics_js', 999 );
284
+ }
285
+ }
inc/functions/options-import-export.php CHANGED
@@ -17,8 +17,13 @@ function seopress_export_settings() {
17
  $settings["seopress_activated"] = get_option( 'seopress_activated' );
18
  $settings["seopress_titles_option_name"] = get_option( 'seopress_titles_option_name' );
19
  $settings["seopress_social_option_name"] = get_option( 'seopress_social_option_name' );
20
- $settings["seopress_advanced_option_name"] = get_option( 'seopress_advanced_option_name' );
 
21
  $settings["seopress_xml_sitemap_option_name"] = get_option( 'seopress_xml_sitemap_option_name' );
 
 
 
 
22
 
23
  ignore_user_abort( true );
24
  nocache_headers();
@@ -30,7 +35,7 @@ function seopress_export_settings() {
30
  }
31
  add_action( 'admin_init', 'seopress_export_settings' );
32
 
33
- //Import WP Admin UI Settings from JSON
34
  function seopress_import_settings() {
35
  if( empty( $_POST['seopress_action'] ) || 'import_settings' != $_POST['seopress_action'] )
36
  return;
@@ -52,14 +57,19 @@ function seopress_import_settings() {
52
  update_option( 'seopress_activated', $settings["seopress_activated"] );
53
  update_option( 'seopress_titles_option_name', $settings["seopress_titles_option_name"] );
54
  update_option( 'seopress_social_option_name', $settings["seopress_social_option_name"] );
 
55
  update_option( 'seopress_advanced_option_name', $settings["seopress_advanced_option_name"] );
56
  update_option( 'seopress_xml_sitemap_option_name', $settings["seopress_xml_sitemap_option_name"] );
 
 
 
 
57
 
58
  wp_safe_redirect( admin_url( 'admin.php?page=seopress-import-export' ) ); exit;
59
  }
60
  add_action( 'admin_init', 'seopress_import_settings' );
61
 
62
- //Reset WP Admin UI Settings
63
  function seopress_reset_settings() {
64
  if( empty( $_POST['seopress_action'] ) || 'reset_settings' != $_POST['seopress_action'] )
65
  return;
17
  $settings["seopress_activated"] = get_option( 'seopress_activated' );
18
  $settings["seopress_titles_option_name"] = get_option( 'seopress_titles_option_name' );
19
  $settings["seopress_social_option_name"] = get_option( 'seopress_social_option_name' );
20
+ $settings["seopress_google_analytics_option_name"] = get_option( 'seopress_google_analytics_option_name' );
21
+ $settings["seopress_advanced_option_name"] = get_option( 'seopress_advanced_option_name' );
22
  $settings["seopress_xml_sitemap_option_name"] = get_option( 'seopress_xml_sitemap_option_name' );
23
+ $settings["seopress_pro_option_name"] = get_option( 'seopress_pro_option_name' );
24
+ $settings["seopress_pro_license_key"] = get_option( 'seopress_pro_license_key' );
25
+ $settings["seopress_pro_license_status"] = get_option( 'seopress_pro_license_status' );
26
+ $settings["seopress_toggle"] = get_option( 'seopress_toggle' );
27
 
28
  ignore_user_abort( true );
29
  nocache_headers();
35
  }
36
  add_action( 'admin_init', 'seopress_export_settings' );
37
 
38
+ //Import SEOPress Settings from JSON
39
  function seopress_import_settings() {
40
  if( empty( $_POST['seopress_action'] ) || 'import_settings' != $_POST['seopress_action'] )
41
  return;
57
  update_option( 'seopress_activated', $settings["seopress_activated"] );
58
  update_option( 'seopress_titles_option_name', $settings["seopress_titles_option_name"] );
59
  update_option( 'seopress_social_option_name', $settings["seopress_social_option_name"] );
60
+ update_option( 'seopress_analytics_option_name', $settings["seopress_analytics_option_name"] );
61
  update_option( 'seopress_advanced_option_name', $settings["seopress_advanced_option_name"] );
62
  update_option( 'seopress_xml_sitemap_option_name', $settings["seopress_xml_sitemap_option_name"] );
63
+ update_option( 'seopress_pro_option_name', $settings["seopress_pro_option_name"] );
64
+ update_option( 'seopress_pro_license_key', $settings["seopress_pro_license_key"] );
65
+ update_option( 'seopress_pro_license_status', $settings["seopress_pro_license_status"] );
66
+ update_option( 'seopress_toggle', $settings["seopress_toggle"] );
67
 
68
  wp_safe_redirect( admin_url( 'admin.php?page=seopress-import-export' ) ); exit;
69
  }
70
  add_action( 'admin_init', 'seopress_import_settings' );
71
 
72
+ //Reset SEOPress Settings
73
  function seopress_reset_settings() {
74
  if( empty( $_POST['seopress_action'] ) || 'reset_settings' != $_POST['seopress_action'] )
75
  return;
inc/functions/options-social.php CHANGED
@@ -14,7 +14,7 @@ function seopress_social_knowledge_type_option() {
14
  return $seopress_social_knowledge_type_option['seopress_social_knowledge_type'];
15
  }
16
  }
17
- };
18
 
19
  //Person name
20
  function seopress_social_knowledge_name_option() {
@@ -26,7 +26,7 @@ function seopress_social_knowledge_name_option() {
26
  return $seopress_social_knowledge_name_option['seopress_social_knowledge_name'];
27
  }
28
  }
29
- };
30
 
31
  //Logo
32
  function seopress_social_knowledge_img_option() {
@@ -38,7 +38,7 @@ function seopress_social_knowledge_img_option() {
38
  return $seopress_social_knowledge_img_option['seopress_social_knowledge_img'];
39
  }
40
  }
41
- };
42
 
43
  //Accounts
44
  //Facebook
@@ -51,7 +51,7 @@ function seopress_social_accounts_facebook_option() {
51
  return $seopress_social_accounts_facebook_option['seopress_social_accounts_facebook'];
52
  }
53
  }
54
- };
55
 
56
  //Twitter
57
  function seopress_social_accounts_twitter_option() {
@@ -63,7 +63,7 @@ function seopress_social_accounts_twitter_option() {
63
  return $seopress_social_accounts_twitter_option['seopress_social_accounts_twitter'];
64
  }
65
  }
66
- };
67
 
68
  //Google +
69
  function seopress_social_accounts_google_option() {
@@ -75,7 +75,7 @@ function seopress_social_accounts_google_option() {
75
  return $seopress_social_accounts_google_option['seopress_social_accounts_google'];
76
  }
77
  }
78
- };
79
 
80
  //Pinterest
81
  function seopress_social_accounts_pinterest_option() {
@@ -87,7 +87,7 @@ function seopress_social_accounts_pinterest_option() {
87
  return $seopress_social_accounts_pinterest_option['seopress_social_accounts_pinterest'];
88
  }
89
  }
90
- };
91
 
92
  //Instagram
93
  function seopress_social_accounts_instagram_option() {
@@ -99,7 +99,7 @@ function seopress_social_accounts_instagram_option() {
99
  return $seopress_social_accounts_instagram_option['seopress_social_accounts_instagram'];
100
  }
101
  }
102
- };
103
 
104
  //YouTube
105
  function seopress_social_accounts_youtube_option() {
@@ -111,7 +111,7 @@ function seopress_social_accounts_youtube_option() {
111
  return $seopress_social_accounts_youtube_option['seopress_social_accounts_youtube'];
112
  }
113
  }
114
- };
115
 
116
  //LinkedIn
117
  function seopress_social_accounts_linkedin_option() {
@@ -123,7 +123,7 @@ function seopress_social_accounts_linkedin_option() {
123
  return $seopress_social_accounts_linkedin_option['seopress_social_accounts_linkedin'];
124
  }
125
  }
126
- };
127
 
128
  //MySpace
129
  function seopress_social_accounts_myspace_option() {
@@ -135,7 +135,7 @@ function seopress_social_accounts_myspace_option() {
135
  return $seopress_social_accounts_myspace_option['seopress_social_accounts_myspace'];
136
  }
137
  }
138
- };
139
 
140
  //Soundcloud
141
  function seopress_social_accounts_soundcloud_option() {
@@ -147,7 +147,7 @@ function seopress_social_accounts_soundcloud_option() {
147
  return $seopress_social_accounts_soundcloud_option['seopress_social_accounts_soundcloud'];
148
  }
149
  }
150
- };
151
 
152
  //Tumblr
153
  function seopress_social_accounts_tumblr_option() {
@@ -159,7 +159,7 @@ function seopress_social_accounts_tumblr_option() {
159
  return $seopress_social_accounts_tumblr_option['seopress_social_accounts_tumblr'];
160
  }
161
  }
162
- };
163
 
164
  function seopress_social_accounts_jsonld_hook() {
165
 
@@ -226,7 +226,7 @@ function seopress_social_accounts_jsonld_hook() {
226
  if ($seopress_social_knowledge_img_option) {
227
  echo '"image": '.$seopress_social_knowledge_img_option.',';
228
  }
229
- echo '"name" : '.$seopress_social_knowledge_name_option.',"url" : '.json_encode(get_site_url()).'';
230
 
231
  $seopress_social_accounts_facebook_option ='';
232
  $seopress_social_accounts_twitter_option ='';
@@ -253,17 +253,17 @@ function seopress_social_accounts_jsonld_hook() {
253
  echo '}';
254
  echo '</script>';
255
  echo "\n";
256
- };
257
  add_action( 'wp_head', 'seopress_social_accounts_jsonld_hook', 1 );
258
 
259
  //Website Schema.org in JSON-LD
260
  function seopress_social_website_option() {
261
- $target = get_site_url().'/?s={search_term_string}';
262
  echo '<script type="application/ld+json">';
263
  echo '{
264
  "@context": "http://schema.org",
265
  "@type": "WebSite",
266
- "url" : '.json_encode(get_site_url()).',
267
  "potentialAction": {
268
  "@type": "SearchAction",
269
  "target": '.json_encode($target).',
@@ -288,7 +288,7 @@ function seopress_social_facebook_og_option() {
288
  return $seopress_social_facebook_og_option['seopress_social_facebook_og'];
289
  }
290
  }
291
- };
292
 
293
  //OG URL
294
  function seopress_social_facebook_og_url_hook() {
@@ -298,7 +298,7 @@ function seopress_social_facebook_og_url_hook() {
298
  $current_url = home_url(add_query_arg(array(), $wp->request));
299
 
300
  if (is_search()) {
301
- $seopress_social_og_url = '<meta property="og:url" content="'.get_site_url().'/search/'.get_search_query().'" />';
302
  } else {
303
  $seopress_social_og_url = '<meta property="og:url" content="'.$current_url.'" />';
304
  }
@@ -354,17 +354,17 @@ function seopress_social_fb_title_post_option() {
354
  if ($_seopress_social_fb_title != '') {
355
  return $_seopress_social_fb_title;
356
  }
357
- };
358
 
359
  function seopress_social_fb_title_hook() {
360
  if (seopress_social_facebook_og_option() =='1' && seopress_social_fb_title_post_option() !='') {
361
  echo '<meta property="og:title" content="'.seopress_social_fb_title_post_option().'" />';
362
  echo "\n";
363
  } elseif (seopress_social_facebook_og_option() =='1' && get_the_title() !='') {
364
- echo '<meta property="og:title" content="'.get_the_title().'" />';
365
  echo "\n";
366
  }
367
- };
368
  add_action( 'wp_head', 'seopress_social_fb_title_hook', 1 );
369
 
370
  //Facebook Desc
@@ -373,7 +373,7 @@ function seopress_social_fb_desc_post_option() {
373
  if ($_seopress_social_fb_desc != '') {
374
  return $_seopress_social_fb_desc;
375
  }
376
- };
377
 
378
  function seopress_social_fb_desc_hook() {
379
  global $post;
@@ -385,7 +385,7 @@ function seopress_social_fb_desc_hook() {
385
  echo '<meta property="og:description" content="'.wp_trim_words(esc_html(get_the_excerpt()), 30).'" />';
386
  echo "\n";
387
  }
388
- };
389
  add_action( 'wp_head', 'seopress_social_fb_desc_hook', 1 );
390
 
391
  //Facebook Thumbnail
@@ -394,7 +394,7 @@ function seopress_social_fb_img_post_option() {
394
  if ($_seopress_social_fb_img != '') {
395
  return $_seopress_social_fb_img;
396
  }
397
- };
398
 
399
  function seopress_social_facebook_img_option() {
400
  $seopress_social_facebook_img_option = get_option("seopress_social_option_name");
@@ -405,7 +405,7 @@ function seopress_social_facebook_img_option() {
405
  return $seopress_social_facebook_img_option['seopress_social_facebook_img'];
406
  }
407
  }
408
- };
409
 
410
  function seopress_social_fb_img_hook() {
411
  if (seopress_social_facebook_og_option() =='1' && seopress_social_fb_img_post_option() !='') {
@@ -418,7 +418,7 @@ function seopress_social_fb_img_hook() {
418
  echo '<meta property="og:image" content="'.seopress_social_facebook_img_option().'" />';
419
  echo "\n";
420
  }
421
- };
422
  add_action( 'wp_head', 'seopress_social_fb_img_hook', 1 );
423
 
424
  //Twitter
@@ -432,7 +432,7 @@ function seopress_social_twitter_card_option() {
432
  return $seopress_social_twitter_card_option['seopress_social_twitter_card'];
433
  }
434
  }
435
- };
436
 
437
  //Twitter Site
438
  function seopress_social_twitter_card_site_hook() {
@@ -466,17 +466,17 @@ function seopress_social_twitter_title_post_option() {
466
  if ($_seopress_social_twitter_title != '') {
467
  return $_seopress_social_twitter_title;
468
  }
469
- };
470
 
471
  function seopress_social_twitter_title_hook() {
472
  if (seopress_social_twitter_card_option() =='1' && seopress_social_twitter_title_post_option() !='') {
473
  echo '<meta name="twitter:title" content="'.seopress_social_twitter_title_post_option().'" />';
474
  echo "\n";
475
  } elseif (seopress_social_twitter_card_option() =='1' && get_the_title() !='') {
476
- echo '<meta name="twitter:title" content="'.get_the_title().'" />';
477
  echo "\n";
478
  }
479
- };
480
  add_action( 'wp_head', 'seopress_social_twitter_title_hook', 1 );
481
 
482
  //Twitter Desc
@@ -485,7 +485,7 @@ function seopress_social_twitter_desc_post_option() {
485
  if ($_seopress_social_twitter_desc != '') {
486
  return $_seopress_social_twitter_desc;
487
  }
488
- };
489
 
490
  function seopress_social_twitter_desc_hook() {
491
  global $post;
@@ -498,7 +498,7 @@ function seopress_social_twitter_desc_hook() {
498
  echo '<meta name="twitter:description" content="'.wp_trim_words(esc_html(get_the_excerpt()), 30).'" />';
499
  echo "\n";
500
  }
501
- };
502
  add_action( 'wp_head', 'seopress_social_twitter_desc_hook', 1 );
503
 
504
  //Twitter Thumbnail
@@ -507,7 +507,7 @@ function seopress_social_twitter_img_post_option() {
507
  if ($_seopress_social_twitter_img != '') {
508
  return $_seopress_social_twitter_img;
509
  }
510
- };
511
 
512
  function seopress_social_twitter_img_option() {
513
  $seopress_social_twitter_img_option = get_option("seopress_social_option_name");
@@ -518,7 +518,7 @@ function seopress_social_twitter_img_option() {
518
  return $seopress_social_twitter_img_option['seopress_social_twitter_card_img'];
519
  }
520
  }
521
- };
522
 
523
  function seopress_social_twitter_img_size_option() {
524
  $seopress_social_twitter_img_size_option = get_option("seopress_social_option_name");
@@ -529,7 +529,7 @@ function seopress_social_twitter_img_size_option() {
529
  return $seopress_social_twitter_img_size_option['seopress_social_twitter_card_img_size'];
530
  }
531
  }
532
- };
533
 
534
  function seopress_social_twitter_img_hook() {
535
  if (seopress_social_twitter_card_option() =='1') {
@@ -559,7 +559,5 @@ function seopress_social_twitter_img_hook() {
559
  }
560
  }
561
  }
562
- };
563
  add_action( 'wp_head', 'seopress_social_twitter_img_hook', 1 );
564
-
565
-
14
  return $seopress_social_knowledge_type_option['seopress_social_knowledge_type'];
15
  }
16
  }
17
+ }
18
 
19
  //Person name
20
  function seopress_social_knowledge_name_option() {
26
  return $seopress_social_knowledge_name_option['seopress_social_knowledge_name'];
27
  }
28
  }
29
+ }
30
 
31
  //Logo
32
  function seopress_social_knowledge_img_option() {
38
  return $seopress_social_knowledge_img_option['seopress_social_knowledge_img'];
39
  }
40
  }
41
+ }
42
 
43
  //Accounts
44
  //Facebook
51
  return $seopress_social_accounts_facebook_option['seopress_social_accounts_facebook'];
52
  }
53
  }
54
+ }
55
 
56
  //Twitter
57
  function seopress_social_accounts_twitter_option() {
63
  return $seopress_social_accounts_twitter_option['seopress_social_accounts_twitter'];
64
  }
65
  }
66
+ }
67
 
68
  //Google +
69
  function seopress_social_accounts_google_option() {
75
  return $seopress_social_accounts_google_option['seopress_social_accounts_google'];
76
  }
77
  }
78
+ }
79
 
80
  //Pinterest
81
  function seopress_social_accounts_pinterest_option() {
87
  return $seopress_social_accounts_pinterest_option['seopress_social_accounts_pinterest'];
88
  }
89
  }
90
+ }
91
 
92
  //Instagram
93
  function seopress_social_accounts_instagram_option() {
99
  return $seopress_social_accounts_instagram_option['seopress_social_accounts_instagram'];
100
  }
101
  }
102
+ }
103
 
104
  //YouTube
105
  function seopress_social_accounts_youtube_option() {
111
  return $seopress_social_accounts_youtube_option['seopress_social_accounts_youtube'];
112
  }
113
  }
114
+ }
115
 
116
  //LinkedIn
117
  function seopress_social_accounts_linkedin_option() {
123
  return $seopress_social_accounts_linkedin_option['seopress_social_accounts_linkedin'];
124
  }
125
  }
126
+ }
127
 
128
  //MySpace
129
  function seopress_social_accounts_myspace_option() {
135
  return $seopress_social_accounts_myspace_option['seopress_social_accounts_myspace'];
136
  }
137
  }
138
+ }
139
 
140
  //Soundcloud
141
  function seopress_social_accounts_soundcloud_option() {
147
  return $seopress_social_accounts_soundcloud_option['seopress_social_accounts_soundcloud'];
148
  }
149
  }
150
+ }
151
 
152
  //Tumblr
153
  function seopress_social_accounts_tumblr_option() {
159
  return $seopress_social_accounts_tumblr_option['seopress_social_accounts_tumblr'];
160
  }
161
  }
162
+ }
163
 
164
  function seopress_social_accounts_jsonld_hook() {
165
 
226
  if ($seopress_social_knowledge_img_option) {
227
  echo '"image": '.$seopress_social_knowledge_img_option.',';
228
  }
229
+ echo '"name" : '.$seopress_social_knowledge_name_option.',"url" : '.json_encode(get_home_url()).'';
230
 
231
  $seopress_social_accounts_facebook_option ='';
232
  $seopress_social_accounts_twitter_option ='';
253
  echo '}';
254
  echo '</script>';
255
  echo "\n";
256
+ }
257
  add_action( 'wp_head', 'seopress_social_accounts_jsonld_hook', 1 );
258
 
259
  //Website Schema.org in JSON-LD
260
  function seopress_social_website_option() {
261
+ $target = get_home_url().'/?s={search_term_string}';
262
  echo '<script type="application/ld+json">';
263
  echo '{
264
  "@context": "http://schema.org",
265
  "@type": "WebSite",
266
+ "url" : '.json_encode(get_home_url()).',
267
  "potentialAction": {
268
  "@type": "SearchAction",
269
  "target": '.json_encode($target).',
288
  return $seopress_social_facebook_og_option['seopress_social_facebook_og'];
289
  }
290
  }
291
+ }
292
 
293
  //OG URL
294
  function seopress_social_facebook_og_url_hook() {
298
  $current_url = home_url(add_query_arg(array(), $wp->request));
299
 
300
  if (is_search()) {
301
+ $seopress_social_og_url = '<meta property="og:url" content="'.get_home_url().'/search/'.get_search_query().'" />';
302
  } else {
303
  $seopress_social_og_url = '<meta property="og:url" content="'.$current_url.'" />';
304
  }
354
  if ($_seopress_social_fb_title != '') {
355
  return $_seopress_social_fb_title;
356
  }
357
+ }
358
 
359
  function seopress_social_fb_title_hook() {
360
  if (seopress_social_facebook_og_option() =='1' && seopress_social_fb_title_post_option() !='') {
361
  echo '<meta property="og:title" content="'.seopress_social_fb_title_post_option().'" />';
362
  echo "\n";
363
  } elseif (seopress_social_facebook_og_option() =='1' && get_the_title() !='') {
364
+ echo '<meta property="og:title" content="'.the_title_attribute('echo=0').'" />';
365
  echo "\n";
366
  }
367
+ }
368
  add_action( 'wp_head', 'seopress_social_fb_title_hook', 1 );
369
 
370
  //Facebook Desc
373
  if ($_seopress_social_fb_desc != '') {
374
  return $_seopress_social_fb_desc;
375
  }
376
+ }
377
 
378
  function seopress_social_fb_desc_hook() {
379
  global $post;
385
  echo '<meta property="og:description" content="'.wp_trim_words(esc_html(get_the_excerpt()), 30).'" />';
386
  echo "\n";
387
  }
388
+ }
389
  add_action( 'wp_head', 'seopress_social_fb_desc_hook', 1 );
390
 
391
  //Facebook Thumbnail
394
  if ($_seopress_social_fb_img != '') {
395
  return $_seopress_social_fb_img;
396
  }
397
+ }
398
 
399
  function seopress_social_facebook_img_option() {
400
  $seopress_social_facebook_img_option = get_option("seopress_social_option_name");
405
  return $seopress_social_facebook_img_option['seopress_social_facebook_img'];
406
  }
407
  }
408
+ }
409
 
410
  function seopress_social_fb_img_hook() {
411
  if (seopress_social_facebook_og_option() =='1' && seopress_social_fb_img_post_option() !='') {
418
  echo '<meta property="og:image" content="'.seopress_social_facebook_img_option().'" />';
419
  echo "\n";
420
  }
421
+ }
422
  add_action( 'wp_head', 'seopress_social_fb_img_hook', 1 );
423
 
424
  //Twitter
432
  return $seopress_social_twitter_card_option['seopress_social_twitter_card'];
433
  }
434
  }
435
+ }
436
 
437
  //Twitter Site
438
  function seopress_social_twitter_card_site_hook() {
466
  if ($_seopress_social_twitter_title != '') {
467
  return $_seopress_social_twitter_title;
468
  }
469
+ }
470
 
471
  function seopress_social_twitter_title_hook() {
472
  if (seopress_social_twitter_card_option() =='1' && seopress_social_twitter_title_post_option() !='') {
473
  echo '<meta name="twitter:title" content="'.seopress_social_twitter_title_post_option().'" />';
474
  echo "\n";
475
  } elseif (seopress_social_twitter_card_option() =='1' && get_the_title() !='') {
476
+ echo '<meta name="twitter:title" content="'.the_title_attribute('echo=0').'" />';
477
  echo "\n";
478
  }
479
+ }
480
  add_action( 'wp_head', 'seopress_social_twitter_title_hook', 1 );
481
 
482
  //Twitter Desc
485
  if ($_seopress_social_twitter_desc != '') {
486
  return $_seopress_social_twitter_desc;
487
  }
488
+ }
489
 
490
  function seopress_social_twitter_desc_hook() {
491
  global $post;
498
  echo '<meta name="twitter:description" content="'.wp_trim_words(esc_html(get_the_excerpt()), 30).'" />';
499
  echo "\n";
500
  }
501
+ }
502
  add_action( 'wp_head', 'seopress_social_twitter_desc_hook', 1 );
503
 
504
  //Twitter Thumbnail
507
  if ($_seopress_social_twitter_img != '') {
508
  return $_seopress_social_twitter_img;
509
  }
510
+ }
511
 
512
  function seopress_social_twitter_img_option() {
513
  $seopress_social_twitter_img_option = get_option("seopress_social_option_name");
518
  return $seopress_social_twitter_img_option['seopress_social_twitter_card_img'];
519
  }
520
  }
521
+ }
522
 
523
  function seopress_social_twitter_img_size_option() {
524
  $seopress_social_twitter_img_size_option = get_option("seopress_social_option_name");
529
  return $seopress_social_twitter_img_size_option['seopress_social_twitter_card_img_size'];
530
  }
531
  }
532
+ }
533
 
534
  function seopress_social_twitter_img_hook() {
535
  if (seopress_social_twitter_card_option() =='1') {
559
  }
560
  }
561
  }
562
+ }
563
  add_action( 'wp_head', 'seopress_social_twitter_img_hook', 1 );
 
 
inc/functions/options-titles-metas.php CHANGED
@@ -35,6 +35,21 @@ if (get_option('blog_public') =='1') {
35
  }
36
  };
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  //Tax archives Titles
39
  function seopress_titles_tax_titles_option() {
40
  $queried_object = get_queried_object();
@@ -97,18 +112,6 @@ if (get_option('blog_public') =='1') {
97
  }
98
  }
99
  };
100
-
101
- //Paged archive Titles
102
- function seopress_titles_archives_paged_title_option() {
103
- $seopress_titles_archives_paged_title_option = get_option("seopress_titles_option_name");
104
- if ( ! empty ( $seopress_titles_archives_paged_title_option ) ) {
105
- foreach ($seopress_titles_archives_paged_title_option as $key => $seopress_titles_archives_paged_title_value)
106
- $options[$key] = $seopress_titles_archives_paged_title_value;
107
- if (isset($seopress_titles_archives_paged_title_option['seopress_titles_archives_paged_title'])) {
108
- return $seopress_titles_archives_paged_title_option['seopress_titles_archives_paged_title'];
109
- }
110
- }
111
- };
112
 
113
  //Homepage Description
114
  function seopress_titles_home_site_desc_option() {
@@ -137,6 +140,21 @@ if (get_option('blog_public') =='1') {
137
  }
138
  };
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  //Tax archives Desc
141
  function seopress_titles_tax_desc_option() {
142
  $queried_object = get_queried_object();
@@ -200,18 +218,6 @@ if (get_option('blog_public') =='1') {
200
  }
201
  };
202
 
203
- //Paged archives Desc
204
- function seopress_titles_archives_paged_desc_option() {
205
- $seopress_titles_archives_paged_desc_option = get_option("seopress_titles_option_name");
206
- if ( ! empty ( $seopress_titles_archives_paged_desc_option ) ) {
207
- foreach ($seopress_titles_archives_paged_desc_option as $key => $seopress_titles_archives_paged_desc_value)
208
- $options[$key] = $seopress_titles_archives_paged_desc_value;
209
- if (isset($seopress_titles_archives_paged_desc_option['seopress_titles_archives_paged_desc'])) {
210
- return $seopress_titles_archives_paged_desc_option['seopress_titles_archives_paged_desc'];
211
- }
212
- }
213
- };
214
-
215
  //THE Title Tag
216
  function seopress_titles_the_title() {
217
 
@@ -248,7 +254,9 @@ if (get_option('blog_public') =='1') {
248
  '%%term_title%%',
249
  '%%term_description%%',
250
  '%%search_keywords%%',
251
- '%%current_pagination%%'
 
 
252
  );
253
  $seopress_titles_template_replace_array = array(
254
  get_bloginfo('name'),
@@ -264,10 +272,28 @@ if (get_option('blog_public') =='1') {
264
  single_term_title('', false),
265
  term_description(),
266
  get_search_query(),
267
- $seopress_paged
 
 
268
  );
269
 
270
- if (is_singular()) { //IS SINGULAR
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
271
  if (get_post_meta($post->ID,'_seopress_titles_title',true)) { //IS METABOXE
272
  $seopress_titles_the_title = get_post_meta($post->ID,'_seopress_titles_title',true);
273
 
@@ -280,6 +306,11 @@ if (get_option('blog_public') =='1') {
280
  $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_single_titles_option);
281
  return $seopress_titles_title_template;
282
  }
 
 
 
 
 
283
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_titles_option()) { //IS TAX
284
  $seopress_titles_tax_titles_option = seopress_titles_tax_titles_option();
285
 
@@ -305,19 +336,7 @@ if (get_option('blog_public') =='1') {
305
 
306
  $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_archives_404_title_option);
307
  return $seopress_titles_title_template;
308
- } elseif (is_paged() && seopress_titles_archives_paged_title_option()) { //IS PAGED
309
- $seopress_titles_archives_paged_title_option = seopress_titles_archives_paged_title_option();
310
-
311
- $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_archives_paged_title_option);
312
- return $seopress_titles_title_template;
313
- } elseif (is_home() || is_front_page()) { //HOMEPAGE
314
- if (seopress_titles_home_site_title_option() !='') {
315
- $seopress_titles_the_title = seopress_titles_home_site_title_option();
316
-
317
- $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_title);
318
- return $seopress_titles_title_template;
319
- }
320
- }
321
  }
322
  add_filter( 'pre_get_document_title', 'seopress_titles_the_title', 10 );
323
 
@@ -351,7 +370,9 @@ if (get_option('blog_public') =='1') {
351
  '%%term_title%%',
352
  '%%term_description%%',
353
  '%%search_keywords%%',
354
- '%%current_pagination%%'
 
 
355
  );
356
  $seopress_titles_template_replace_array = array(
357
  get_bloginfo('name'),
@@ -367,10 +388,30 @@ if (get_option('blog_public') =='1') {
367
  single_term_title('', false),
368
  term_description(),
369
  get_search_query(),
370
- $seopress_paged
 
 
371
  );
372
 
373
- if (is_singular()) { //IS SINGLE
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
  if (get_post_meta($post->ID,'_seopress_titles_desc',true)) { //IS METABOXE
375
  $seopress_titles_the_description_meta = get_post_meta($post->ID,'_seopress_titles_desc',true);
376
  $seopress_titles_the_description = '<meta name="description" content="'.$seopress_titles_the_description_meta.'" />';
@@ -392,6 +433,12 @@ if (get_option('blog_public') =='1') {
392
  $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
393
  echo $seopress_titles_description_template;
394
  }
 
 
 
 
 
 
395
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_desc_option()) { //IS TAX
396
  $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_tax_desc_option().'" />';
397
  $seopress_titles_the_description .= "\n";
@@ -422,20 +469,6 @@ if (get_option('blog_public') =='1') {
422
 
423
  $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
424
  echo $seopress_titles_description_template;
425
- } elseif (is_paged() && seopress_titles_archives_paged_desc_option()) { //IS PAGED
426
- $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_archives_paged_desc_option().'" />';
427
- $seopress_titles_the_description .= "\n";
428
-
429
- $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
430
- echo $seopress_titles_description_template;
431
- } elseif (is_home() || is_front_page()) { //HOMEPAGE
432
- if (seopress_titles_home_site_desc_option() !='') { //IS GLOBAL
433
- $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_home_site_desc_option().'" />';
434
- $seopress_titles_the_description .= "\n";
435
-
436
- $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
437
- echo $seopress_titles_description_template;
438
- }
439
  }
440
  }
441
  add_action( 'wp_head', 'seopress_titles_the_description', 1 );
@@ -457,6 +490,21 @@ if (get_option('blog_public') =='1') {
457
  }
458
  };
459
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
460
  //Tax archive noindex
461
  function seopress_titles_tax_noindex_option() {
462
  $queried_object = get_queried_object();
@@ -516,6 +564,42 @@ if (get_option('blog_public') =='1') {
516
  }
517
  };
518
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
519
  function seopress_titles_noindex_bypass() {
520
  if (seopress_titles_noindex_option()) { //Single CPT Global Advanced tab
521
  return seopress_titles_noindex_option();
@@ -523,16 +607,26 @@ if (get_option('blog_public') =='1') {
523
  return seopress_titles_single_cpt_noindex_option();
524
  } elseif (is_singular() && seopress_titles_noindex_post_option() ) { //Single CPT Metaboxe
525
  return seopress_titles_noindex_post_option();
 
 
526
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_noindex_option()) { //IS TAX
527
  return seopress_titles_tax_noindex_option();
528
  } elseif (is_author() && seopress_titles_archives_author_noindex_option()) { //IS Author archive
529
  return seopress_titles_archives_author_noindex_option();
530
  } elseif (is_date() && seopress_titles_archives_date_noindex_option()) { //IS Date archive
531
  return seopress_titles_archives_date_noindex_option();
532
- } elseif (is_search() || is_404()) {
 
 
 
 
 
 
 
 
533
  return "noindex";
534
  }
535
- };
536
 
537
  //nofollow
538
  //Single CPT nofollow
@@ -550,6 +644,21 @@ if (get_option('blog_public') =='1') {
550
  }
551
  };
552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  //Tax archive nofollow
554
  function seopress_titles_tax_nofollow_option() {
555
  $queried_object = get_queried_object();
@@ -591,6 +700,8 @@ if (get_option('blog_public') =='1') {
591
  return seopress_titles_single_cpt_nofollow_option();
592
  } elseif (is_singular() && seopress_titles_nofollow_post_option() ) { //Single CPT Metaboxe
593
  return seopress_titles_nofollow_post_option();
 
 
594
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_nofollow_option()) { //IS TAX
595
  return seopress_titles_tax_nofollow_option();
596
  }
@@ -612,15 +723,17 @@ if (get_option('blog_public') =='1') {
612
  };
613
 
614
  function seopress_titles_single_cpt_date_hook() {
615
- if (is_singular() && seopress_titles_single_cpt_date_option() =='1') {
616
- $seopress_get_current_pub_post_date = get_the_date('c');
617
- $seopress_get_current_up_post_date = get_the_modified_date('c');
618
- echo '<meta property="article:published_time" content="'.$seopress_get_current_pub_post_date.'" />';
619
- echo "\n";
620
- echo '<meta property="article:modified_time" content="'.$seopress_get_current_up_post_date.'" />';
621
- echo "\n";
622
- echo '<meta property="og:updated_time" content="'.$seopress_get_current_up_post_date.'" />';
623
- echo "\n";
 
 
624
  }
625
  }
626
  add_action( 'wp_head', 'seopress_titles_single_cpt_date_hook', 1 );
@@ -707,7 +820,7 @@ if (get_option('blog_public') =='1') {
707
  elseif (is_singular() && seopress_titles_nosnippet_post_option()) {
708
  return seopress_titles_nosnippet_post_option();
709
  }
710
- };
711
 
712
  if (seopress_titles_noindex_bypass() || seopress_titles_nofollow_bypass() || seopress_titles_noodp_bypass() || seopress_titles_noarchive_bypass() || seopress_titles_nosnippet_bypass() ) {
713
  function seopress_titles_advanced_robots_hook() {
@@ -807,7 +920,7 @@ if (seopress_titles_canonical_post_option()) {
807
  global $wp;
808
  $current_url = home_url(add_query_arg(array(), $wp->request));
809
  if (is_search()) {
810
- $seopress_titles_canonical = '<link rel="canonical" href="'.get_site_url().'/search/'.get_search_query().'" />';
811
  } else {
812
  $seopress_titles_canonical = '<link rel="canonical" href="'.$current_url.'" />';
813
  }
35
  }
36
  };
37
 
38
+ //Archive CPT Titles
39
+ function seopress_titles_archive_titles_option() {
40
+ global $post;
41
+ $seopress_get_current_cpt = get_post_type($post);
42
+
43
+ $seopress_titles_archive_titles_option = get_option("seopress_titles_option_name");
44
+ if ( ! empty ( $seopress_titles_archive_titles_option ) ) {
45
+ foreach ($seopress_titles_archive_titles_option as $key => $seopress_titles_archive_titles_value)
46
+ $options[$key] = $seopress_titles_archive_titles_value;
47
+ if (isset($seopress_titles_archive_titles_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['title'])) {
48
+ return $seopress_titles_archive_titles_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['title'];
49
+ }
50
+ }
51
+ };
52
+
53
  //Tax archives Titles
54
  function seopress_titles_tax_titles_option() {
55
  $queried_object = get_queried_object();
112
  }
113
  }
114
  };
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
  //Homepage Description
117
  function seopress_titles_home_site_desc_option() {
140
  }
141
  };
142
 
143
+ //Archive CPT Description
144
+ function seopress_titles_archive_desc_option() {
145
+ global $post;
146
+ $seopress_get_current_cpt = get_post_type($post);
147
+
148
+ $seopress_titles_archive_desc_option = get_option("seopress_titles_option_name");
149
+ if ( ! empty ( $seopress_titles_archive_desc_option ) ) {
150
+ foreach ($seopress_titles_archive_desc_option as $key => $seopress_titles_archive_desc_value)
151
+ $options[$key] = $seopress_titles_archive_desc_value;
152
+ if (isset($seopress_titles_archive_desc_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['description'])) {
153
+ return $seopress_titles_archive_desc_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['description'];
154
+ }
155
+ }
156
+ };
157
+
158
  //Tax archives Desc
159
  function seopress_titles_tax_desc_option() {
160
  $queried_object = get_queried_object();
218
  }
219
  };
220
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  //THE Title Tag
222
  function seopress_titles_the_title() {
223
 
254
  '%%term_title%%',
255
  '%%term_description%%',
256
  '%%search_keywords%%',
257
+ '%%current_pagination%%',
258
+ '%%cpt_plural%%',
259
+ '%%archive_date%%',
260
  );
261
  $seopress_titles_template_replace_array = array(
262
  get_bloginfo('name'),
272
  single_term_title('', false),
273
  term_description(),
274
  get_search_query(),
275
+ $seopress_paged,
276
+ post_type_archive_title('', false),
277
+ get_the_archive_title(),
278
  );
279
 
280
+ if ( is_front_page() && is_home() && get_post_meta($post->ID,'_seopress_titles_title',true) =='') { //HOMEPAGE
281
+ if (seopress_titles_home_site_title_option() !='') {
282
+ $seopress_titles_the_title = seopress_titles_home_site_title_option();
283
+
284
+ $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_title);
285
+ return $seopress_titles_title_template;
286
+ }
287
+ } elseif ( is_front_page() && get_post_meta($post->ID,'_seopress_titles_title',true) ==''){ //STATIC HOMEPAGE
288
+ if (seopress_titles_home_site_title_option() !='') {
289
+ $seopress_titles_the_title = seopress_titles_home_site_title_option();
290
+
291
+ $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_title);
292
+ return $seopress_titles_title_template;
293
+ }
294
+ } elseif ( is_home() && get_post_meta($post->ID,'_seopress_titles_title',true) ==''){ //BLOG PAGE
295
+ //Do Nothing
296
+ } elseif (is_singular()) { //IS SINGULAR
297
  if (get_post_meta($post->ID,'_seopress_titles_title',true)) { //IS METABOXE
298
  $seopress_titles_the_title = get_post_meta($post->ID,'_seopress_titles_title',true);
299
 
306
  $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_single_titles_option);
307
  return $seopress_titles_title_template;
308
  }
309
+ } elseif (is_post_type_archive() && seopress_titles_archive_titles_option()) { //IS POST TYPE ARCHIVE
310
+ $seopress_titles_archive_titles_option = seopress_titles_archive_titles_option();
311
+
312
+ $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_archive_titles_option);
313
+ return $seopress_titles_title_template;
314
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_titles_option()) { //IS TAX
315
  $seopress_titles_tax_titles_option = seopress_titles_tax_titles_option();
316
 
336
 
337
  $seopress_titles_title_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_archives_404_title_option);
338
  return $seopress_titles_title_template;
339
+ }
 
 
 
 
 
 
 
 
 
 
 
 
340
  }
341
  add_filter( 'pre_get_document_title', 'seopress_titles_the_title', 10 );
342
 
370
  '%%term_title%%',
371
  '%%term_description%%',
372
  '%%search_keywords%%',
373
+ '%%current_pagination%%',
374
+ '%%cpt_plural%%',
375
+ '%%archive_date%%',
376
  );
377
  $seopress_titles_template_replace_array = array(
378
  get_bloginfo('name'),
388
  single_term_title('', false),
389
  term_description(),
390
  get_search_query(),
391
+ $seopress_paged,
392
+ post_type_archive_title('', false),
393
+ get_the_archive_title(),
394
  );
395
 
396
+ if ( is_front_page() && is_home() && get_post_meta($post->ID,'_seopress_titles_desc',true) =='' ) { //HOMEPAGE
397
+ if (seopress_titles_home_site_desc_option() !='' && get_post_meta($post->ID,'_seopress_titles_desc',true) =='') { //IS GLOBAL
398
+ $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_home_site_desc_option().'" />';
399
+ $seopress_titles_the_description .= "\n";
400
+
401
+ $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
402
+ echo $seopress_titles_description_template;
403
+ }
404
+ } elseif ( is_front_page() && get_post_meta($post->ID,'_seopress_titles_desc',true) ==''){ //STATIC HOMEPAGE
405
+ if (seopress_titles_home_site_desc_option() !='' && get_post_meta($post->ID,'_seopress_titles_desc',true) =='') { //IS GLOBAL
406
+ $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_home_site_desc_option().'" />';
407
+ $seopress_titles_the_description .= "\n";
408
+
409
+ $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
410
+ echo $seopress_titles_description_template;
411
+ }
412
+ } elseif ( is_home() && get_post_meta($post->ID,'_seopress_titles_desc',true) ==''){ //BLOG PAGE
413
+ //Do Nothing
414
+ } elseif (is_singular()) { //IS SINGLE
415
  if (get_post_meta($post->ID,'_seopress_titles_desc',true)) { //IS METABOXE
416
  $seopress_titles_the_description_meta = get_post_meta($post->ID,'_seopress_titles_desc',true);
417
  $seopress_titles_the_description = '<meta name="description" content="'.$seopress_titles_the_description_meta.'" />';
433
  $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
434
  echo $seopress_titles_description_template;
435
  }
436
+ } elseif (is_post_type_archive() && seopress_titles_archive_desc_option()) { //IS POST TYPE ARCHIVE
437
+ $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_archive_desc_option().'" />';
438
+ $seopress_titles_the_description .= "\n";
439
+
440
+ $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
441
+ echo $seopress_titles_description_template;
442
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_desc_option()) { //IS TAX
443
  $seopress_titles_the_description = '<meta name="description" content="'.seopress_titles_tax_desc_option().'" />';
444
  $seopress_titles_the_description .= "\n";
469
 
470
  $seopress_titles_description_template = str_replace($seopress_titles_template_variables_array, $seopress_titles_template_replace_array, $seopress_titles_the_description);
471
  echo $seopress_titles_description_template;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  }
473
  }
474
  add_action( 'wp_head', 'seopress_titles_the_description', 1 );
490
  }
491
  };
492
 
493
+ //Archive CPT noindex
494
+ function seopress_titles_archive_cpt_noindex_option() {
495
+ global $post;
496
+ $seopress_get_current_cpt = get_post_type($post);
497
+
498
+ $seopress_titles_archive_cpt_noindex_option = get_option("seopress_titles_option_name");
499
+ if ( ! empty ( $seopress_titles_archive_cpt_noindex_option ) ) {
500
+ foreach ($seopress_titles_archive_cpt_noindex_option as $key => $seopress_titles_archive_cpt_noindex_value)
501
+ $options[$key] = $seopress_titles_archive_cpt_noindex_value;
502
+ if (isset($seopress_titles_archive_cpt_noindex_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['noindex'])) {
503
+ return $seopress_titles_archive_cpt_noindex_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['noindex'];
504
+ }
505
+ }
506
+ };
507
+
508
  //Tax archive noindex
509
  function seopress_titles_tax_noindex_option() {
510
  $queried_object = get_queried_object();
564
  }
565
  };
566
 
567
+ //noindex WooCommerce page
568
+ include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
569
+ if (is_plugin_active('wp-seopress-pro/seopress-pro.php')) {
570
+ //Cart page
571
+ function seopress_woocommerce_cart_page_no_index_option() {
572
+ $seopress_woocommerce_cart_page_no_index_option = get_option("seopress_pro_option_name");
573
+ if ( ! empty ( $seopress_woocommerce_cart_page_no_index_option ) ) {
574
+ foreach ($seopress_woocommerce_cart_page_no_index_option as $key => $seopress_woocommerce_cart_page_no_index_value)
575
+ $options[$key] = $seopress_woocommerce_cart_page_no_index_value;
576
+ if (isset($seopress_woocommerce_cart_page_no_index_option['seopress_woocommerce_cart_page_no_index'])) {
577
+ return $seopress_woocommerce_cart_page_no_index_option['seopress_woocommerce_cart_page_no_index'];
578
+ }
579
+ }
580
+ }
581
+ function seopress_woocommerce_checkout_page_no_index_option() {
582
+ $seopress_woocommerce_checkout_page_no_index_option = get_option("seopress_pro_option_name");
583
+ if ( ! empty ( $seopress_woocommerce_checkout_page_no_index_option ) ) {
584
+ foreach ($seopress_woocommerce_checkout_page_no_index_option as $key => $seopress_woocommerce_checkout_page_no_index_value)
585
+ $options[$key] = $seopress_woocommerce_checkout_page_no_index_value;
586
+ if (isset($seopress_woocommerce_checkout_page_no_index_option['seopress_woocommerce_checkout_page_no_index'])) {
587
+ return $seopress_woocommerce_checkout_page_no_index_option['seopress_woocommerce_checkout_page_no_index'];
588
+ }
589
+ }
590
+ }
591
+ function seopress_woocommerce_customer_account_page_no_index_option() {
592
+ $seopress_woocommerce_customer_account_page_no_index_option = get_option("seopress_pro_option_name");
593
+ if ( ! empty ( $seopress_woocommerce_customer_account_page_no_index_option ) ) {
594
+ foreach ($seopress_woocommerce_customer_account_page_no_index_option as $key => $seopress_woocommerce_customer_account_page_no_index_value)
595
+ $options[$key] = $seopress_woocommerce_customer_account_page_no_index_value;
596
+ if (isset($seopress_woocommerce_customer_account_page_no_index_option['seopress_woocommerce_customer_account_page_no_index'])) {
597
+ return $seopress_woocommerce_customer_account_page_no_index_option['seopress_woocommerce_customer_account_page_no_index'];
598
+ }
599
+ }
600
+ }
601
+ }
602
+
603
  function seopress_titles_noindex_bypass() {
604
  if (seopress_titles_noindex_option()) { //Single CPT Global Advanced tab
605
  return seopress_titles_noindex_option();
607
  return seopress_titles_single_cpt_noindex_option();
608
  } elseif (is_singular() && seopress_titles_noindex_post_option() ) { //Single CPT Metaboxe
609
  return seopress_titles_noindex_post_option();
610
+ } elseif (is_post_type_archive() && seopress_titles_archive_cpt_noindex_option() ) { //IS POST TYPE ARCHIVE
611
+ return seopress_titles_archive_cpt_noindex_option();
612
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_noindex_option()) { //IS TAX
613
  return seopress_titles_tax_noindex_option();
614
  } elseif (is_author() && seopress_titles_archives_author_noindex_option()) { //IS Author archive
615
  return seopress_titles_archives_author_noindex_option();
616
  } elseif (is_date() && seopress_titles_archives_date_noindex_option()) { //IS Date archive
617
  return seopress_titles_archives_date_noindex_option();
618
+ } elseif (function_exists('is_cart') && (is_cart() && seopress_woocommerce_cart_page_no_index_option())) { //IS WooCommerce Cart page
619
+ return seopress_woocommerce_cart_page_no_index_option();
620
+ } elseif (function_exists('is_checkout') && (is_checkout() && seopress_woocommerce_checkout_page_no_index_option())) { //IS WooCommerce Checkout page
621
+ return seopress_woocommerce_checkout_page_no_index_option();
622
+ } elseif (function_exists('is_account_page') && (is_account_page() && seopress_woocommerce_customer_account_page_no_index_option())) { //IS WooCommerce Customer account pages
623
+ return seopress_woocommerce_customer_account_page_no_index_option();
624
+ } elseif (function_exists('is_wc_endpoint_url') && (is_wc_endpoint_url() && seopress_woocommerce_customer_account_page_no_index_option())) { //IS WooCommerce Customer account pages
625
+ return seopress_woocommerce_customer_account_page_no_index_option();
626
+ } elseif(is_404()) { //Is 404 page
627
  return "noindex";
628
  }
629
+ }
630
 
631
  //nofollow
632
  //Single CPT nofollow
644
  }
645
  };
646
 
647
+ //Archive CPT nofollow
648
+ function seopress_titles_archive_cpt_nofollow_option() {
649
+ global $post;
650
+ $seopress_get_current_cpt = get_post_type($post);
651
+
652
+ $seopress_titles_archive_cpt_nofollow_option = get_option("seopress_titles_option_name");
653
+ if ( ! empty ( $seopress_titles_archive_cpt_nofollow_option ) ) {
654
+ foreach ($seopress_titles_archive_cpt_nofollow_option as $key => $seopress_titles_archive_cpt_nofollow_value)
655
+ $options[$key] = $seopress_titles_archive_cpt_nofollow_value;
656
+ if (isset($seopress_titles_archive_cpt_nofollow_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['nofollow'])) {
657
+ return $seopress_titles_archive_cpt_nofollow_option['seopress_titles_archive_titles'][$seopress_get_current_cpt]['nofollow'];
658
+ }
659
+ }
660
+ };
661
+
662
  //Tax archive nofollow
663
  function seopress_titles_tax_nofollow_option() {
664
  $queried_object = get_queried_object();
700
  return seopress_titles_single_cpt_nofollow_option();
701
  } elseif (is_singular() && seopress_titles_nofollow_post_option() ) { //Single CPT Metaboxe
702
  return seopress_titles_nofollow_post_option();
703
+ } elseif (is_post_type_archive() && seopress_titles_archive_cpt_nofollow_option() ) { //IS POST TYPE ARCHIVE
704
+ return seopress_titles_archive_cpt_nofollow_option();
705
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_nofollow_option()) { //IS TAX
706
  return seopress_titles_tax_nofollow_option();
707
  }
723
  };
724
 
725
  function seopress_titles_single_cpt_date_hook() {
726
+ if (!is_front_page() && !is_home()) {
727
+ if (is_singular() && seopress_titles_single_cpt_date_option() =='1') {
728
+ $seopress_get_current_pub_post_date = get_the_date('c');
729
+ $seopress_get_current_up_post_date = get_the_modified_date('c');
730
+ echo '<meta property="article:published_time" content="'.$seopress_get_current_pub_post_date.'" />';
731
+ echo "\n";
732
+ echo '<meta property="article:modified_time" content="'.$seopress_get_current_up_post_date.'" />';
733
+ echo "\n";
734
+ echo '<meta property="og:updated_time" content="'.$seopress_get_current_up_post_date.'" />';
735
+ echo "\n";
736
+ }
737
  }
738
  }
739
  add_action( 'wp_head', 'seopress_titles_single_cpt_date_hook', 1 );
820
  elseif (is_singular() && seopress_titles_nosnippet_post_option()) {
821
  return seopress_titles_nosnippet_post_option();
822
  }
823
+ }
824
 
825
  if (seopress_titles_noindex_bypass() || seopress_titles_nofollow_bypass() || seopress_titles_noodp_bypass() || seopress_titles_noarchive_bypass() || seopress_titles_nosnippet_bypass() ) {
826
  function seopress_titles_advanced_robots_hook() {
920
  global $wp;
921
  $current_url = home_url(add_query_arg(array(), $wp->request));
922
  if (is_search()) {
923
+ $seopress_titles_canonical = '<link rel="canonical" href="'.get_home_url().'/search/'.get_search_query().'" />';
924
  } else {
925
  $seopress_titles_canonical = '<link rel="canonical" href="'.$current_url.'" />';
926
  }
inc/functions/options.php CHANGED
@@ -10,40 +10,57 @@ add_action('init', 'seopress_enable', 999);
10
  function seopress_enable() {
11
  if (is_admin()){
12
  require_once ( dirname( __FILE__ ) . '/options-import-export.php'); //Import Export
13
- }
14
  }
15
 
16
- //Front END - Titles & metas - Redirections
17
- add_action('wp_head', 'seopress_load_titles_options', 0);
18
- function seopress_load_titles_options() {
19
- if (!is_admin()){
20
- require_once ( dirname( __FILE__ ) . '/options-titles-metas.php'); //Titles & metas
21
- require_once ( dirname( __FILE__ ) . '/options-social.php'); //Social
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  }
23
  }
24
-
25
  add_action('init', 'seopress_load_redirections_options', 0);
26
  function seopress_load_redirections_options() {
27
  if (!is_admin()){
28
  require_once ( dirname( __FILE__ ) . '/options-redirections.php'); //Redirections
29
  }
30
  }
31
-
32
- add_action('init', 'seopress_load_sitemap', 999);
33
- function seopress_load_sitemap() {
34
- require_once ( dirname( __FILE__ ) . '/options-sitemap.php'); //XML Sitemap
35
- }
36
-
37
- add_action('wp_head', 'seopress_load_advanced_options', 0);
38
- function seopress_load_advanced_options() {
39
- if (!is_admin()){
40
- require_once ( dirname( __FILE__ ) . '/options-advanced.php'); //Advanced
41
  }
42
-
43
  }
44
- add_action('init', 'seopress_load_advanced_admin_options', 0);
45
- function seopress_load_advanced_admin_options() {
46
- if (is_admin()){
47
- require_once ( dirname( __FILE__ ) . '/options-advanced-admin.php'); //Advanced (admin)
 
 
 
 
 
 
 
 
48
  }
49
  }
10
  function seopress_enable() {
11
  if (is_admin()){
12
  require_once ( dirname( __FILE__ ) . '/options-import-export.php'); //Import Export
13
+ }
14
  }
15
 
16
+ //Front END
17
+ if (seopress_get_toggle_titles_option() =='1') {
18
+ add_action('wp_head', 'seopress_load_titles_options', 0);
19
+ function seopress_load_titles_options() {
20
+ if (!is_admin()){
21
+ require_once ( dirname( __FILE__ ) . '/options-titles-metas.php'); //Titles & metas
22
+ }
23
+ }
24
+ }
25
+ if (seopress_get_toggle_social_option() =='1') {
26
+ add_action('wp_head', 'seopress_load_social_options', 0);
27
+ function seopress_load_social_options() {
28
+ if (!is_admin()){
29
+ require_once ( dirname( __FILE__ ) . '/options-social.php'); //Social
30
+ }
31
+ }
32
+ }
33
+ if (seopress_get_toggle_google_analytics_option() =='1') {
34
+ add_action('wp_head', 'seopress_load_google_analytics_options', 0);
35
+ function seopress_load_google_analytics_options() {
36
+ if (!is_admin()){
37
+ require_once ( dirname( __FILE__ ) . '/options-google-analytics.php'); //Google Analytics
38
+ }
39
  }
40
  }
 
41
  add_action('init', 'seopress_load_redirections_options', 0);
42
  function seopress_load_redirections_options() {
43
  if (!is_admin()){
44
  require_once ( dirname( __FILE__ ) . '/options-redirections.php'); //Redirections
45
  }
46
  }
47
+ if (seopress_get_toggle_xml_sitemap_option() =='1') {
48
+ add_action('init', 'seopress_load_sitemap', 999);
49
+ function seopress_load_sitemap() {
50
+ require_once ( dirname( __FILE__ ) . '/options-sitemap.php'); //XML Sitemap
 
 
 
 
 
 
51
  }
 
52
  }
53
+ if (seopress_get_toggle_advanced_option() =='1') {
54
+ add_action('wp_head', 'seopress_load_advanced_options', 0);
55
+ function seopress_load_advanced_options() {
56
+ if (!is_admin()){
57
+ require_once ( dirname( __FILE__ ) . '/options-advanced.php'); //Advanced
58
+ }
59
+ }
60
+ add_action('init', 'seopress_load_advanced_admin_options', 0);
61
+ function seopress_load_advanced_admin_options() {
62
+ if (is_admin()){
63
+ require_once ( dirname( __FILE__ ) . '/options-advanced-admin.php'); //Advanced (admin)
64
+ }
65
  }
66
  }
inc/functions/sitemap/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // Silence is golden.
3
+ ?>
inc/functions/sitemap/template-xml-sitemaps-single-term.php CHANGED
@@ -8,29 +8,23 @@ Header('Content-type: text/xml');
8
  Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_single_term() {
11
- $path = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
12
  $seopress_sitemaps = '<?xml version="1.0" encoding="UTF-8"?>';
13
- $seopress_sitemaps .='<?xml-stylesheet type="text/xsl" href="'.get_home_url().'/sitemaps_xsl"?>';
14
  $seopress_sitemaps .= "\n";
15
- $seopress_sitemaps .= '<urlset xmlns:xsi="http://www.sitemaps.org/schemas/sitemap/0.9">';
16
- //foreach (seopress_xml_sitemap_post_types_list_option() as $cpt_key => $cpt_value) {
17
- // foreach ($cpt_value as $_cpt_key => $_cpt_value) {
18
- // if($_cpt_value =='1') {
19
- $args = array('taxonomy' => $path,'hide_empty' => false, 'number' => 1000);
20
- $termslist = get_terms( $args );
21
- foreach ( $termslist as $term ) {
22
- $seopress_sitemaps .= "\n";
23
- $seopress_sitemaps .= '<url>';
24
- $seopress_sitemaps .= "\n";
25
- $seopress_sitemaps .= '<loc>';
26
- $seopress_sitemaps .= esc_url(get_term_link($term));
27
- $seopress_sitemaps .= '</loc>';
28
- $seopress_sitemaps .= "\n";
29
- $seopress_sitemaps .= '</url>';
30
- }
31
- // }
32
- // }
33
- //}
34
  $seopress_sitemaps .= '</urlset>';
35
  $seopress_sitemaps .= "\n";
36
  return $seopress_sitemaps;
8
  Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_single_term() {
11
+ $path = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), ".xml");
12
  $seopress_sitemaps = '<?xml version="1.0" encoding="UTF-8"?>';
13
+ $seopress_sitemaps .='<?xml-stylesheet type="text/xsl" href="'.get_home_url().'/sitemaps_xsl.xsl"?>';
14
  $seopress_sitemaps .= "\n";
15
+ $seopress_sitemaps .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
16
+ $args = array('taxonomy' => $path,'hide_empty' => false, 'number' => 1000);
17
+ $termslist = get_terms( $args );
18
+ foreach ( $termslist as $term ) {
19
+ $seopress_sitemaps .= "\n";
20
+ $seopress_sitemaps .= '<url>';
21
+ $seopress_sitemaps .= "\n";
22
+ $seopress_sitemaps .= '<loc>';
23
+ $seopress_sitemaps .= esc_url(get_term_link($term));
24
+ $seopress_sitemaps .= '</loc>';
25
+ $seopress_sitemaps .= "\n";
26
+ $seopress_sitemaps .= '</url>';
27
+ }
 
 
 
 
 
 
28
  $seopress_sitemaps .= '</urlset>';
29
  $seopress_sitemaps .= "\n";
30
  return $seopress_sitemaps;
inc/functions/sitemap/template-xml-sitemaps-single.php CHANGED
@@ -8,14 +8,14 @@ Header('Content-type: text/xml');
8
  Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_single() {
11
- $path = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
12
  $seopress_sitemaps = '<?xml version="1.0" encoding="UTF-8"?>';
13
- $seopress_sitemaps .='<?xml-stylesheet type="text/xsl" href="'.get_home_url().'/sitemaps_xsl"?>';
14
  $seopress_sitemaps .= "\n";
15
- $seopress_sitemaps .= '<urlset xmlns:xsi="http://www.sitemaps.org/schemas/sitemap/0.9">';
16
  $seopress_sitemaps .= "\n";
17
 
18
- $args = array( 'posts_per_page' => 1000, 'order'=> 'DESC', 'orderby' => 'modified', 'post_type' => $path, 'post_status' => 'publish', 'meta_key' => '_seopress_robots_index', 'meta_value' => 'yes', 'meta_compare' => 'NOT EXISTS' );
19
  $postslist = get_posts( $args );
20
  foreach ( $postslist as $post ) {
21
  setup_postdata( $post );
@@ -26,7 +26,7 @@ function seopress_xml_sitemap_single() {
26
  $seopress_sitemaps .= '</loc>';
27
  $seopress_sitemaps .= "\n";
28
  $seopress_sitemaps .= '<lastmod>';
29
- $seopress_sitemaps .= $post->post_modified_gmt;
30
  $seopress_sitemaps .= '';
31
  $seopress_sitemaps .= '</lastmod>';
32
  $seopress_sitemaps .= "\n";
8
  Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_single() {
11
+ $path = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), ".xml");
12
  $seopress_sitemaps = '<?xml version="1.0" encoding="UTF-8"?>';
13
+ $seopress_sitemaps .='<?xml-stylesheet type="text/xsl" href="'.get_home_url().'/sitemaps_xsl.xsl"?>';
14
  $seopress_sitemaps .= "\n";
15
+ $seopress_sitemaps .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
16
  $seopress_sitemaps .= "\n";
17
 
18
+ $args = array( 'posts_per_page' => 1000, 'order'=> 'DESC', 'orderby' => 'date', 'post_type' => $path, 'post_status' => 'publish', 'meta_key' => '_seopress_robots_index', 'meta_value' => 'yes', 'meta_compare' => 'NOT EXISTS' );
19
  $postslist = get_posts( $args );
20
  foreach ( $postslist as $post ) {
21
  setup_postdata( $post );
26
  $seopress_sitemaps .= '</loc>';
27
  $seopress_sitemaps .= "\n";
28
  $seopress_sitemaps .= '<lastmod>';
29
+ $seopress_sitemaps .= get_the_date('c', $post);
30
  $seopress_sitemaps .= '';
31
  $seopress_sitemaps .= '</lastmod>';
32
  $seopress_sitemaps .= "\n";
inc/functions/sitemap/template-xml-sitemaps-xsl.php CHANGED
@@ -8,16 +8,21 @@ Header('Content-type: text/xml');
8
  Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_index_xsl() {
11
- $seopress_sitemaps_xsl ='<?xml version="1.0" encoding="UTF-8"?>';
12
- $seopress_sitemaps_xsl .='
13
- <xsl:stylesheet version="1.0"
14
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
15
- <xsl:template match="/">';
16
-
17
- $seopress_sitemaps_xsl .='<html>';
 
 
18
  $seopress_sitemaps_xsl .='<head>';
 
19
  $seopress_sitemaps_xsl .='<title>XML Sitemaps</title>';
20
- $seopress_sitemaps_xsl .='<style>
 
 
21
  * {
22
  margin: 0;
23
  padding: 0;
@@ -105,7 +110,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
105
  $seopress_sitemaps_xsl .='<body>';
106
  $seopress_sitemaps_xsl .='<div id="main">';
107
  $seopress_sitemaps_xsl .='<h1>SEOPress XML Sitemaps</h1>';
108
- $seopress_sitemaps_xsl .='<p><a href="'.get_home_url().'/sitemaps">Index sitemaps</a></p>';
109
  $seopress_sitemaps_xsl .='<div id="sitemaps">';
110
  $seopress_sitemaps_xsl .='<div class="loc">';
111
  $seopress_sitemaps_xsl .='URL';
@@ -114,21 +119,21 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
114
  $seopress_sitemaps_xsl .='Last update';
115
  $seopress_sitemaps_xsl .='</div>';
116
  $seopress_sitemaps_xsl .='<ul>';
117
- $seopress_sitemaps_xsl .='<xsl:for-each select="sitemapindex/sitemap">';
118
  $seopress_sitemaps_xsl .='<li>';
119
- $seopress_sitemaps_xsl .='<xsl:variable name="sitemap_loc"><xsl:value-of select="loc"/></xsl:variable>';
120
- $seopress_sitemaps_xsl .='<span class="item-loc"><a href="{$sitemap_loc}"><xsl:value-of select="loc" /></a></span>';
121
- $seopress_sitemaps_xsl .='<span class="item-lastmod"><xsl:value-of select="lastmod" /></span>';
122
  $seopress_sitemaps_xsl .='</li>';
123
  $seopress_sitemaps_xsl .='</xsl:for-each>';
124
  $seopress_sitemaps_xsl .='</ul>';
125
 
126
  $seopress_sitemaps_xsl .='<ul>';
127
- $seopress_sitemaps_xsl .='<xsl:for-each select="urlset/url">';
128
  $seopress_sitemaps_xsl .='<li>';
129
- $seopress_sitemaps_xsl .='<xsl:variable name="url_loc"><xsl:value-of select="loc"/></xsl:variable>';
130
- $seopress_sitemaps_xsl .='<span class="item-loc"><a href="{$url_loc}"><xsl:value-of select="loc" /></a></span>';
131
- $seopress_sitemaps_xsl .='<span class="item-lastmod"><xsl:value-of select="lastmod" /></span>';
132
  $seopress_sitemaps_xsl .='</li>';
133
  $seopress_sitemaps_xsl .='</xsl:for-each>';
134
  $seopress_sitemaps_xsl .='</ul>';
8
  Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_index_xsl() {
11
+ $seopress_sitemaps_xsl ='<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="2.0"
12
+ xmlns:html="http://www.w3.org/TR/REC-html40"
13
+ xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
14
+ xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
15
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
16
+ <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
17
+ <xsl:template match="/">
18
+ <html xmlns="http://www.w3.org/1999/xhtml">';
19
+ $seopress_sitemaps_xsl .="\n";
20
  $seopress_sitemaps_xsl .='<head>';
21
+ $seopress_sitemaps_xsl .="\n";
22
  $seopress_sitemaps_xsl .='<title>XML Sitemaps</title>';
23
+ $seopress_sitemaps_xsl .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';
24
+ $seopress_sitemaps_xsl .="\n";
25
+ $seopress_sitemaps_xsl .='<style type="text/css">
26
  * {
27
  margin: 0;
28
  padding: 0;
110
  $seopress_sitemaps_xsl .='<body>';
111
  $seopress_sitemaps_xsl .='<div id="main">';
112
  $seopress_sitemaps_xsl .='<h1>SEOPress XML Sitemaps</h1>';
113
+ $seopress_sitemaps_xsl .='<p><a href="'.get_home_url().'/sitemaps.xml">Index sitemaps</a></p>';
114
  $seopress_sitemaps_xsl .='<div id="sitemaps">';
115
  $seopress_sitemaps_xsl .='<div class="loc">';
116
  $seopress_sitemaps_xsl .='URL';
119
  $seopress_sitemaps_xsl .='Last update';
120
  $seopress_sitemaps_xsl .='</div>';
121
  $seopress_sitemaps_xsl .='<ul>';
122
+ $seopress_sitemaps_xsl .='<xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap">';
123
  $seopress_sitemaps_xsl .='<li>';
124
+ $seopress_sitemaps_xsl .='<xsl:variable name="sitemap_loc"><xsl:value-of select="sitemap:loc"/></xsl:variable>';
125
+ $seopress_sitemaps_xsl .='<span class="item-loc"><a href="{$sitemap_loc}"><xsl:value-of select="sitemap:loc" /></a></span>';
126
+ $seopress_sitemaps_xsl .='<span class="item-lastmod"><xsl:value-of select="sitemap:lastmod" /></span>';
127
  $seopress_sitemaps_xsl .='</li>';
128
  $seopress_sitemaps_xsl .='</xsl:for-each>';
129
  $seopress_sitemaps_xsl .='</ul>';
130
 
131
  $seopress_sitemaps_xsl .='<ul>';
132
+ $seopress_sitemaps_xsl .='<xsl:for-each select="sitemap:urlset/sitemap:url">';
133
  $seopress_sitemaps_xsl .='<li>';
134
+ $seopress_sitemaps_xsl .='<xsl:variable name="url_loc"><xsl:value-of select="sitemap:loc"/></xsl:variable>';
135
+ $seopress_sitemaps_xsl .='<span class="item-loc"><a href="{$url_loc}"><xsl:value-of select="sitemap:loc" /></a></span>';
136
+ $seopress_sitemaps_xsl .='<span class="item-lastmod"><xsl:value-of select="sitemap:lastmod" /></span>';
137
  $seopress_sitemaps_xsl .='</li>';
138
  $seopress_sitemaps_xsl .='</xsl:for-each>';
139
  $seopress_sitemaps_xsl .='</ul>';
inc/functions/sitemap/template-xml-sitemaps.php CHANGED
@@ -9,9 +9,9 @@ Header("X-Robots-Tag: noindex", true);
9
 
10
  function seopress_xml_sitemap_index() {
11
  $seopress_sitemaps ='<?xml version="1.0" encoding="UTF-8"?>';
12
- $seopress_sitemaps .='<?xml-stylesheet type="text/xsl" href="'.get_home_url().'/sitemaps_xsl"?>';
13
  $seopress_sitemaps .= "\n";
14
- $seopress_sitemaps .='<sitemapindex xmlns:xsi="http://www.sitemaps.org/schemas/sitemap/0.9">';
15
 
16
  //CPT
17
  if (seopress_xml_sitemap_post_types_list_option() !='') {
@@ -22,18 +22,16 @@ function seopress_xml_sitemap_index() {
22
  $seopress_sitemaps .= '<sitemap>';
23
  $seopress_sitemaps .= "\n";
24
  $seopress_sitemaps .= '<loc>';
25
- $seopress_sitemaps .= home_url().'/sitemaps/'.$cpt_key;
26
  $seopress_sitemaps .= '</loc>';
27
- $seopress_sitemaps .= "\n";
28
- $seopress_sitemaps .= '<lastmod>';
29
-
30
- $get_latest_post = new WP_Query(array('post_type' => $cpt_key, 'post_status' => 'publish', 'posts_per_page' => 1, 'orderby' => 'modified', 'order' => 'ASC'));
31
  if($get_latest_post->have_posts()){
32
- $seopress_sitemaps .= $get_latest_post->posts[0]->post_modified_gmt;
 
 
 
 
33
  }
34
-
35
- $seopress_sitemaps .= '</lastmod>';
36
- $seopress_sitemaps .= "\n";
37
  $seopress_sitemaps .= '</sitemap>';
38
  }
39
  }
@@ -49,7 +47,7 @@ function seopress_xml_sitemap_index() {
49
  $seopress_sitemaps .= '<sitemap>';
50
  $seopress_sitemaps .= "\n";
51
  $seopress_sitemaps .= '<loc>';
52
- $seopress_sitemaps .= home_url().'/sitemaps/'.$tax_key;
53
  $seopress_sitemaps .= '</loc>';
54
  $seopress_sitemaps .= "\n";
55
  $seopress_sitemaps .= '</sitemap>';
@@ -57,8 +55,31 @@ function seopress_xml_sitemap_index() {
57
  }
58
  }
59
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  $seopress_sitemaps .= "\n";
61
  $seopress_sitemaps .='</sitemapindex>';
 
62
  return $seopress_sitemaps;
63
  }
64
  echo seopress_xml_sitemap_index();
9
 
10
  function seopress_xml_sitemap_index() {
11
  $seopress_sitemaps ='<?xml version="1.0" encoding="UTF-8"?>';
12
+ $seopress_sitemaps .='<?xml-stylesheet type="text/xsl" href="'.get_home_url().'/sitemaps_xsl.xsl"?>';
13
  $seopress_sitemaps .= "\n";
14
+ $seopress_sitemaps .='<sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
15
 
16
  //CPT
17
  if (seopress_xml_sitemap_post_types_list_option() !='') {
22
  $seopress_sitemaps .= '<sitemap>';
23
  $seopress_sitemaps .= "\n";
24
  $seopress_sitemaps .= '<loc>';
25
+ $seopress_sitemaps .= home_url().'/sitemaps/'.$cpt_key.'.xml';
26
  $seopress_sitemaps .= '</loc>';
27
+ $get_latest_post = new WP_Query(array('post_type' => $cpt_key, 'post_status' => 'publish', 'ignore_sticky_posts' => true, 'posts_per_page' => 1, 'order' => 'DESC', 'orderby' => 'date',));
 
 
 
28
  if($get_latest_post->have_posts()){
29
+ $seopress_sitemaps .= "\n";
30
+ $seopress_sitemaps .= '<lastmod>';
31
+ $seopress_sitemaps .= date("c", strtotime($get_latest_post->posts[0]->post_date));
32
+ $seopress_sitemaps .= '</lastmod>';
33
+ $seopress_sitemaps .= "\n";
34
  }
 
 
 
35
  $seopress_sitemaps .= '</sitemap>';
36
  }
37
  }
47
  $seopress_sitemaps .= '<sitemap>';
48
  $seopress_sitemaps .= "\n";
49
  $seopress_sitemaps .= '<loc>';
50
+ $seopress_sitemaps .= home_url().'/sitemaps/'.$tax_key.'.xml';
51
  $seopress_sitemaps .= '</loc>';
52
  $seopress_sitemaps .= "\n";
53
  $seopress_sitemaps .= '</sitemap>';
55
  }
56
  }
57
  }
58
+
59
+ //Google News
60
+ if (seopress_xml_sitemap_news_enable_option() !='') {
61
+ $seopress_sitemaps .= "\n";
62
+ $seopress_sitemaps .= '<sitemap>';
63
+ $seopress_sitemaps .= "\n";
64
+ $seopress_sitemaps .= '<loc>';
65
+ $seopress_sitemaps .= home_url().'/sitemaps/news.xml';
66
+ $seopress_sitemaps .= '</loc>';
67
+ $seopress_sitemaps .= "\n";
68
+ $seopress_sitemaps .= '<lastmod>';
69
+
70
+ $get_latest_post = new WP_Query(array('post_type' => 'post', 'post_status' => 'publish', 'ignore_sticky_posts' => true, 'posts_per_page' => 1, 'orderby' => 'date', 'order' => 'DESC'));
71
+ if($get_latest_post->have_posts()){
72
+ $seopress_sitemaps .= date("c", strtotime($get_latest_post->posts[0]->post_date));
73
+ }
74
+
75
+ $seopress_sitemaps .= '</lastmod>';
76
+ $seopress_sitemaps .= "\n";
77
+ $seopress_sitemaps .= '</sitemap>';
78
+ }
79
+
80
  $seopress_sitemaps .= "\n";
81
  $seopress_sitemaps .='</sitemapindex>';
82
+
83
  return $seopress_sitemaps;
84
  }
85
  echo seopress_xml_sitemap_index();
languages/wp-seopress-fr_FR.mo CHANGED
Binary file
languages/wp-seopress-fr_FR.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: SEOPress\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-cloudy\n"
5
- "POT-Creation-Date: 2016-10-03 19:20+0200\n"
6
- "PO-Revision-Date: 2016-10-03 19:22+0200\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Benjamin DENIS <contact@seopress.org>\n"
9
  "Language: fr_FR\n"
@@ -17,321 +17,462 @@ msgstr ""
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
- #: inc/admin/admin-metaboxes.php:11 inc/admin/admin.php:300
21
  msgid "SEOPress"
22
  msgstr "SEOPress"
23
 
24
- #: inc/admin/admin-metaboxes.php:80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  msgid "Titles settings"
26
  msgstr "Paramètres de titres"
27
 
28
- #: inc/admin/admin-metaboxes.php:81 inc/admin/admin.php:37
29
- #: inc/admin/admin.php:98 inc/admin/admin.php:212 inc/admin/admin.php:419
 
30
  msgid "Advanced"
31
  msgstr "Avancé"
32
 
33
- #: inc/admin/admin-metaboxes.php:82 inc/admin/admin.php:36
34
- #: inc/admin/admin.php:409
35
  msgid "Social"
36
  msgstr "Social"
37
 
38
- #: inc/admin/admin-metaboxes.php:83
39
  msgid "Redirections"
40
  msgstr "Redirections"
41
 
42
- #: inc/admin/admin-metaboxes.php:89
 
 
 
 
43
  msgid "Title"
44
  msgstr "Titre"
45
 
46
- #: inc/admin/admin-metaboxes.php:90
47
  msgid "Enter your title"
48
  msgstr "Entrez votre titre"
49
 
50
- #: inc/admin/admin-metaboxes.php:94 inc/admin/admin-metaboxes.php:102
51
  msgid "(maximum recommended limit)"
52
  msgstr "(limite maximale recommandée)"
53
 
54
- #: inc/admin/admin-metaboxes.php:97 inc/admin/admin.php:499
 
55
  msgid "Meta description"
56
  msgstr "Meta description"
57
 
58
- #: inc/admin/admin-metaboxes.php:98
59
  msgid "Enter your meta description"
60
  msgstr "Entrez votre méta description"
61
 
62
- #: inc/admin/admin-metaboxes.php:107
63
  msgid "Google Snippet Preview"
64
- msgstr "Google Snippet Preview"
65
 
66
- #: inc/admin/admin-metaboxes.php:108
67
  msgid "This is what your page will look like in Google search results"
68
  msgstr ""
69
  "Voilà à quoi ressemblera votre page dans les résultats de recherche Google"
70
 
71
- #: inc/admin/admin-metaboxes.php:124 inc/admin/admin.php:667
72
- #: inc/admin/admin.php:1195 inc/admin/admin.php:1287 inc/admin/admin.php:1356
73
- #: inc/admin/admin.php:1401 inc/admin/admin.php:1503
74
  msgid "noindex"
75
  msgstr "noindex"
76
 
77
- #: inc/admin/admin-metaboxes.php:130 inc/admin/admin.php:675
78
- #: inc/admin/admin.php:1214 inc/admin/admin.php:1306 inc/admin/admin.php:1520
 
 
 
 
 
 
 
 
 
79
  msgid "nofollow"
80
  msgstr "nofollow"
81
 
82
- #: inc/admin/admin-metaboxes.php:136 inc/admin/admin.php:683
83
- #: inc/admin/admin.php:1537
 
 
 
 
84
  msgid "noodp"
85
  msgstr "noodp"
86
 
87
- #: inc/admin/admin-metaboxes.php:142 inc/admin/admin.php:691
88
- #: inc/admin/admin.php:1554
 
 
 
 
 
 
 
 
89
  msgid "noimageindex"
90
  msgstr "noimageindex"
91
 
92
- #: inc/admin/admin-metaboxes.php:148 inc/admin/admin.php:699
93
- #: inc/admin/admin.php:1571
 
 
 
 
94
  msgid "noarchive"
95
  msgstr "noarchive"
96
 
97
- #: inc/admin/admin-metaboxes.php:154 inc/admin/admin.php:707
98
- #: inc/admin/admin.php:1588
 
 
 
 
99
  msgid "nosnippet"
100
  msgstr "nosnippet"
101
 
102
- #: inc/admin/admin-metaboxes.php:158
 
 
 
 
 
 
 
103
  msgid "Canonical URL"
104
  msgstr "URL Canonique"
105
 
106
- #: inc/admin/admin-metaboxes.php:159
107
  msgid "Default value: "
108
  msgstr "Valeur par défaut: "
109
 
110
- #: inc/admin/admin-metaboxes.php:165
111
  msgid "Facebook Title"
112
  msgstr "Titre Facebook"
113
 
114
- #: inc/admin/admin-metaboxes.php:166
115
  msgid "Enter your Facebook title"
116
  msgstr "Entrez votre titre Facebook"
117
 
118
- #: inc/admin/admin-metaboxes.php:169
119
  msgid "Facebook description"
120
  msgstr "Description Facebook"
121
 
122
- #: inc/admin/admin-metaboxes.php:170
123
  msgid "Enter your Facebook description"
124
  msgstr "Entrez votre description Facebook"
125
 
126
- #: inc/admin/admin-metaboxes.php:173
127
  msgid "Facebook Thumbnail"
128
  msgstr "Miniature Facebook"
129
 
130
- #: inc/admin/admin-metaboxes.php:174 inc/admin/admin-metaboxes.php:189
131
- #: inc/admin/admin.php:1860 inc/admin/admin.php:1912
 
 
 
 
132
  msgid "Select your default thumbnail"
133
  msgstr "Sélectionnez votre miniature par défaut"
134
 
135
- #: inc/admin/admin-metaboxes.php:175 inc/admin/admin-metaboxes.php:190
136
- #: inc/admin/admin.php:1730 inc/admin/admin.php:1862 inc/admin/admin.php:1914
137
  msgid "Upload an Image"
138
- msgstr "Uploadez une image"
139
 
140
- #: inc/admin/admin-metaboxes.php:180
141
  msgid "Twitter Title"
142
  msgstr "Titre Twitter"
143
 
144
- #: inc/admin/admin-metaboxes.php:181
145
  msgid "Enter your Twitter title"
146
  msgstr "Entrez votre titre Twitter"
147
 
148
- #: inc/admin/admin-metaboxes.php:184
149
  msgid "Twitter description"
150
  msgstr "Description Twitter"
151
 
152
- #: inc/admin/admin-metaboxes.php:185
153
  msgid "Enter your Twitter description"
154
  msgstr "Entrez votre description Twitter"
155
 
156
- #: inc/admin/admin-metaboxes.php:188
157
  msgid "Twitter Thumbnail"
158
  msgstr "Miniature Twitter"
159
 
160
- #: inc/admin/admin-metaboxes.php:197
 
 
 
 
161
  msgid "Enable redirection?"
162
  msgstr "Activer la redirection ?"
163
 
164
- #: inc/admin/admin-metaboxes.php:201
165
  msgid "URL redirection"
166
  msgstr "URL de redirection"
167
 
168
- #: inc/admin/admin-metaboxes.php:203
169
  msgid "301"
170
  msgstr "301"
171
 
172
- #: inc/admin/admin-metaboxes.php:204
173
  msgid "302"
174
  msgstr "302"
175
 
176
- #: inc/admin/admin-metaboxes.php:205
177
  msgid "307"
178
  msgstr "307"
179
 
180
- #: inc/admin/admin-metaboxes.php:207
181
  msgid "Enter your URL"
182
  msgstr "Saisissez votre URL"
183
 
184
- #: inc/admin/admin-metaboxes.php:210 inc/admin/admin-metaboxes.php:212
185
  msgid "Test your URL"
186
  msgstr "Tester votre URL"
187
 
188
- #: inc/admin/admin.php:34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  msgid "Titles & Metas"
190
  msgstr "Titres et Métas"
191
 
192
- #: inc/admin/admin.php:35 inc/admin/admin.php:399
193
  msgid "XML Sitemap"
194
  msgstr "Sitemap XML"
195
 
196
- #: inc/admin/admin.php:38
 
 
 
 
197
  msgid "Import / Export / Reset settings"
198
  msgstr "Import / Export / Réinitialisation des paramètres"
199
 
200
- #: inc/admin/admin.php:38 inc/admin/admin.php:429
201
  msgid "Import / Export / Reset"
202
  msgstr "Importer / Exporter / Réinitialiser"
203
 
204
- #: inc/admin/admin.php:45
205
  #, php-format
206
  msgid "%%sitetitle%%"
207
  msgstr "%%sitetitle%%"
208
 
209
- #: inc/admin/admin.php:45
 
 
210
  msgid "Site Title"
211
  msgstr "Titre du Site"
212
 
213
- #: inc/admin/admin.php:46
214
  #, php-format
215
  msgid "%%tagline%%"
216
  msgstr "%%tagline%%"
217
 
218
- #: inc/admin/admin.php:46
219
  msgid "Tagline"
220
  msgstr "Slogan du site"
221
 
222
- #: inc/admin/admin.php:47
223
  #, php-format
224
  msgid "%%post_title%%"
225
  msgstr "%%post_title%%"
226
 
227
- #: inc/admin/admin.php:47
228
  msgid "Post Title (post, page, custom post type)"
229
  msgstr "Titre du post (article, page, type d'article personnalisé)"
230
 
231
- #: inc/admin/admin.php:48
232
  #, php-format
233
  msgid "%%post_excerpt%%"
234
  msgstr "%%post_excerpt%%"
235
 
236
- #: inc/admin/admin.php:48
237
  msgid "Post excerpt"
238
  msgstr "Extrait du post"
239
 
240
- #: inc/admin/admin.php:49
241
  #, php-format
242
  msgid "%%post_date%%"
243
  msgstr "%%post_date%%"
244
 
245
- #: inc/admin/admin.php:49
246
  msgid "Post date"
247
  msgstr "Date du post"
248
 
249
- #: inc/admin/admin.php:50
250
  #, php-format
251
  msgid "%%post_author%%"
252
  msgstr "%%post_author%%"
253
 
254
- #: inc/admin/admin.php:50
255
  msgid "Post author"
256
  msgstr "Auteur du post"
257
 
258
- #: inc/admin/admin.php:51
259
  #, php-format
260
  msgid "%%_category_title%%"
261
  msgstr "%%_category_title%%"
262
 
263
- #: inc/admin/admin.php:51
264
  msgid "Category title"
265
  msgstr "Titre de catégorie"
266
 
267
- #: inc/admin/admin.php:52
268
  #, php-format
269
  msgid "%%_category_description%%"
270
  msgstr "%%_category_description%%"
271
 
272
- #: inc/admin/admin.php:52
273
  msgid "Category description"
274
  msgstr "Description de la catégorie"
275
 
276
- #: inc/admin/admin.php:53
277
  #, php-format
278
  msgid "%%tag_title%%"
279
  msgstr "%%tag_title%%"
280
 
281
- #: inc/admin/admin.php:53
282
  msgid "Tag title"
283
- msgstr "Titre du tag"
284
 
285
- #: inc/admin/admin.php:54
286
  #, php-format
287
  msgid "%%tag_description%%"
288
  msgstr "%%tag_description%%"
289
 
290
- #: inc/admin/admin.php:54
291
  msgid "Tag description"
292
- msgstr "Description du tag"
293
 
294
- #: inc/admin/admin.php:55
295
  #, php-format
296
  msgid "%%term_title%%"
297
  msgstr "%%term_title%%"
298
 
299
- #: inc/admin/admin.php:55
300
  msgid "Term title"
301
  msgstr "Titre du terme"
302
 
303
- #: inc/admin/admin.php:56
304
  #, php-format
305
  msgid "%%term_description%%"
306
  msgstr "%%term_description%%"
307
 
308
- #: inc/admin/admin.php:56
309
  msgid "Term description"
310
  msgstr "Description du terme"
311
 
312
- #: inc/admin/admin.php:57
313
  #, php-format
314
  msgid "%%search_keywords%%"
315
  msgstr "%%search_keywords%%"
316
 
317
- #: inc/admin/admin.php:57
318
  msgid "Search keywords"
319
  msgstr "Mots clés de recherche"
320
 
321
- #: inc/admin/admin.php:58
322
  #, php-format
323
  msgid "%%current_pagination%%"
324
  msgstr "%%current_pagination%%"
325
 
326
- #: inc/admin/admin.php:58
327
  msgid "Current number page"
328
  msgstr "Numéro de page actuel"
329
 
330
- #: inc/admin/admin.php:64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
  msgid "Templates variables"
332
  msgstr "Modèles de variables"
333
 
334
- #: inc/admin/admin.php:79
335
  msgid ""
336
  "Discourage search engines from indexing this site is <strong>ON!</strong> "
337
  "None of the following settings will be applied."
@@ -339,63 +480,67 @@ msgstr ""
339
  "Décourager les moteurs de recherche d’indexer ce site est <strong>actif !</"
340
  "strong> Aucun des paramètres suivants ne s’appliqueront."
341
 
342
- #: inc/admin/admin.php:80
343
  msgid "Change this settings"
344
  msgstr "Changer ce paramètre"
345
 
346
- #: inc/admin/admin.php:94
347
  msgid "Home"
348
  msgstr "Accueil"
349
 
350
- #: inc/admin/admin.php:95
351
  msgid "Single Post Types"
352
- msgstr "Single Post Types"
353
-
354
- #: inc/admin/admin.php:96 inc/admin/admin.php:137
355
- msgid "Taxonomies"
356
- msgstr "Taxonomies"
357
 
358
- #: inc/admin/admin.php:97
359
  msgid "Archives"
360
  msgstr "Archives"
361
 
362
- #: inc/admin/admin.php:135
 
 
 
 
363
  msgid "General"
364
  msgstr "Général"
365
 
366
- #: inc/admin/admin.php:136
367
  msgid "Post Types"
368
  msgstr "Types d'article"
369
 
370
- #: inc/admin/admin.php:172
371
  msgid "Knowledge Graph"
372
  msgstr "Knowledge Graph"
373
 
374
- #: inc/admin/admin.php:173
375
  msgid "Your social accounts"
376
  msgstr "Vos comptes sociaux"
377
 
378
- #: inc/admin/admin.php:174
379
  msgid "Facebook"
380
  msgstr "Facebook"
381
 
382
- #: inc/admin/admin.php:175
383
  msgid "Twitter"
384
  msgstr "Twitter"
385
 
386
- #: inc/admin/admin.php:236
387
- msgid "Import / Export Settings"
388
- msgstr "Paramètres Import / Export"
389
 
390
- #: inc/admin/admin.php:237
391
- msgid "Import / Export SEOPress settings from site to site"
392
- msgstr "Importer / Exporter les paramètres SEOPress d'un site à un autre"
 
 
 
 
393
 
394
- #: inc/admin/admin.php:240
395
  msgid "Export Settings"
396
  msgstr "Exporter Paramètres"
397
 
398
- #: inc/admin/admin.php:242
399
  msgid ""
400
  "Export the plugin settings for this site as a .json file. This allows you to "
401
  "easily import the configuration into another site."
@@ -404,15 +549,15 @@ msgstr ""
404
  "vous permet d'importer facilement votre configuration dans un autre site "
405
  "WordPress."
406
 
407
- #: inc/admin/admin.php:247
408
  msgid "Export"
409
  msgstr "Exporter"
410
 
411
- #: inc/admin/admin.php:254
412
  msgid "Import Settings"
413
  msgstr "Importer Paramètres"
414
 
415
- #: inc/admin/admin.php:256
416
  msgid ""
417
  "Import the plugin settings from a .json file. This file can be obtained by "
418
  "exporting the settings on another site using the form above."
@@ -421,244 +566,457 @@ msgstr ""
421
  "être obtenu en exportant les paramètres depuis un autre site en utilisant le "
422
  "formulaire ci-dessus."
423
 
424
- #: inc/admin/admin.php:264
425
  msgid "Import"
426
  msgstr "Importer"
427
 
428
- #: inc/admin/admin.php:271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  msgid "Reset All Settings"
430
  msgstr "Tout réinitialiser"
431
 
432
- #: inc/admin/admin.php:273
433
  msgid ""
434
  "<strong>WARNING:</strong> Delete all options related to SEOPress in your "
435
- "database."
436
  msgstr ""
437
  "<strong>AVERTISSEMENT:</strong> Supprime toutes les options liées à SEOPress "
438
- "de votre base de données."
439
 
440
- #: inc/admin/admin.php:278
441
  msgid "Reset settings"
442
  msgstr "Réinitialiser les paramètres"
443
 
444
- #: inc/admin/admin.php:304
445
- msgid "PRO"
446
- msgstr "PRO"
447
 
448
- #: inc/admin/admin.php:315
449
- msgid "You like SEOPress? Don't forget to rate it 5 stars!"
450
- msgstr "Vous aimez SEOPress ? N'oubliez pas de nous noter 5 étoiles !"
 
 
 
 
 
451
 
452
- #: inc/admin/admin.php:347
453
- msgid "Support"
454
- msgstr "Support"
455
 
456
- #: inc/admin/admin.php:356
457
- msgid "Notifications center"
458
- msgstr "Centre de notifications"
459
 
460
- #: inc/admin/admin.php:359
 
 
 
 
 
 
 
 
461
  msgid "Your site is not visible to Search Engines!"
462
- msgstr "Vous site n'est pas visible aux moteurs de recherche !"
 
 
 
 
463
 
464
- #: inc/admin/admin.php:360 inc/admin/admin.php:366 inc/admin/admin.php:372
465
- #: inc/admin/admin.php:378
466
  msgid "Fix this!"
467
  msgstr "Régler!"
468
 
469
- #: inc/admin/admin.php:365
470
  msgid "Your site title is empty!"
471
  msgstr "Le titre de votre site est vide !"
472
 
473
- #: inc/admin/admin.php:371
474
  msgid ""
475
  "Your permalinks are not SEO Friendly! Enable pretty permalinks to fix this."
476
  msgstr ""
477
  "Vos permaliens ne sont pas SEO Friendly ! Veuillez activer la réécriture "
478
  "d'URL pour résoudre cela."
479
 
480
- #: inc/admin/admin.php:377
481
  msgid "You don't have an XML Sitemap!"
482
  msgstr "Vous n'avez pas de Sitemap XML !"
483
 
484
- #: inc/admin/admin.php:389
 
 
 
 
485
  msgid "Titles & metas"
486
  msgstr "Titres et Métas"
487
 
488
- #: inc/admin/admin.php:390
489
  msgid "Manage all your titles & metas"
490
  msgstr "Gérer tous vos titres et métas"
491
 
492
- #: inc/admin/admin.php:391 inc/admin/admin.php:401 inc/admin/admin.php:411
493
- #: inc/admin/admin.php:421 inc/admin/admin.php:431
 
 
 
494
  msgid "Manage"
495
  msgstr "Gérer"
496
 
497
- #: inc/admin/admin.php:400
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  msgid "Manage your XML Sitemap"
499
  msgstr "Gérer votre Sitemap XML"
500
 
501
- #: inc/admin/admin.php:410
502
  msgid "Open Graph, Twitter Card, Google Knowledge Graph and more..."
503
  msgstr "Open Graph, Twitter Card, Google Knowledge Graph et plus..."
504
 
505
- #: inc/admin/admin.php:420
 
 
 
 
506
  msgid "Advanced SEO options for advanced users!"
507
  msgstr "Options SEO avancées pour utilisateurs avancés !"
508
 
509
- #: inc/admin/admin.php:430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
510
  msgid "Import / export SEOPress settings from site to site."
511
  msgstr "Importer / Exporter les paramètres d'un site à un autre"
512
 
513
- #: inc/admin/admin.php:491
 
 
 
 
 
 
 
 
514
  msgid "Site title"
515
  msgstr "Titre du site"
516
 
517
- #: inc/admin/admin.php:724 inc/admin/admin.php:1605
518
  msgid "Enable XML Sitemap"
519
  msgstr "Activez le Sitemap XML"
520
 
521
- #: inc/admin/admin.php:740
522
  msgid "Check to INCLUDE Post Types"
523
  msgstr "Cochez pour INCLURE les Types d'article"
524
 
525
- #: inc/admin/admin.php:756
526
  msgid "Check to INCLUDE Taxonomies"
527
  msgstr "Cochez pour INCLURE les Taxonomies"
528
 
529
- #: inc/admin/admin.php:773
530
  msgid "Person or organization"
531
  msgstr "Personne ou Organisation"
532
 
533
- #: inc/admin/admin.php:781
534
- msgid "Your name/organization"
535
- msgstr "Votre nom/organisation"
536
 
537
- #: inc/admin/admin.php:789
538
  msgid "Your photo / organization logo"
539
  msgstr "Votre photo / logo"
540
 
541
- #: inc/admin/admin.php:806
542
  msgid "Facebook Page URL"
543
  msgstr "URL de la page Facebook"
544
 
545
- #: inc/admin/admin.php:814
546
  msgid "Twitter Username"
547
  msgstr "Compte utilisateur Twitter"
548
 
549
- #: inc/admin/admin.php:822
550
  msgid "Google + URL"
551
  msgstr "URL Google +"
552
 
553
- #: inc/admin/admin.php:830
554
  msgid "Pinterest URL"
555
  msgstr "URL Pinterest"
556
 
557
- #: inc/admin/admin.php:838
558
  msgid "Instagram URL"
559
- msgstr "Instagram URL"
560
 
561
- #: inc/admin/admin.php:846
562
  msgid "YouTube URL"
563
  msgstr "URL YouTube"
564
 
565
- #: inc/admin/admin.php:854
566
  msgid "LinkedIn URL"
567
- msgstr "LinkedIn URL"
568
 
569
- #: inc/admin/admin.php:862
570
  msgid "MySpace URL"
571
  msgstr "URL MySpace"
572
 
573
- #: inc/admin/admin.php:870
574
  msgid "Soundcloud URL"
575
  msgstr "URL Soundcloud"
576
 
577
- #: inc/admin/admin.php:878
578
  msgid "Tumblr URL"
579
  msgstr "URL Tumblr"
580
 
581
- #: inc/admin/admin.php:895
582
  msgid "Enable Open Graph Data"
583
  msgstr "Activez les données Open Graph"
584
 
585
- #: inc/admin/admin.php:903
586
  msgid "Select a default image"
587
  msgstr "Sélectionnez une image par défaut"
588
 
589
- #: inc/admin/admin.php:911
590
  msgid "Facebook Admin ID"
591
  msgstr "Facebook Admin ID"
592
 
593
- #: inc/admin/admin.php:919
594
  msgid "Facebook App ID"
595
  msgstr "Facebook App ID"
596
 
597
- #: inc/admin/admin.php:936
598
  msgid "Enable Twitter Card"
599
  msgstr "Activez Twitter Card"
600
 
601
- #: inc/admin/admin.php:944
602
  msgid "Default Twitter Image"
603
  msgstr "Image Twitter par défaut"
604
 
605
- #: inc/admin/admin.php:952
606
  msgid "Image size for Twitter Summary card"
607
  msgstr "Taille d'image pour Twitter Summary Card"
608
 
609
- #: inc/admin/admin.php:968
610
- msgid ""
611
- "Redirect attachment pages to post parent (if none, redirect to homepage)"
 
 
 
 
 
 
 
 
 
 
 
612
  msgstr ""
613
- "Rediriger les pages de pièces jointes vers le post parent (si aucun, "
614
- "rediriger vers page d'accueil)"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
615
 
616
- #: inc/admin/admin.php:976
617
  msgid "Remove stop words from URL"
618
  msgstr "Supprimer les mots inutiles des URL"
619
 
620
- #: inc/admin/admin.php:984
621
  msgid "Google site verification"
622
  msgstr "Vérification de site Google"
623
 
624
- #: inc/admin/admin.php:992
625
  msgid "Bing site verification"
626
  msgstr "Vérification de site Bing"
627
 
628
- #: inc/admin/admin.php:1000
629
  msgid "Pinterest site verification"
630
  msgstr "Vérification de site Pinterest :"
631
 
632
- #: inc/admin/admin.php:1008
633
  msgid "Yandex site verification"
634
  msgstr "Vérification de site Yandex"
635
 
636
- #: inc/admin/admin.php:1052
 
 
 
 
 
 
 
 
 
 
 
 
 
637
  msgid "<p>Customize your titles & metas for homepage</p>"
638
  msgstr "<p>Personnalisez vos titres et métas pour l'accueil</p>"
639
 
640
- #: inc/admin/admin.php:1057
641
  msgid "<p>Customize your titles & metas for Single Custom Post Types</p>"
642
  msgstr ""
643
  "<p>Personnalisez vos titres et métas pour les singles des Types d'article</p>"
644
 
645
- #: inc/admin/admin.php:1062
646
  msgid "<p>Customize your metas for all pages</p>"
647
  msgstr "<p>Personnalisez vos métas pour toutes les pages</p>"
648
 
649
- #: inc/admin/admin.php:1067
650
  msgid "<p>Customize your metas for all taxonomies archives</p>"
651
  msgstr "<p>Personnalisez vos métas pour toutes les archives de taxonomies</p>"
652
 
653
- #: inc/admin/admin.php:1072
654
  msgid "<p>Customize your metas for all archives</p>"
655
  msgstr "<p>Personnalisez vos métas pour les archives</p>"
656
 
657
- #: inc/admin/admin.php:1077
658
  msgid "<p>Enable your Sitemap</p>"
659
  msgstr "<p>Activez votre Sitemap</p>"
660
 
661
- #: inc/admin/admin.php:1078
662
  msgid ""
663
  "To view your sitemap, enable permalinks (not default one), and save settings "
664
  "to flush them."
@@ -666,226 +1024,456 @@ msgstr ""
666
  "Pour voir votre sitemap, activez les permaliens (pas ceux par défaut), et "
667
  "sauvegardez les paramètres pour les mettre à jour."
668
 
669
- #: inc/admin/admin.php:1080
670
  msgid ""
671
  "Only the last 1000 items are listed in Sitemaps for performances issues."
672
  msgstr ""
673
- "Seules les 1000 derniers éléments sont répertoriés dans les Sitemaps pour "
674
- "des raisons de performances."
675
 
676
- #: inc/admin/admin.php:1083
677
  msgid "View your sitemap"
678
  msgstr "Voir votre sitemap"
679
 
680
- #: inc/admin/admin.php:1085
681
  msgid "Ping Google manually"
682
  msgstr "Pinger Google manuellement"
683
 
684
- #: inc/admin/admin.php:1087
685
  msgid "Flush permalinks"
686
  msgstr "Mettre à jour les permaliens"
687
 
688
- #: inc/admin/admin.php:1093
689
  msgid "<p>Include / Exclude Post Types</p>"
690
  msgstr "<p>Inclure / Exclure les Types d'article</p>"
691
 
692
- #: inc/admin/admin.php:1098
693
  msgid "<p>Include / Exclude Taxonomies</p>"
694
  msgstr "<p>Inclure / Exclure les Taxonomies</p>"
695
 
696
- #: inc/admin/admin.php:1103
697
  msgid "<p>Configure Google Knowledge Graph</p>"
698
  msgstr "<p>Configurer Google Knowledge Graph</p>"
699
 
700
- #: inc/admin/admin.php:1108
701
  msgid "<p>Link your site with your social accounts</p>"
702
  msgstr "<p>Lier votre site à vos comptes sociaux</p>"
703
 
704
- #: inc/admin/admin.php:1113
705
  msgid "<p>Manage Open Graph datas</p>"
706
  msgstr "<p>Gérer l'Open Graph datas</p>"
707
 
708
- #: inc/admin/admin.php:1118
709
  msgid "<p>Manage your Twitter card</p>"
710
  msgstr "<p>Gérer votre Twitter card</p>"
711
 
712
- #: inc/admin/admin.php:1123
 
 
 
 
 
 
 
 
 
 
 
 
713
  msgid "<p>Advanced SEO options</p>"
714
  msgstr "<p>Options avancées de SEO</p>"
715
 
716
- #: inc/admin/admin.php:1134
 
 
 
 
717
  msgid "My awesome website"
718
  msgstr "Mon super site"
719
 
720
- #: inc/admin/admin.php:1144
721
- msgid "This is cool website about Wookiees"
 
 
 
 
 
 
 
722
  msgstr "Un site cool sur les Wookies"
723
 
724
- #: inc/admin/admin.php:1161 inc/admin/admin.php:1253 inc/admin/admin.php:1321
725
- #: inc/admin/admin.php:1367 inc/admin/admin.php:1412 inc/admin/admin.php:1440
726
- #: inc/admin/admin.php:1468
727
  msgid "Title template"
728
  msgstr "Template de Titre"
729
 
730
- #: inc/admin/admin.php:1174 inc/admin/admin.php:1266 inc/admin/admin.php:1334
731
- #: inc/admin/admin.php:1380 inc/admin/admin.php:1425 inc/admin/admin.php:1453
732
- #: inc/admin/admin.php:1481
 
 
 
 
733
  msgid "Meta description template"
734
  msgstr "Template de Méta Description"
735
 
736
- #: inc/admin/admin.php:1233
737
  msgid "Display date in Google search results?"
738
  msgstr "Afficher la date dans les résultats de recherche Google ?"
739
 
740
- #: inc/admin/admin.php:1319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
741
  msgid "Author archives"
742
  msgstr "Archives de l'auteur"
743
 
744
- #: inc/admin/admin.php:1365
745
  msgid "Date archives"
746
  msgstr "Archives par date"
747
 
748
- #: inc/admin/admin.php:1410
 
 
 
 
749
  msgid "Search archives"
750
  msgstr "Archives de recherche"
751
 
752
- #: inc/admin/admin.php:1438
 
 
 
 
753
  msgid "404 archives"
754
  msgstr "Page 404"
755
 
756
- #: inc/admin/admin.php:1466
757
- msgid "Paged archives"
758
- msgstr "Archives paginées"
759
-
760
- #: inc/admin/admin.php:1644 inc/admin/admin.php:1684
761
  msgid "Include"
762
  msgstr "Inclure"
763
 
764
- #: inc/admin/admin.php:1703
765
  msgid "Person"
766
  msgstr "Personne"
767
 
768
- #: inc/admin/admin.php:1706
769
  msgid "Organization"
770
  msgstr "Organisation"
771
 
772
- #: inc/admin/admin.php:1717
773
  msgid "eg: Apple"
774
  msgstr "ex: Apple"
775
 
776
- #: inc/admin/admin.php:1728
777
  msgid "Select your logo"
778
  msgstr "Sélectionnez votre logo"
779
 
780
- #: inc/admin/admin.php:1740
781
  msgid "eg: https://www.facebook.com/your-page"
782
  msgstr "ex: https://www.facebook.com/your-page"
783
 
784
- #: inc/admin/admin.php:1750
785
  msgid "eg: @wpcloudy"
786
  msgstr "ex: @wpcloudy"
787
 
788
- #: inc/admin/admin.php:1760
789
  msgid "eg: https://plus.google.com/+BenjaminDenis"
790
  msgstr "ex: https://plus.google.com/+BenjaminDenis"
791
 
792
- #: inc/admin/admin.php:1770
793
  msgid "eg: https://pinterest.com/wpbuy/"
794
  msgstr "ex: https://pinterest.com/wpbuy/"
795
 
796
- #: inc/admin/admin.php:1780
797
  msgid "eg: https://www.instagram.com/your-name/"
798
  msgstr "ex: https://www.instagram.com/your-name/"
799
 
800
- #: inc/admin/admin.php:1790
801
  msgid "eg: https://www.youtube.com/channel/UCpQzarWu55UzCIH7-OW6pwA"
802
  msgstr "ex: https://www.youtube.com/channel/UCpQzarWu55UzCIH7-OW6pwA"
803
 
804
- #: inc/admin/admin.php:1800
805
  msgid "eg: https://www.linkedin.com/in/benjamin-denis-70672b3b"
806
  msgstr "ex: https://www.linkedin.com/in/benjamin-denis-70672b3b"
807
 
808
- #: inc/admin/admin.php:1810
809
  msgid "eg: https://myspace.com/your-page"
810
  msgstr "ex: https://myspace.com/your-page"
811
 
812
- #: inc/admin/admin.php:1820
813
  msgid "eg: https://soundcloud.com/michaelmccannmusic"
814
  msgstr "ex: https://soundcloud.com/michaelmccannmusic"
815
 
816
- #: inc/admin/admin.php:1830
817
  msgid "eg: https://your-site.tumblr.com"
818
  msgstr "ex: https://your-site.tumblr.com"
819
 
820
- #: inc/admin/admin.php:1847
821
  msgid "Enable OG data"
822
  msgstr "Activer les données OG"
823
 
824
- #: inc/admin/admin.php:1899
825
  msgid "Enable Twitter card"
826
  msgstr "Activer Twitter Card"
827
 
828
- #: inc/admin/admin.php:1930
829
  msgid "Default"
830
  msgstr "Défaut"
831
 
832
- #: inc/admin/admin.php:1933
833
  msgid "Large"
834
  msgstr "Grande"
835
 
836
- #: inc/admin/admin.php:1951
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
837
  msgid "Redirect attachment pages to post parent (or homepage if none)"
838
  msgstr ""
839
  "Rediriger les pages de pièces jointes vers le post parent (si aucun, "
840
  "rediriger vers page d'accueil)"
841
 
842
- #: inc/admin/admin.php:1968
843
  msgid "Remove stop words in permalinks"
844
  msgstr "Supprimer les mots clés inutiles des permaliens"
845
 
846
- #: inc/admin/admin.php:1968
847
  msgid ""
848
  "Setting based on site language. Supported language EN, FR, ES, DE, IT, PT."
849
  msgstr ""
850
  "Réglage basé sur la langue du site. Langue prise en charge EN, FR, ES, DE, "
851
  "IT, PT."
852
 
853
- #: inc/admin/admin.php:1978
854
  msgid "Enter Google meta value site verification"
855
  msgstr "Entrer la meta de vérification de site Google"
856
 
857
- #: inc/admin/admin.php:1988
858
  msgid "Enter Bing meta value site verification"
859
  msgstr "Entrer la meta de vérification de site Bing"
860
 
861
- #: inc/admin/admin.php:1998
862
  msgid "Enter Pinterest meta value site verification"
863
  msgstr "Entrer la meta de vérification de site Pinterest"
864
 
865
- #: inc/admin/admin.php:2008
866
  msgid "Enter Yandex meta value site verification"
867
  msgstr "Entrer la meta de vérification de site Yandex"
868
 
869
- #: inc/functions/options-import-export.php:43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
870
  msgid "Please upload a valid .json file"
871
  msgstr "Veuillez uploader un fichier JSON valide"
872
 
873
- #: inc/functions/options-import-export.php:47
874
  msgid "Please upload a file to import"
875
  msgstr "Uploader un fichier à importer SVP"
876
 
877
- #: seopress.php:154
878
  msgid "Settings"
879
  msgstr "Paramètres"
880
 
881
- #: seopress.php:155
882
  msgid "SEOPress.org"
883
  msgstr "SEOPress.org"
884
 
885
- #: seopress.php:156
886
  msgid "GO PRO!"
887
  msgstr "PASSEZ PRO !"
888
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
889
  #~ msgid "The ultimate plugin to optimize your SEO!"
890
  #~ msgstr "Le plugin ultime pour optimiser votre SEO !"
891
 
@@ -1667,9 +2255,6 @@ msgstr "PASSEZ PRO !"
1667
  #~ msgid "Right"
1668
  #~ msgstr "Droite"
1669
 
1670
- #~ msgid "None"
1671
- #~ msgstr "Aucun"
1672
-
1673
  #~ msgid "File"
1674
  #~ msgstr "Fichier"
1675
 
@@ -1913,9 +2498,6 @@ msgstr "PASSEZ PRO !"
1913
  #~ msgid "Toggle All"
1914
  #~ msgstr "Tout sélectionner"
1915
 
1916
- #~ msgid "License"
1917
- #~ msgstr "Licence"
1918
-
1919
  #~ msgid ""
1920
  #~ "Before starting: define which roles to apply settings using Role Manager "
1921
  #~ "page."
2
  msgstr ""
3
  "Project-Id-Version: SEOPress\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-cloudy\n"
5
+ "POT-Creation-Date: 2016-12-07 18:39+0100\n"
6
+ "PO-Revision-Date: 2016-12-07 18:39+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Benjamin DENIS <contact@seopress.org>\n"
9
  "Language: fr_FR\n"
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
+ #: inc/admin/admin-header.php:10
21
  msgid "SEOPress"
22
  msgstr "SEOPress"
23
 
24
+ #: inc/admin/admin-header.php:14 inc/admin/adminbar.php:59
25
+ msgid "PRO"
26
+ msgstr "PRO"
27
+
28
+ #: inc/admin/admin-header.php:25
29
+ msgid "You like SEOPress? Don't forget to rate it 5 stars!"
30
+ msgstr "Vous aimez SEOPress ? N'oubliez pas de nous noter 5 étoiles !"
31
+
32
+ #: inc/admin/admin-header.php:57
33
+ msgid "Support"
34
+ msgstr "Support"
35
+
36
+ #: inc/admin/admin-metaboxes.php:11 inc/admin/admin-metaboxes.php:13
37
+ #: inc/admin/adminbar.php:16
38
+ msgid "SEO"
39
+ msgstr "SEO"
40
+
41
+ #: inc/admin/admin-metaboxes.php:86
42
  msgid "Titles settings"
43
  msgstr "Paramètres de titres"
44
 
45
+ #: inc/admin/admin-metaboxes.php:87 inc/admin/admin.php:174
46
+ #: inc/admin/admin.php:240 inc/admin/admin.php:402 inc/admin/admin.php:698
47
+ #: inc/admin/adminbar.php:46
48
  msgid "Advanced"
49
  msgstr "Avancé"
50
 
51
+ #: inc/admin/admin-metaboxes.php:88 inc/admin/admin.php:172
52
+ #: inc/admin/admin.php:640 inc/admin/adminbar.php:34
53
  msgid "Social"
54
  msgstr "Social"
55
 
56
+ #: inc/admin/admin-metaboxes.php:90 inc/admin/admin.php:852
57
  msgid "Redirections"
58
  msgstr "Redirections"
59
 
60
+ #: inc/admin/admin-metaboxes.php:93
61
+ msgid "Google News"
62
+ msgstr "Google News"
63
+
64
+ #: inc/admin/admin-metaboxes.php:102
65
  msgid "Title"
66
  msgstr "Titre"
67
 
68
+ #: inc/admin/admin-metaboxes.php:103
69
  msgid "Enter your title"
70
  msgstr "Entrez votre titre"
71
 
72
+ #: inc/admin/admin-metaboxes.php:107 inc/admin/admin-metaboxes.php:115
73
  msgid "(maximum recommended limit)"
74
  msgstr "(limite maximale recommandée)"
75
 
76
+ #: inc/admin/admin-metaboxes.php:110 inc/admin/admin.php:470
77
+ #: inc/admin/admin.php:983
78
  msgid "Meta description"
79
  msgstr "Meta description"
80
 
81
+ #: inc/admin/admin-metaboxes.php:111
82
  msgid "Enter your meta description"
83
  msgstr "Entrez votre méta description"
84
 
85
+ #: inc/admin/admin-metaboxes.php:120
86
  msgid "Google Snippet Preview"
87
+ msgstr "Aperçu Google Snippet"
88
 
89
+ #: inc/admin/admin-metaboxes.php:121
90
  msgid "This is what your page will look like in Google search results"
91
  msgstr ""
92
  "Voilà à quoi ressemblera votre page dans les résultats de recherche Google"
93
 
94
+ #: inc/admin/admin-metaboxes.php:137 inc/admin/admin.php:1141
95
+ #: inc/admin/admin.php:1875 inc/admin/admin.php:2008 inc/admin/admin.php:2098
96
+ #: inc/admin/admin.php:2171 inc/admin/admin.php:2220 inc/admin/admin.php:2300
97
  msgid "noindex"
98
  msgstr "noindex"
99
 
100
+ #: inc/admin/admin-metaboxes.php:138 inc/admin/admin.php:2302
101
+ msgid ""
102
+ "Do not display all pages of the site in Google search results and do not "
103
+ "display \"Cached\" links in search results."
104
+ msgstr ""
105
+ "Ne pas afficher toutes les pages du site dans les résultats de recherche "
106
+ "<br>et ne pas afficher de lien \"En cache\" dans les résultats de recherche."
107
+
108
+ #: inc/admin/admin-metaboxes.php:143 inc/admin/admin.php:1149
109
+ #: inc/admin/admin.php:1894 inc/admin/admin.php:2027 inc/admin/admin.php:2117
110
+ #: inc/admin/admin.php:2319
111
  msgid "nofollow"
112
  msgstr "nofollow"
113
 
114
+ #: inc/admin/admin-metaboxes.php:144 inc/admin/admin.php:2321
115
+ msgid "Do not follow links for all pages."
116
+ msgstr "Ne pas suivre les liens de tout le site."
117
+
118
+ #: inc/admin/admin-metaboxes.php:149 inc/admin/admin.php:1157
119
+ #: inc/admin/admin.php:2338
120
  msgid "noodp"
121
  msgstr "noodp"
122
 
123
+ #: inc/admin/admin-metaboxes.php:150 inc/admin/admin.php:2340
124
+ msgid ""
125
+ "Do not use Open Directory project metadata for titles or excerpts for all "
126
+ "pages."
127
+ msgstr ""
128
+ "Ne pas utiliser les métadonnées de l'Open Directory project pour les titres "
129
+ "ou les extraits de tout le site."
130
+
131
+ #: inc/admin/admin-metaboxes.php:155 inc/admin/admin.php:1165
132
+ #: inc/admin/admin.php:2357
133
  msgid "noimageindex"
134
  msgstr "noimageindex"
135
 
136
+ #: inc/admin/admin-metaboxes.php:156 inc/admin/admin.php:2359
137
+ msgid "Do not index images from the entire site."
138
+ msgstr "Ne pas indexer les images de tout le site."
139
+
140
+ #: inc/admin/admin-metaboxes.php:161 inc/admin/admin.php:1173
141
+ #: inc/admin/admin.php:2376
142
  msgid "noarchive"
143
  msgstr "noarchive"
144
 
145
+ #: inc/admin/admin-metaboxes.php:162 inc/admin/admin.php:2378
146
+ msgid "Do not display a \"Cached\" link in the Google search results."
147
+ msgstr "Ne pas afficher de lien \"En cache\" dans les résultats de recherche."
148
+
149
+ #: inc/admin/admin-metaboxes.php:167 inc/admin/admin.php:1181
150
+ #: inc/admin/admin.php:2395
151
  msgid "nosnippet"
152
  msgstr "nosnippet"
153
 
154
+ #: inc/admin/admin-metaboxes.php:168 inc/admin/admin.php:2397
155
+ msgid ""
156
+ "Do not display a description in the Google search results for all pages."
157
+ msgstr ""
158
+ "Ne pas afficher de description dans les résultats de recherche pour toutes "
159
+ "les pages du site."
160
+
161
+ #: inc/admin/admin-metaboxes.php:171 inc/admin/admin.php:474
162
  msgid "Canonical URL"
163
  msgstr "URL Canonique"
164
 
165
+ #: inc/admin/admin-metaboxes.php:172
166
  msgid "Default value: "
167
  msgstr "Valeur par défaut: "
168
 
169
+ #: inc/admin/admin-metaboxes.php:178
170
  msgid "Facebook Title"
171
  msgstr "Titre Facebook"
172
 
173
+ #: inc/admin/admin-metaboxes.php:179
174
  msgid "Enter your Facebook title"
175
  msgstr "Entrez votre titre Facebook"
176
 
177
+ #: inc/admin/admin-metaboxes.php:182
178
  msgid "Facebook description"
179
  msgstr "Description Facebook"
180
 
181
+ #: inc/admin/admin-metaboxes.php:183
182
  msgid "Enter your Facebook description"
183
  msgstr "Entrez votre description Facebook"
184
 
185
+ #: inc/admin/admin-metaboxes.php:186
186
  msgid "Facebook Thumbnail"
187
  msgstr "Miniature Facebook"
188
 
189
+ #: inc/admin/admin-metaboxes.php:187
190
+ msgid "Minimum size: 200x200px"
191
+ msgstr "Taille minimum : 200x200px"
192
+
193
+ #: inc/admin/admin-metaboxes.php:188 inc/admin/admin-metaboxes.php:204
194
+ #: inc/admin/admin.php:2683 inc/admin/admin.php:2735
195
  msgid "Select your default thumbnail"
196
  msgstr "Sélectionnez votre miniature par défaut"
197
 
198
+ #: inc/admin/admin-metaboxes.php:189 inc/admin/admin-metaboxes.php:205
199
+ #: inc/admin/admin.php:2539 inc/admin/admin.php:2685 inc/admin/admin.php:2737
200
  msgid "Upload an Image"
201
+ msgstr "Envoyer une image"
202
 
203
+ #: inc/admin/admin-metaboxes.php:194
204
  msgid "Twitter Title"
205
  msgstr "Titre Twitter"
206
 
207
+ #: inc/admin/admin-metaboxes.php:195
208
  msgid "Enter your Twitter title"
209
  msgstr "Entrez votre titre Twitter"
210
 
211
+ #: inc/admin/admin-metaboxes.php:198
212
  msgid "Twitter description"
213
  msgstr "Description Twitter"
214
 
215
+ #: inc/admin/admin-metaboxes.php:199
216
  msgid "Enter your Twitter description"
217
  msgstr "Entrez votre description Twitter"
218
 
219
+ #: inc/admin/admin-metaboxes.php:202
220
  msgid "Twitter Thumbnail"
221
  msgstr "Miniature Twitter"
222
 
223
+ #: inc/admin/admin-metaboxes.php:203
224
+ msgid "Minimum size: 160x160px"
225
+ msgstr "Taille minimum : 160x160px"
226
+
227
+ #: inc/admin/admin-metaboxes.php:214
228
  msgid "Enable redirection?"
229
  msgstr "Activer la redirection ?"
230
 
231
+ #: inc/admin/admin-metaboxes.php:218
232
  msgid "URL redirection"
233
  msgstr "URL de redirection"
234
 
235
+ #: inc/admin/admin-metaboxes.php:220
236
  msgid "301"
237
  msgstr "301"
238
 
239
+ #: inc/admin/admin-metaboxes.php:221
240
  msgid "302"
241
  msgstr "302"
242
 
243
+ #: inc/admin/admin-metaboxes.php:222
244
  msgid "307"
245
  msgstr "307"
246
 
247
+ #: inc/admin/admin-metaboxes.php:224
248
  msgid "Enter your URL"
249
  msgstr "Saisissez votre URL"
250
 
251
+ #: inc/admin/admin-metaboxes.php:227 inc/admin/admin-metaboxes.php:229
252
  msgid "Test your URL"
253
  msgstr "Tester votre URL"
254
 
255
+ #: inc/admin/admin-metaboxes.php:238
256
+ msgid "Exclude this post from Google News Sitemap?"
257
+ msgstr "Exclure cet article du sitemap Google News ?"
258
+
259
+ #: inc/admin/admin-metaboxes.php:242
260
+ msgid "Google News Genres"
261
+ msgstr "Genres Google News"
262
+
263
+ #: inc/admin/admin-metaboxes.php:244 inc/admin/admin.php:2903
264
+ #: inc/admin/admin.php:2980 inc/admin/admin.php:3057 inc/admin/admin.php:3134
265
+ #: inc/admin/admin.php:3211
266
+ msgid "None"
267
+ msgstr "Aucun"
268
+
269
+ #: inc/admin/admin-metaboxes.php:245
270
+ msgid "Press Release"
271
+ msgstr "Press Release"
272
+
273
+ #: inc/admin/admin-metaboxes.php:246
274
+ msgid "Satire"
275
+ msgstr "Satire"
276
+
277
+ #: inc/admin/admin-metaboxes.php:247
278
+ msgid "Blog"
279
+ msgstr "Blog"
280
+
281
+ #: inc/admin/admin-metaboxes.php:248
282
+ msgid "OpEd"
283
+ msgstr "OpEd"
284
+
285
+ #: inc/admin/admin-metaboxes.php:249
286
+ msgid "Opinion"
287
+ msgstr "Opinion"
288
+
289
+ #: inc/admin/admin-metaboxes.php:250
290
+ msgid "UserGenerated"
291
+ msgstr "UserGenerated"
292
+
293
+ #: inc/admin/admin-metaboxes.php:255
294
+ msgid "Google News Keywords <em>(max recommended limit: 12)</em>"
295
+ msgstr "Mots clés Google News <em>(limite max recommandée: 12)</em>"
296
+
297
+ #: inc/admin/admin-metaboxes.php:256
298
+ msgid "Enter your Google News Keywords"
299
+ msgstr "Entrez vos mots clés Google News"
300
+
301
+ #: inc/admin/admin.php:102
302
+ msgid "404 - Page not found"
303
+ msgstr "404 - Page non trouvée"
304
+
305
+ #: inc/admin/admin.php:170 inc/admin/adminbar.php:22
306
  msgid "Titles & Metas"
307
  msgstr "Titres et Métas"
308
 
309
+ #: inc/admin/admin.php:171 inc/admin/admin.php:611 inc/admin/adminbar.php:28
310
  msgid "XML Sitemap"
311
  msgstr "Sitemap XML"
312
 
313
+ #: inc/admin/admin.php:173 inc/admin/admin.php:669 inc/admin/adminbar.php:40
314
+ msgid "Google Analytics"
315
+ msgstr "Google Analytics"
316
+
317
+ #: inc/admin/admin.php:175
318
  msgid "Import / Export / Reset settings"
319
  msgstr "Import / Export / Réinitialisation des paramètres"
320
 
321
+ #: inc/admin/admin.php:175 inc/admin/admin.php:893 inc/admin/adminbar.php:52
322
  msgid "Import / Export / Reset"
323
  msgstr "Importer / Exporter / Réinitialiser"
324
 
325
+ #: inc/admin/admin.php:182
326
  #, php-format
327
  msgid "%%sitetitle%%"
328
  msgstr "%%sitetitle%%"
329
 
330
+ #: inc/admin/admin.php:182 inc/admin/admin.php:1798 inc/admin/admin.php:1845
331
+ #: inc/admin/admin.php:1960 inc/admin/admin.php:2068 inc/admin/admin.php:2142
332
+ #: inc/admin/admin.php:2192 inc/admin/admin.php:2241 inc/admin/admin.php:2271
333
  msgid "Site Title"
334
  msgstr "Titre du Site"
335
 
336
+ #: inc/admin/admin.php:183
337
  #, php-format
338
  msgid "%%tagline%%"
339
  msgstr "%%tagline%%"
340
 
341
+ #: inc/admin/admin.php:183 inc/admin/admin.php:1799 inc/admin/admin.php:1810
342
  msgid "Tagline"
343
  msgstr "Slogan du site"
344
 
345
+ #: inc/admin/admin.php:184
346
  #, php-format
347
  msgid "%%post_title%%"
348
  msgstr "%%post_title%%"
349
 
350
+ #: inc/admin/admin.php:184
351
  msgid "Post Title (post, page, custom post type)"
352
  msgstr "Titre du post (article, page, type d'article personnalisé)"
353
 
354
+ #: inc/admin/admin.php:185
355
  #, php-format
356
  msgid "%%post_excerpt%%"
357
  msgstr "%%post_excerpt%%"
358
 
359
+ #: inc/admin/admin.php:185
360
  msgid "Post excerpt"
361
  msgstr "Extrait du post"
362
 
363
+ #: inc/admin/admin.php:186
364
  #, php-format
365
  msgid "%%post_date%%"
366
  msgstr "%%post_date%%"
367
 
368
+ #: inc/admin/admin.php:186
369
  msgid "Post date"
370
  msgstr "Date du post"
371
 
372
+ #: inc/admin/admin.php:187
373
  #, php-format
374
  msgid "%%post_author%%"
375
  msgstr "%%post_author%%"
376
 
377
+ #: inc/admin/admin.php:187 inc/admin/admin.php:2141
378
  msgid "Post author"
379
  msgstr "Auteur du post"
380
 
381
+ #: inc/admin/admin.php:188
382
  #, php-format
383
  msgid "%%_category_title%%"
384
  msgstr "%%_category_title%%"
385
 
386
+ #: inc/admin/admin.php:188
387
  msgid "Category title"
388
  msgstr "Titre de catégorie"
389
 
390
+ #: inc/admin/admin.php:189
391
  #, php-format
392
  msgid "%%_category_description%%"
393
  msgstr "%%_category_description%%"
394
 
395
+ #: inc/admin/admin.php:189
396
  msgid "Category description"
397
  msgstr "Description de la catégorie"
398
 
399
+ #: inc/admin/admin.php:190
400
  #, php-format
401
  msgid "%%tag_title%%"
402
  msgstr "%%tag_title%%"
403
 
404
+ #: inc/admin/admin.php:190
405
  msgid "Tag title"
406
+ msgstr "Titre de l'étiquette"
407
 
408
+ #: inc/admin/admin.php:191
409
  #, php-format
410
  msgid "%%tag_description%%"
411
  msgstr "%%tag_description%%"
412
 
413
+ #: inc/admin/admin.php:191
414
  msgid "Tag description"
415
+ msgstr "Description de l'étiquette"
416
 
417
+ #: inc/admin/admin.php:192
418
  #, php-format
419
  msgid "%%term_title%%"
420
  msgstr "%%term_title%%"
421
 
422
+ #: inc/admin/admin.php:192
423
  msgid "Term title"
424
  msgstr "Titre du terme"
425
 
426
+ #: inc/admin/admin.php:193
427
  #, php-format
428
  msgid "%%term_description%%"
429
  msgstr "%%term_description%%"
430
 
431
+ #: inc/admin/admin.php:193
432
  msgid "Term description"
433
  msgstr "Description du terme"
434
 
435
+ #: inc/admin/admin.php:194
436
  #, php-format
437
  msgid "%%search_keywords%%"
438
  msgstr "%%search_keywords%%"
439
 
440
+ #: inc/admin/admin.php:194
441
  msgid "Search keywords"
442
  msgstr "Mots clés de recherche"
443
 
444
+ #: inc/admin/admin.php:195
445
  #, php-format
446
  msgid "%%current_pagination%%"
447
  msgstr "%%current_pagination%%"
448
 
449
+ #: inc/admin/admin.php:195
450
  msgid "Current number page"
451
  msgstr "Numéro de page actuel"
452
 
453
+ #: inc/admin/admin.php:196
454
+ #, php-format
455
+ msgid "%%cpt_plural%%"
456
+ msgstr "%%cpt_plural%%"
457
+
458
+ #: inc/admin/admin.php:196
459
+ msgid "Plural Post Type Archive name"
460
+ msgstr "Nom pluriel archives type d'article personnalisé"
461
+
462
+ #: inc/admin/admin.php:197
463
+ #, php-format
464
+ msgid "%%date_archive%%"
465
+ msgstr "%%date_archive%%"
466
+
467
+ #: inc/admin/admin.php:197
468
+ msgid "Date Archive"
469
+ msgstr "Date d'archive"
470
+
471
+ #: inc/admin/admin.php:203
472
  msgid "Templates variables"
473
  msgstr "Modèles de variables"
474
 
475
+ #: inc/admin/admin.php:221
476
  msgid ""
477
  "Discourage search engines from indexing this site is <strong>ON!</strong> "
478
  "None of the following settings will be applied."
480
  "Décourager les moteurs de recherche d’indexer ce site est <strong>actif !</"
481
  "strong> Aucun des paramètres suivants ne s’appliqueront."
482
 
483
+ #: inc/admin/admin.php:222
484
  msgid "Change this settings"
485
  msgstr "Changer ce paramètre"
486
 
487
+ #: inc/admin/admin.php:236
488
  msgid "Home"
489
  msgstr "Accueil"
490
 
491
+ #: inc/admin/admin.php:237
492
  msgid "Single Post Types"
493
+ msgstr "Détail Types d'Articles"
 
 
 
 
494
 
495
+ #: inc/admin/admin.php:238
496
  msgid "Archives"
497
  msgstr "Archives"
498
 
499
+ #: inc/admin/admin.php:239 inc/admin/admin.php:282
500
+ msgid "Taxonomies"
501
+ msgstr "Taxonomies"
502
+
503
+ #: inc/admin/admin.php:280 inc/admin/admin.php:361
504
  msgid "General"
505
  msgstr "Général"
506
 
507
+ #: inc/admin/admin.php:281
508
  msgid "Post Types"
509
  msgstr "Types d'article"
510
 
511
+ #: inc/admin/admin.php:319
512
  msgid "Knowledge Graph"
513
  msgstr "Knowledge Graph"
514
 
515
+ #: inc/admin/admin.php:320
516
  msgid "Your social accounts"
517
  msgstr "Vos comptes sociaux"
518
 
519
+ #: inc/admin/admin.php:321
520
  msgid "Facebook"
521
  msgstr "Facebook"
522
 
523
+ #: inc/admin/admin.php:322
524
  msgid "Twitter"
525
  msgstr "Twitter"
526
 
527
+ #: inc/admin/admin.php:362
528
+ msgid "Tracking"
529
+ msgstr "Suivi"
530
 
531
+ #: inc/admin/admin.php:363
532
+ msgid "Custom Dimensions"
533
+ msgstr "Dimensions personnalisées"
534
+
535
+ #: inc/admin/admin.php:403
536
+ msgid "Appearance"
537
+ msgstr "Apparence"
538
 
539
+ #: inc/admin/admin.php:434
540
  msgid "Export Settings"
541
  msgstr "Exporter Paramètres"
542
 
543
+ #: inc/admin/admin.php:436
544
  msgid ""
545
  "Export the plugin settings for this site as a .json file. This allows you to "
546
  "easily import the configuration into another site."
549
  "vous permet d'importer facilement votre configuration dans un autre site "
550
  "WordPress."
551
 
552
+ #: inc/admin/admin.php:441
553
  msgid "Export"
554
  msgstr "Exporter"
555
 
556
+ #: inc/admin/admin.php:448
557
  msgid "Import Settings"
558
  msgstr "Importer Paramètres"
559
 
560
+ #: inc/admin/admin.php:450
561
  msgid ""
562
  "Import the plugin settings from a .json file. This file can be obtained by "
563
  "exporting the settings on another site using the form above."
566
  "être obtenu en exportant les paramètres depuis un autre site en utilisant le "
567
  "formulaire ci-dessus."
568
 
569
+ #: inc/admin/admin.php:458
570
  msgid "Import"
571
  msgstr "Importer"
572
 
573
+ #: inc/admin/admin.php:465
574
+ msgid "Import posts metadata from Yoast"
575
+ msgstr ""
576
+ "Importer les méta données des articles, pages, types d'articles "
577
+ "personnalisés depuis Yoast"
578
+
579
+ #: inc/admin/admin.php:467
580
+ msgid "By clicking Migrate, we'll import:"
581
+ msgstr "En cliquant sur Migrer, vous importerez :"
582
+
583
+ #: inc/admin/admin.php:469
584
+ msgid "Title tags"
585
+ msgstr "Balises titres"
586
+
587
+ #: inc/admin/admin.php:471
588
+ msgid "Facebook Open Graph tags (title, description and image thumbnail)"
589
+ msgstr "Balises Facebook Open Graph (titre, description et miniature)"
590
+
591
+ #: inc/admin/admin.php:472
592
+ msgid "Twitter tags (title, description and image thumbnail)"
593
+ msgstr "Balises Twitter (titre, description et miniature)"
594
+
595
+ #: inc/admin/admin.php:473
596
+ msgid "Meta Robots (noindex, nofollow...)"
597
+ msgstr "Meta Robots (noindex, nofollow...)"
598
+
599
+ #: inc/admin/admin.php:476
600
+ msgid ""
601
+ "<strong>WARNING:</strong> Migration will delete all SEOPress posts metadata"
602
+ msgstr ""
603
+ "<strong>ATTENTION :</strong> La migration supprimera toutes les méta-données "
604
+ "de SEOPress"
605
+
606
+ #: inc/admin/admin.php:477
607
+ msgid "Migrate now"
608
+ msgstr "Migrer maintenant"
609
+
610
+ #: inc/admin/admin.php:484
611
  msgid "Reset All Settings"
612
  msgstr "Tout réinitialiser"
613
 
614
+ #: inc/admin/admin.php:486
615
  msgid ""
616
  "<strong>WARNING:</strong> Delete all options related to SEOPress in your "
617
+ "database AND set settings to their default values."
618
  msgstr ""
619
  "<strong>AVERTISSEMENT:</strong> Supprime toutes les options liées à SEOPress "
620
+ "dans la base de données et redéfini ces derniers à leurs valeurs par défaut."
621
 
622
+ #: inc/admin/admin.php:491
623
  msgid "Reset settings"
624
  msgstr "Réinitialiser les paramètres"
625
 
626
+ #: inc/admin/admin.php:514
627
+ msgid "Notifications center"
628
+ msgstr "Centre de notifications"
629
 
630
+ #: inc/admin/admin.php:519
631
+ msgid ""
632
+ "We notice that you use Yoast SEO plugin. <br>Do you want to migrate all your "
633
+ "posts metadata to SEOPress?"
634
+ msgstr ""
635
+ "Nous avons noté que vous utilisez Yoast SEO. <br>Souhaitez vous migrer les "
636
+ "méta données de vos articles, pages et types d'articles personnalisés vers "
637
+ "SEOPress ?"
638
 
639
+ #: inc/admin/admin.php:521
640
+ msgid "Migrate!"
641
+ msgstr "Migrer !"
642
 
643
+ #: inc/admin/admin.php:528
644
+ msgid "Your site doesn't use an SSL certificate!"
645
+ msgstr "Votre site n'utilise pas de certificat SSL !"
646
 
647
+ #: inc/admin/admin.php:529
648
+ msgid "Low impact"
649
+ msgstr "Impact faible"
650
+
651
+ #: inc/admin/admin.php:531
652
+ msgid "Buy an SSL!"
653
+ msgstr "Acheter un SSL !"
654
+
655
+ #: inc/admin/admin.php:538
656
  msgid "Your site is not visible to Search Engines!"
657
+ msgstr "Votre site n'est pas visible aux moteurs de recherche !"
658
+
659
+ #: inc/admin/admin.php:539 inc/admin/admin.php:549 inc/admin/admin.php:559
660
+ msgid "High impact"
661
+ msgstr "Impact élevé"
662
 
663
+ #: inc/admin/admin.php:541 inc/admin/admin.php:551 inc/admin/admin.php:561
664
+ #: inc/admin/admin.php:571
665
  msgid "Fix this!"
666
  msgstr "Régler!"
667
 
668
+ #: inc/admin/admin.php:548
669
  msgid "Your site title is empty!"
670
  msgstr "Le titre de votre site est vide !"
671
 
672
+ #: inc/admin/admin.php:558
673
  msgid ""
674
  "Your permalinks are not SEO Friendly! Enable pretty permalinks to fix this."
675
  msgstr ""
676
  "Vos permaliens ne sont pas SEO Friendly ! Veuillez activer la réécriture "
677
  "d'URL pour résoudre cela."
678
 
679
+ #: inc/admin/admin.php:568
680
  msgid "You don't have an XML Sitemap!"
681
  msgstr "Vous n'avez pas de Sitemap XML !"
682
 
683
+ #: inc/admin/admin.php:569
684
+ msgid "Medium impact"
685
+ msgstr "Impact modéré"
686
+
687
+ #: inc/admin/admin.php:582
688
  msgid "Titles & metas"
689
  msgstr "Titres et Métas"
690
 
691
+ #: inc/admin/admin.php:583
692
  msgid "Manage all your titles & metas"
693
  msgstr "Gérer tous vos titres et métas"
694
 
695
+ #: inc/admin/admin.php:584 inc/admin/admin.php:613 inc/admin/admin.php:642
696
+ #: inc/admin/admin.php:671 inc/admin/admin.php:700 inc/admin/admin.php:729
697
+ #: inc/admin/admin.php:757 inc/admin/admin.php:786 inc/admin/admin.php:797
698
+ #: inc/admin/admin.php:826 inc/admin/admin.php:854 inc/admin/admin.php:883
699
+ #: inc/admin/admin.php:895 inc/admin/admin.php:907
700
  msgid "Manage"
701
  msgstr "Gérer"
702
 
703
+ #: inc/admin/admin.php:596 inc/admin/admin.php:600 inc/admin/admin.php:625
704
+ #: inc/admin/admin.php:629 inc/admin/admin.php:654 inc/admin/admin.php:658
705
+ #: inc/admin/admin.php:683 inc/admin/admin.php:687 inc/admin/admin.php:712
706
+ #: inc/admin/admin.php:716 inc/admin/admin.php:741 inc/admin/admin.php:745
707
+ #: inc/admin/admin.php:769 inc/admin/admin.php:773 inc/admin/admin.php:809
708
+ #: inc/admin/admin.php:813 inc/admin/admin.php:838 inc/admin/admin.php:842
709
+ #: inc/admin/admin.php:866 inc/admin/admin.php:870
710
+ msgid "Click to disable this feature"
711
+ msgstr "Cliquez pour désactiver cette fonctionnalité"
712
+
713
+ #: inc/admin/admin.php:597 inc/admin/admin.php:599 inc/admin/admin.php:626
714
+ #: inc/admin/admin.php:628 inc/admin/admin.php:655 inc/admin/admin.php:657
715
+ #: inc/admin/admin.php:684 inc/admin/admin.php:686 inc/admin/admin.php:713
716
+ #: inc/admin/admin.php:715 inc/admin/admin.php:742 inc/admin/admin.php:744
717
+ #: inc/admin/admin.php:770 inc/admin/admin.php:772 inc/admin/admin.php:810
718
+ #: inc/admin/admin.php:812 inc/admin/admin.php:839 inc/admin/admin.php:841
719
+ #: inc/admin/admin.php:867 inc/admin/admin.php:869
720
+ msgid "Click to enable this feature"
721
+ msgstr "Cliquez pour activer cette fonctionnalité"
722
+
723
+ #: inc/admin/admin.php:612
724
  msgid "Manage your XML Sitemap"
725
  msgstr "Gérer votre Sitemap XML"
726
 
727
+ #: inc/admin/admin.php:641
728
  msgid "Open Graph, Twitter Card, Google Knowledge Graph and more..."
729
  msgstr "Open Graph, Twitter Card, Google Knowledge Graph et plus..."
730
 
731
+ #: inc/admin/admin.php:670
732
+ msgid "Track everything about your visitors with Google Analytics"
733
+ msgstr "Suivez tout ce qui concerne vos visiteurs avec Google Analytics"
734
+
735
+ #: inc/admin/admin.php:699
736
  msgid "Advanced SEO options for advanced users!"
737
  msgstr "Options SEO avancées pour utilisateurs avancés !"
738
 
739
+ #: inc/admin/admin.php:727
740
+ msgid "WooCommerce"
741
+ msgstr "WooCommerce"
742
+
743
+ #: inc/admin/admin.php:728
744
+ msgid "Improve WooCommerce SEO"
745
+ msgstr "Améliorer le SEO de WooCommerce"
746
+
747
+ #: inc/admin/admin.php:755
748
+ msgid "Breadcrumbs"
749
+ msgstr "Fil d'ariane"
750
+
751
+ #: inc/admin/admin.php:756
752
+ msgid "Enable Breadcrumbs for your theme and improve your SEO in SERPs"
753
+ msgstr ""
754
+ "Activer le fil d'ariane pour votre thème et améliorer votre SEO dans les "
755
+ "résultats de recherche "
756
+
757
+ #: inc/admin/admin.php:784
758
+ msgid "Google Page Speed"
759
+ msgstr "Google Page Speed"
760
+
761
+ #: inc/admin/admin.php:785
762
+ msgid "Track your website performance to improve SEO with Google Page Speed"
763
+ msgstr ""
764
+ "Suivez les performances de votre site Web afin d’améliorer le SEO avec "
765
+ "Google Page Speed"
766
+
767
+ #: inc/admin/admin.php:795
768
+ msgid "Robots"
769
+ msgstr "Robots"
770
+
771
+ #: inc/admin/admin.php:796
772
+ msgid "Edit your robots.txt file"
773
+ msgstr "Editer votre fichier robots.txt"
774
+
775
+ #: inc/admin/admin.php:824
776
+ msgid "Google News Sitemap"
777
+ msgstr "Google News Sitemap"
778
+
779
+ #: inc/admin/admin.php:825
780
+ msgid "Optimize your site for Google News"
781
+ msgstr "Optimisez votre site pour Google Actualités"
782
+
783
+ #: inc/admin/admin.php:853
784
+ msgid "Monitor 404, create 301, 302 and 307 redirections"
785
+ msgstr "Surveiller les 404, créer des redirections 301, 302 et 307"
786
+
787
+ #: inc/admin/admin.php:881
788
+ msgid "htaccess"
789
+ msgstr "htaccess"
790
+
791
+ #: inc/admin/admin.php:882
792
+ msgid "Edit your htaccess file."
793
+ msgstr "Modifier votre fichier htaccess."
794
+
795
+ #: inc/admin/admin.php:894
796
  msgid "Import / export SEOPress settings from site to site."
797
  msgstr "Importer / Exporter les paramètres d'un site à un autre"
798
 
799
+ #: inc/admin/admin.php:905
800
+ msgid "License"
801
+ msgstr "Licence"
802
+
803
+ #: inc/admin/admin.php:906
804
+ msgid "Edit your SEOPress license key."
805
+ msgstr "Modifier votre clé de licence SEOPress."
806
+
807
+ #: inc/admin/admin.php:975
808
  msgid "Site title"
809
  msgstr "Titre du site"
810
 
811
+ #: inc/admin/admin.php:1198 inc/admin/admin.php:2414
812
  msgid "Enable XML Sitemap"
813
  msgstr "Activez le Sitemap XML"
814
 
815
+ #: inc/admin/admin.php:1214
816
  msgid "Check to INCLUDE Post Types"
817
  msgstr "Cochez pour INCLURE les Types d'article"
818
 
819
+ #: inc/admin/admin.php:1230
820
  msgid "Check to INCLUDE Taxonomies"
821
  msgstr "Cochez pour INCLURE les Taxonomies"
822
 
823
+ #: inc/admin/admin.php:1247
824
  msgid "Person or organization"
825
  msgstr "Personne ou Organisation"
826
 
827
+ #: inc/admin/admin.php:1255
828
+ msgid "Your name / organization"
829
+ msgstr "Votre nom / organisation"
830
 
831
+ #: inc/admin/admin.php:1263
832
  msgid "Your photo / organization logo"
833
  msgstr "Votre photo / logo"
834
 
835
+ #: inc/admin/admin.php:1280
836
  msgid "Facebook Page URL"
837
  msgstr "URL de la page Facebook"
838
 
839
+ #: inc/admin/admin.php:1288
840
  msgid "Twitter Username"
841
  msgstr "Compte utilisateur Twitter"
842
 
843
+ #: inc/admin/admin.php:1296
844
  msgid "Google + URL"
845
  msgstr "URL Google +"
846
 
847
+ #: inc/admin/admin.php:1304
848
  msgid "Pinterest URL"
849
  msgstr "URL Pinterest"
850
 
851
+ #: inc/admin/admin.php:1312
852
  msgid "Instagram URL"
853
+ msgstr "URL Instagram"
854
 
855
+ #: inc/admin/admin.php:1320
856
  msgid "YouTube URL"
857
  msgstr "URL YouTube"
858
 
859
+ #: inc/admin/admin.php:1328
860
  msgid "LinkedIn URL"
861
+ msgstr "URL LinkedIn"
862
 
863
+ #: inc/admin/admin.php:1336
864
  msgid "MySpace URL"
865
  msgstr "URL MySpace"
866
 
867
+ #: inc/admin/admin.php:1344
868
  msgid "Soundcloud URL"
869
  msgstr "URL Soundcloud"
870
 
871
+ #: inc/admin/admin.php:1352
872
  msgid "Tumblr URL"
873
  msgstr "URL Tumblr"
874
 
875
+ #: inc/admin/admin.php:1369
876
  msgid "Enable Open Graph Data"
877
  msgstr "Activez les données Open Graph"
878
 
879
+ #: inc/admin/admin.php:1377
880
  msgid "Select a default image"
881
  msgstr "Sélectionnez une image par défaut"
882
 
883
+ #: inc/admin/admin.php:1385
884
  msgid "Facebook Admin ID"
885
  msgstr "Facebook Admin ID"
886
 
887
+ #: inc/admin/admin.php:1393
888
  msgid "Facebook App ID"
889
  msgstr "Facebook App ID"
890
 
891
+ #: inc/admin/admin.php:1410
892
  msgid "Enable Twitter Card"
893
  msgstr "Activez Twitter Card"
894
 
895
+ #: inc/admin/admin.php:1418
896
  msgid "Default Twitter Image"
897
  msgstr "Image Twitter par défaut"
898
 
899
+ #: inc/admin/admin.php:1426
900
  msgid "Image size for Twitter Summary card"
901
  msgstr "Taille d'image pour Twitter Summary Card"
902
 
903
+ #: inc/admin/admin.php:1443 inc/admin/admin.php:2774
904
+ msgid "Enable Google Analytics tracking"
905
+ msgstr "Activer le suivi Google Analytics"
906
+
907
+ #: inc/admin/admin.php:1451
908
+ msgid "Enter your tracking ID"
909
+ msgstr "Saisissez votre ID de suivi"
910
+
911
+ #: inc/admin/admin.php:1459
912
+ msgid "Exclude user roles from tracking"
913
+ msgstr "Exclure des rôles utilisateurs du suivi"
914
+
915
+ #: inc/admin/admin.php:1477 inc/admin/admin.php:2826
916
+ msgid "Enable remarketing, demographics and interest reporting"
917
  msgstr ""
918
+ "Activer le remarketing, les rapports démographiques et centres d'intérêts"
919
+
920
+ #: inc/admin/admin.php:1485 inc/admin/admin.php:2843
921
+ msgid "Enable IP Anonymization"
922
+ msgstr "Activer l'anonymisation des IP"
923
+
924
+ #: inc/admin/admin.php:1493 inc/admin/admin.php:2860
925
+ msgid "Enhanced Link Attribution"
926
+ msgstr "Améliorer l'attribution des liens"
927
+
928
+ #: inc/admin/admin.php:1501 inc/admin/admin.php:2877
929
+ msgid "Enable cross-domain tracking"
930
+ msgstr "Activer le suivi cross-domain"
931
+
932
+ #: inc/admin/admin.php:1509
933
+ msgid "Cross domains"
934
+ msgstr "Cross domains"
935
+
936
+ #: inc/admin/admin.php:1527
937
+ msgid "Track Authors"
938
+ msgstr "Suivre les Auteurs"
939
+
940
+ #: inc/admin/admin.php:1535
941
+ msgid "Track Categories"
942
+ msgstr "Suivre les Catégories"
943
+
944
+ #: inc/admin/admin.php:1543
945
+ msgid "Track Tags"
946
+ msgstr "Suivre les Etiquettes"
947
+
948
+ #: inc/admin/admin.php:1551
949
+ msgid "Track Post Types"
950
+ msgstr "Suivre les Types d'articles personnalisés"
951
+
952
+ #: inc/admin/admin.php:1559
953
+ msgid "Track Logged In Users"
954
+ msgstr "Suivre les utilisateurs connectés"
955
+
956
+ #: inc/admin/admin.php:1576
957
+ msgid "Redirect attachment pages to post parent"
958
+ msgstr ""
959
+ "Rediriger les pages de type pièces jointes vers la page parent (attachment)"
960
 
961
+ #: inc/admin/admin.php:1584
962
  msgid "Remove stop words from URL"
963
  msgstr "Supprimer les mots inutiles des URL"
964
 
965
+ #: inc/admin/admin.php:1592
966
  msgid "Google site verification"
967
  msgstr "Vérification de site Google"
968
 
969
+ #: inc/admin/admin.php:1600
970
  msgid "Bing site verification"
971
  msgstr "Vérification de site Bing"
972
 
973
+ #: inc/admin/admin.php:1608
974
  msgid "Pinterest site verification"
975
  msgstr "Vérification de site Pinterest :"
976
 
977
+ #: inc/admin/admin.php:1616
978
  msgid "Yandex site verification"
979
  msgstr "Vérification de site Yandex"
980
 
981
+ #: inc/admin/admin.php:1633
982
+ msgid "SEOPress in admin bar"
983
+ msgstr "SEOPress dans la barre d’admin"
984
+
985
+ #: inc/admin/admin.php:1641
986
+ msgid "Show Title tag column in post types"
987
+ msgstr "Afficher la balise Titre dans les colonnes des articles personnalisés"
988
+
989
+ #: inc/admin/admin.php:1649
990
+ msgid "Show Meta description column in post types"
991
+ msgstr ""
992
+ "Afficher la meta description dans les colonnes des articles personnalisés"
993
+
994
+ #: inc/admin/admin.php:1693
995
  msgid "<p>Customize your titles & metas for homepage</p>"
996
  msgstr "<p>Personnalisez vos titres et métas pour l'accueil</p>"
997
 
998
+ #: inc/admin/admin.php:1698
999
  msgid "<p>Customize your titles & metas for Single Custom Post Types</p>"
1000
  msgstr ""
1001
  "<p>Personnalisez vos titres et métas pour les singles des Types d'article</p>"
1002
 
1003
+ #: inc/admin/admin.php:1703
1004
  msgid "<p>Customize your metas for all pages</p>"
1005
  msgstr "<p>Personnalisez vos métas pour toutes les pages</p>"
1006
 
1007
+ #: inc/admin/admin.php:1708
1008
  msgid "<p>Customize your metas for all taxonomies archives</p>"
1009
  msgstr "<p>Personnalisez vos métas pour toutes les archives de taxonomies</p>"
1010
 
1011
+ #: inc/admin/admin.php:1713
1012
  msgid "<p>Customize your metas for all archives</p>"
1013
  msgstr "<p>Personnalisez vos métas pour les archives</p>"
1014
 
1015
+ #: inc/admin/admin.php:1718
1016
  msgid "<p>Enable your Sitemap</p>"
1017
  msgstr "<p>Activez votre Sitemap</p>"
1018
 
1019
+ #: inc/admin/admin.php:1719
1020
  msgid ""
1021
  "To view your sitemap, enable permalinks (not default one), and save settings "
1022
  "to flush them."
1024
  "Pour voir votre sitemap, activez les permaliens (pas ceux par défaut), et "
1025
  "sauvegardez les paramètres pour les mettre à jour."
1026
 
1027
+ #: inc/admin/admin.php:1721
1028
  msgid ""
1029
  "Only the last 1000 items are listed in Sitemaps for performances issues."
1030
  msgstr ""
1031
+ "Seuls les 1000 derniers éléments sont répertoriés dans les Sitemaps pour des "
1032
+ "raisons de performances."
1033
 
1034
+ #: inc/admin/admin.php:1724
1035
  msgid "View your sitemap"
1036
  msgstr "Voir votre sitemap"
1037
 
1038
+ #: inc/admin/admin.php:1726
1039
  msgid "Ping Google manually"
1040
  msgstr "Pinger Google manuellement"
1041
 
1042
+ #: inc/admin/admin.php:1728
1043
  msgid "Flush permalinks"
1044
  msgstr "Mettre à jour les permaliens"
1045
 
1046
+ #: inc/admin/admin.php:1734
1047
  msgid "<p>Include / Exclude Post Types</p>"
1048
  msgstr "<p>Inclure / Exclure les Types d'article</p>"
1049
 
1050
+ #: inc/admin/admin.php:1739
1051
  msgid "<p>Include / Exclude Taxonomies</p>"
1052
  msgstr "<p>Inclure / Exclure les Taxonomies</p>"
1053
 
1054
+ #: inc/admin/admin.php:1744
1055
  msgid "<p>Configure Google Knowledge Graph</p>"
1056
  msgstr "<p>Configurer Google Knowledge Graph</p>"
1057
 
1058
+ #: inc/admin/admin.php:1749
1059
  msgid "<p>Link your site with your social accounts</p>"
1060
  msgstr "<p>Lier votre site à vos comptes sociaux</p>"
1061
 
1062
+ #: inc/admin/admin.php:1754
1063
  msgid "<p>Manage Open Graph datas</p>"
1064
  msgstr "<p>Gérer l'Open Graph datas</p>"
1065
 
1066
+ #: inc/admin/admin.php:1759
1067
  msgid "<p>Manage your Twitter card</p>"
1068
  msgstr "<p>Gérer votre Twitter card</p>"
1069
 
1070
+ #: inc/admin/admin.php:1764
1071
+ msgid "<p>Link your Google Analytics to your website</p>"
1072
+ msgstr "<p>Lier Google Analytics à votre site</p>"
1073
+
1074
+ #: inc/admin/admin.php:1769
1075
+ msgid "<p>Configure your Google Analytics tracking code</p>"
1076
+ msgstr "<p>Configurer votre code de suivi Google Analytics</p>"
1077
+
1078
+ #: inc/admin/admin.php:1774
1079
+ msgid "<p>Configure your Google Analytics custom dimensions</p>"
1080
+ msgstr "<p>Configurer vos dimensions personnalisées pour Google Analytics</p>"
1081
+
1082
+ #: inc/admin/admin.php:1779
1083
  msgid "<p>Advanced SEO options</p>"
1084
  msgstr "<p>Options avancées de SEO</p>"
1085
 
1086
+ #: inc/admin/admin.php:1784
1087
+ msgid "<p>Customize SEOPress to fit your needs</p>"
1088
+ msgstr "<p>Personnaliser SEOPress pour correspondre à vos besoins</p>"
1089
+
1090
+ #: inc/admin/admin.php:1795
1091
  msgid "My awesome website"
1092
  msgstr "Mon super site"
1093
 
1094
+ #: inc/admin/admin.php:1800 inc/admin/admin.php:1811 inc/admin/admin.php:1847
1095
+ #: inc/admin/admin.php:1962 inc/admin/admin.php:1993 inc/admin/admin.php:2070
1096
+ #: inc/admin/admin.php:2143 inc/admin/admin.php:2193 inc/admin/admin.php:2242
1097
+ #: inc/admin/admin.php:2272
1098
+ msgid "More tags"
1099
+ msgstr "Plus de balises"
1100
+
1101
+ #: inc/admin/admin.php:1806
1102
+ msgid "This is a cool website about Wookiees"
1103
  msgstr "Un site cool sur les Wookies"
1104
 
1105
+ #: inc/admin/admin.php:1824 inc/admin/admin.php:1933 inc/admin/admin.php:2047
1106
+ #: inc/admin/admin.php:2132 inc/admin/admin.php:2182 inc/admin/admin.php:2231
1107
+ #: inc/admin/admin.php:2263
1108
  msgid "Title template"
1109
  msgstr "Template de Titre"
1110
 
1111
+ #: inc/admin/admin.php:1843
1112
+ msgid "Post Title"
1113
+ msgstr "Titre du post"
1114
+
1115
+ #: inc/admin/admin.php:1854 inc/admin/admin.php:1969 inc/admin/admin.php:2077
1116
+ #: inc/admin/admin.php:2149 inc/admin/admin.php:2199 inc/admin/admin.php:2248
1117
+ #: inc/admin/admin.php:2278
1118
  msgid "Meta description template"
1119
  msgstr "Template de Méta Description"
1120
 
1121
+ #: inc/admin/admin.php:1913
1122
  msgid "Display date in Google search results?"
1123
  msgstr "Afficher la date dans les résultats de recherche Google ?"
1124
 
1125
+ #: inc/admin/admin.php:1953
1126
+ msgid "Category Title"
1127
+ msgstr "Titre de catégorie"
1128
+
1129
+ #: inc/admin/admin.php:1955
1130
+ msgid "Tag Title"
1131
+ msgstr "Titre de l'étiquette"
1132
+
1133
+ #: inc/admin/admin.php:1957
1134
+ msgid "Term Title"
1135
+ msgstr "Titre du terme"
1136
+
1137
+ #: inc/admin/admin.php:1986
1138
+ msgid "Category Description"
1139
+ msgstr "Description de la catégorie"
1140
+
1141
+ #: inc/admin/admin.php:1988
1142
+ msgid "Tag Description"
1143
+ msgstr "Description du tag"
1144
+
1145
+ #: inc/admin/admin.php:1990
1146
+ msgid "Term Description"
1147
+ msgstr "Description du terme"
1148
+
1149
+ #: inc/admin/admin.php:2066
1150
+ msgid "Post Type Archive Name"
1151
+ msgstr "Nom d'archive du Type d'article"
1152
+
1153
+ #: inc/admin/admin.php:2130
1154
  msgid "Author archives"
1155
  msgstr "Archives de l'auteur"
1156
 
1157
+ #: inc/admin/admin.php:2180
1158
  msgid "Date archives"
1159
  msgstr "Archives par date"
1160
 
1161
+ #: inc/admin/admin.php:2191
1162
+ msgid "Archive date"
1163
+ msgstr "Date d'archive"
1164
+
1165
+ #: inc/admin/admin.php:2229
1166
  msgid "Search archives"
1167
  msgstr "Archives de recherche"
1168
 
1169
+ #: inc/admin/admin.php:2240
1170
+ msgid "Search Keywords"
1171
+ msgstr "Mots clés recherchés"
1172
+
1173
+ #: inc/admin/admin.php:2261
1174
  msgid "404 archives"
1175
  msgstr "Page 404"
1176
 
1177
+ #: inc/admin/admin.php:2453 inc/admin/admin.php:2493
 
 
 
 
1178
  msgid "Include"
1179
  msgstr "Inclure"
1180
 
1181
+ #: inc/admin/admin.php:2512
1182
  msgid "Person"
1183
  msgstr "Personne"
1184
 
1185
+ #: inc/admin/admin.php:2515
1186
  msgid "Organization"
1187
  msgstr "Organisation"
1188
 
1189
+ #: inc/admin/admin.php:2526
1190
  msgid "eg: Apple"
1191
  msgstr "ex: Apple"
1192
 
1193
+ #: inc/admin/admin.php:2537
1194
  msgid "Select your logo"
1195
  msgstr "Sélectionnez votre logo"
1196
 
1197
+ #: inc/admin/admin.php:2563
1198
  msgid "eg: https://www.facebook.com/your-page"
1199
  msgstr "ex: https://www.facebook.com/your-page"
1200
 
1201
+ #: inc/admin/admin.php:2573
1202
  msgid "eg: @wpcloudy"
1203
  msgstr "ex: @wpcloudy"
1204
 
1205
+ #: inc/admin/admin.php:2583
1206
  msgid "eg: https://plus.google.com/+BenjaminDenis"
1207
  msgstr "ex: https://plus.google.com/+BenjaminDenis"
1208
 
1209
+ #: inc/admin/admin.php:2593
1210
  msgid "eg: https://pinterest.com/wpbuy/"
1211
  msgstr "ex: https://pinterest.com/wpbuy/"
1212
 
1213
+ #: inc/admin/admin.php:2603
1214
  msgid "eg: https://www.instagram.com/your-name/"
1215
  msgstr "ex: https://www.instagram.com/your-name/"
1216
 
1217
+ #: inc/admin/admin.php:2613
1218
  msgid "eg: https://www.youtube.com/channel/UCpQzarWu55UzCIH7-OW6pwA"
1219
  msgstr "ex: https://www.youtube.com/channel/UCpQzarWu55UzCIH7-OW6pwA"
1220
 
1221
+ #: inc/admin/admin.php:2623
1222
  msgid "eg: https://www.linkedin.com/in/benjamin-denis-70672b3b"
1223
  msgstr "ex: https://www.linkedin.com/in/benjamin-denis-70672b3b"
1224
 
1225
+ #: inc/admin/admin.php:2633
1226
  msgid "eg: https://myspace.com/your-page"
1227
  msgstr "ex: https://myspace.com/your-page"
1228
 
1229
+ #: inc/admin/admin.php:2643
1230
  msgid "eg: https://soundcloud.com/michaelmccannmusic"
1231
  msgstr "ex: https://soundcloud.com/michaelmccannmusic"
1232
 
1233
+ #: inc/admin/admin.php:2653
1234
  msgid "eg: https://your-site.tumblr.com"
1235
  msgstr "ex: https://your-site.tumblr.com"
1236
 
1237
+ #: inc/admin/admin.php:2670
1238
  msgid "Enable OG data"
1239
  msgstr "Activer les données OG"
1240
 
1241
+ #: inc/admin/admin.php:2722
1242
  msgid "Enable Twitter card"
1243
  msgstr "Activer Twitter Card"
1244
 
1245
+ #: inc/admin/admin.php:2753
1246
  msgid "Default"
1247
  msgstr "Défaut"
1248
 
1249
+ #: inc/admin/admin.php:2756
1250
  msgid "Large"
1251
  msgstr "Grande"
1252
 
1253
+ #: inc/admin/admin.php:2784
1254
+ msgid "Enter your Tracking ID (UA-XXXX-XX)"
1255
+ msgstr "Entrer votre ID de tracking (UA-XXXX-XX)"
1256
+
1257
+ #: inc/admin/admin.php:2887
1258
+ msgid "Enter yours domains"
1259
+ msgstr "Saisissez vos domaines"
1260
+
1261
+ #: inc/admin/admin.php:2906 inc/admin/admin.php:2983 inc/admin/admin.php:3060
1262
+ #: inc/admin/admin.php:3137 inc/admin/admin.php:3214
1263
+ msgid "Custom Dimension #1"
1264
+ msgstr "Dimension personnalisée #1"
1265
+
1266
+ #: inc/admin/admin.php:2909 inc/admin/admin.php:2986 inc/admin/admin.php:3063
1267
+ #: inc/admin/admin.php:3140 inc/admin/admin.php:3217
1268
+ msgid "Custom Dimension #2"
1269
+ msgstr "Dimension personnalisée #2"
1270
+
1271
+ #: inc/admin/admin.php:2912 inc/admin/admin.php:2989 inc/admin/admin.php:3066
1272
+ #: inc/admin/admin.php:3143 inc/admin/admin.php:3220
1273
+ msgid "Custom Dimension #3"
1274
+ msgstr "Dimension personnalisée #3"
1275
+
1276
+ #: inc/admin/admin.php:2915 inc/admin/admin.php:2992 inc/admin/admin.php:3069
1277
+ #: inc/admin/admin.php:3146 inc/admin/admin.php:3223
1278
+ msgid "Custom Dimension #4"
1279
+ msgstr "Dimension personnalisée #4"
1280
+
1281
+ #: inc/admin/admin.php:2918 inc/admin/admin.php:2995 inc/admin/admin.php:3072
1282
+ #: inc/admin/admin.php:3149 inc/admin/admin.php:3226
1283
+ msgid "Custom Dimension #5"
1284
+ msgstr "Dimension personnalisée #5"
1285
+
1286
+ #: inc/admin/admin.php:2921 inc/admin/admin.php:2998 inc/admin/admin.php:3075
1287
+ #: inc/admin/admin.php:3152 inc/admin/admin.php:3229
1288
+ msgid "Custom Dimension #6"
1289
+ msgstr "Dimension personnalisée #6"
1290
+
1291
+ #: inc/admin/admin.php:2924 inc/admin/admin.php:3001 inc/admin/admin.php:3078
1292
+ #: inc/admin/admin.php:3155 inc/admin/admin.php:3232
1293
+ msgid "Custom Dimension #7"
1294
+ msgstr "Dimension personnalisée #7"
1295
+
1296
+ #: inc/admin/admin.php:2927 inc/admin/admin.php:3004 inc/admin/admin.php:3081
1297
+ #: inc/admin/admin.php:3158 inc/admin/admin.php:3235
1298
+ msgid "Custom Dimension #8"
1299
+ msgstr "Dimension personnalisée #8"
1300
+
1301
+ #: inc/admin/admin.php:2930 inc/admin/admin.php:3007 inc/admin/admin.php:3084
1302
+ #: inc/admin/admin.php:3161 inc/admin/admin.php:3238
1303
+ msgid "Custom Dimension #9"
1304
+ msgstr "Dimension personnalisée #9"
1305
+
1306
+ #: inc/admin/admin.php:2933 inc/admin/admin.php:3010 inc/admin/admin.php:3087
1307
+ #: inc/admin/admin.php:3164 inc/admin/admin.php:3241
1308
+ msgid "Custom Dimension #10"
1309
+ msgstr "Dimension personnalisée #10"
1310
+
1311
+ #: inc/admin/admin.php:2936 inc/admin/admin.php:3013 inc/admin/admin.php:3090
1312
+ #: inc/admin/admin.php:3167 inc/admin/admin.php:3244
1313
+ msgid "Custom Dimension #11"
1314
+ msgstr "Dimension personnalisée #11"
1315
+
1316
+ #: inc/admin/admin.php:2939 inc/admin/admin.php:3016 inc/admin/admin.php:3093
1317
+ #: inc/admin/admin.php:3170 inc/admin/admin.php:3247
1318
+ msgid "Custom Dimension #12"
1319
+ msgstr "Dimension personnalisée #12"
1320
+
1321
+ #: inc/admin/admin.php:2942 inc/admin/admin.php:3019 inc/admin/admin.php:3096
1322
+ #: inc/admin/admin.php:3173 inc/admin/admin.php:3250
1323
+ msgid "Custom Dimension #13"
1324
+ msgstr "Dimension personnalisée #13"
1325
+
1326
+ #: inc/admin/admin.php:2945 inc/admin/admin.php:3022 inc/admin/admin.php:3099
1327
+ #: inc/admin/admin.php:3176 inc/admin/admin.php:3253
1328
+ msgid "Custom Dimension #14"
1329
+ msgstr "Dimension personnalisée #14"
1330
+
1331
+ #: inc/admin/admin.php:2948 inc/admin/admin.php:3025 inc/admin/admin.php:3102
1332
+ #: inc/admin/admin.php:3179 inc/admin/admin.php:3256
1333
+ msgid "Custom Dimension #15"
1334
+ msgstr "Dimension personnalisée #15"
1335
+
1336
+ #: inc/admin/admin.php:2951 inc/admin/admin.php:3028 inc/admin/admin.php:3105
1337
+ #: inc/admin/admin.php:3182 inc/admin/admin.php:3259
1338
+ msgid "Custom Dimension #16"
1339
+ msgstr "Dimension personnalisée #16"
1340
+
1341
+ #: inc/admin/admin.php:2954 inc/admin/admin.php:3031 inc/admin/admin.php:3108
1342
+ #: inc/admin/admin.php:3185 inc/admin/admin.php:3262
1343
+ msgid "Custom Dimension #17"
1344
+ msgstr "Dimension personnalisée #17"
1345
+
1346
+ #: inc/admin/admin.php:2957 inc/admin/admin.php:3034 inc/admin/admin.php:3111
1347
+ #: inc/admin/admin.php:3188 inc/admin/admin.php:3265
1348
+ msgid "Custom Dimension #18"
1349
+ msgstr "Dimension personnalisée #18"
1350
+
1351
+ #: inc/admin/admin.php:2960 inc/admin/admin.php:3037 inc/admin/admin.php:3114
1352
+ #: inc/admin/admin.php:3191 inc/admin/admin.php:3268
1353
+ msgid "Custom Dimension #19"
1354
+ msgstr "Dimension personnalisée #19"
1355
+
1356
+ #: inc/admin/admin.php:2963 inc/admin/admin.php:3040 inc/admin/admin.php:3117
1357
+ #: inc/admin/admin.php:3194 inc/admin/admin.php:3271
1358
+ msgid "Custom Dimension #20"
1359
+ msgstr "Dimension personnalisée #20"
1360
+
1361
+ #: inc/admin/admin.php:3289
1362
  msgid "Redirect attachment pages to post parent (or homepage if none)"
1363
  msgstr ""
1364
  "Rediriger les pages de pièces jointes vers le post parent (si aucun, "
1365
  "rediriger vers page d'accueil)"
1366
 
1367
+ #: inc/admin/admin.php:3306
1368
  msgid "Remove stop words in permalinks"
1369
  msgstr "Supprimer les mots clés inutiles des permaliens"
1370
 
1371
+ #: inc/admin/admin.php:3306
1372
  msgid ""
1373
  "Setting based on site language. Supported language EN, FR, ES, DE, IT, PT."
1374
  msgstr ""
1375
  "Réglage basé sur la langue du site. Langue prise en charge EN, FR, ES, DE, "
1376
  "IT, PT."
1377
 
1378
+ #: inc/admin/admin.php:3316
1379
  msgid "Enter Google meta value site verification"
1380
  msgstr "Entrer la meta de vérification de site Google"
1381
 
1382
+ #: inc/admin/admin.php:3326
1383
  msgid "Enter Bing meta value site verification"
1384
  msgstr "Entrer la meta de vérification de site Bing"
1385
 
1386
+ #: inc/admin/admin.php:3336
1387
  msgid "Enter Pinterest meta value site verification"
1388
  msgstr "Entrer la meta de vérification de site Pinterest"
1389
 
1390
+ #: inc/admin/admin.php:3346
1391
  msgid "Enter Yandex meta value site verification"
1392
  msgstr "Entrer la meta de vérification de site Yandex"
1393
 
1394
+ #: inc/admin/admin.php:3363
1395
+ msgid "Remove SEOPress from Admin Bar in backend"
1396
+ msgstr "Supprimer SEOPress de la barre d'outils dans l'administration"
1397
+
1398
+ #: inc/admin/admin.php:3380
1399
+ msgid "Add title column"
1400
+ msgstr "Ajouter la colonne Titre"
1401
+
1402
+ #: inc/admin/admin.php:3397
1403
+ msgid "Add meta description column"
1404
+ msgstr "Ajouter la colonne meta description"
1405
+
1406
+ #: inc/functions/options-advanced-admin.php:57
1407
+ msgid "Title tag"
1408
+ msgstr "Balise Titre"
1409
+
1410
+ #: inc/functions/options-advanced-admin.php:60
1411
+ msgid "Meta Desc."
1412
+ msgstr "Meta Desc."
1413
+
1414
+ #: inc/functions/options-import-export.php:48
1415
  msgid "Please upload a valid .json file"
1416
  msgstr "Veuillez uploader un fichier JSON valide"
1417
 
1418
+ #: inc/functions/options-import-export.php:52
1419
  msgid "Please upload a file to import"
1420
  msgstr "Uploader un fichier à importer SVP"
1421
 
1422
+ #: seopress.php:228
1423
  msgid "Settings"
1424
  msgstr "Paramètres"
1425
 
1426
+ #: seopress.php:229
1427
  msgid "SEOPress.org"
1428
  msgstr "SEOPress.org"
1429
 
1430
+ #: seopress.php:231
1431
  msgid "GO PRO!"
1432
  msgstr "PASSEZ PRO !"
1433
 
1434
+ #~ msgid "Import Yoast Settings"
1435
+ #~ msgstr "Importer les paramètres de Yoast"
1436
+
1437
+ #~ msgid "Import Yoast settings from an INI file."
1438
+ #~ msgstr "Importer les paramètres de Yoast depuis un fichier INI."
1439
+
1440
+ #~ msgid "Learn how to export Yoast settings"
1441
+ #~ msgstr "Apprenez à exporter vos paramètres Yoast"
1442
+
1443
+ #~ msgid "Import Yoast settings"
1444
+ #~ msgstr "Importer les paramètres Yoast"
1445
+
1446
+ #~ msgid "Please upload a valid .ini file"
1447
+ #~ msgstr "Veuillez uploader un fichier INI valide"
1448
+
1449
+ #~ msgid "Your name/organization"
1450
+ #~ msgstr "Votre nom/organisation"
1451
+
1452
+ #~ msgid "Import / Export Settings"
1453
+ #~ msgstr "Paramètres Import / Export"
1454
+
1455
+ #~ msgid "Import / Export SEOPress settings from site to site"
1456
+ #~ msgstr "Importer / Exporter les paramètres SEOPress d'un site à un autre"
1457
+
1458
+ #~ msgid ""
1459
+ #~ "<strong>WARNING:</strong> Delete all options related to SEOPress in your "
1460
+ #~ "database."
1461
+ #~ msgstr ""
1462
+ #~ "<strong>AVERTISSEMENT:</strong> Supprime toutes les options liées à "
1463
+ #~ "SEOPress de votre base de données."
1464
+
1465
+ #~ msgid "Paged archives"
1466
+ #~ msgstr "Archives paginées"
1467
+
1468
+ #~ msgid ""
1469
+ #~ "Redirect attachment pages to post parent (if none, redirect to homepage)"
1470
+ #~ msgstr ""
1471
+ #~ "Rediriger les pages de pièces jointes vers le post parent (si aucun, "
1472
+ #~ "rediriger vers page d'accueil)"
1473
+
1474
+ #~ msgid "This is cool website about Wookiees"
1475
+ #~ msgstr "Un site cool sur les Wookies"
1476
+
1477
  #~ msgid "The ultimate plugin to optimize your SEO!"
1478
  #~ msgstr "Le plugin ultime pour optimiser votre SEO !"
1479
 
2255
  #~ msgid "Right"
2256
  #~ msgstr "Droite"
2257
 
 
 
 
2258
  #~ msgid "File"
2259
  #~ msgstr "Fichier"
2260
 
2498
  #~ msgid "Toggle All"
2499
  #~ msgstr "Tout sélectionner"
2500
 
 
 
 
2501
  #~ msgid ""
2502
  #~ "Before starting: define which roles to apply settings using Role Manager "
2503
  #~ "page."
languages/wp-seopress.mo CHANGED
Binary file
languages/wp-seopress.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: SEOPress\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-cloudy\n"
5
- "POT-Creation-Date: 2016-10-03 19:20+0200\n"
6
- "PO-Revision-Date: 2016-10-03 19:20+0200\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Benjamin DENIS <contact@seopress.org>\n"
9
  "Language: en\n"
@@ -15,847 +15,1374 @@ msgstr ""
15
  "X-Poedit-Basepath: ..\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
 
18
- #: inc/admin/admin-metaboxes.php:11 inc/admin/admin.php:300
19
  msgid "SEOPress"
20
  msgstr ""
21
 
22
- #: inc/admin/admin-metaboxes.php:80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  msgid "Titles settings"
24
  msgstr ""
25
 
26
- #: inc/admin/admin-metaboxes.php:81 inc/admin/admin.php:37
27
- #: inc/admin/admin.php:98 inc/admin/admin.php:212 inc/admin/admin.php:419
 
28
  msgid "Advanced"
29
  msgstr ""
30
 
31
- #: inc/admin/admin-metaboxes.php:82 inc/admin/admin.php:36
32
- #: inc/admin/admin.php:409
33
  msgid "Social"
34
  msgstr ""
35
 
36
- #: inc/admin/admin-metaboxes.php:83
37
  msgid "Redirections"
38
  msgstr ""
39
 
40
- #: inc/admin/admin-metaboxes.php:89
 
 
 
 
41
  msgid "Title"
42
  msgstr ""
43
 
44
- #: inc/admin/admin-metaboxes.php:90
45
  msgid "Enter your title"
46
  msgstr ""
47
 
48
- #: inc/admin/admin-metaboxes.php:94 inc/admin/admin-metaboxes.php:102
49
  msgid "(maximum recommended limit)"
50
  msgstr ""
51
 
52
- #: inc/admin/admin-metaboxes.php:97 inc/admin/admin.php:499
 
53
  msgid "Meta description"
54
  msgstr ""
55
 
56
- #: inc/admin/admin-metaboxes.php:98
57
  msgid "Enter your meta description"
58
  msgstr ""
59
 
60
- #: inc/admin/admin-metaboxes.php:107
61
  msgid "Google Snippet Preview"
62
  msgstr ""
63
 
64
- #: inc/admin/admin-metaboxes.php:108
65
  msgid "This is what your page will look like in Google search results"
66
  msgstr ""
67
 
68
- #: inc/admin/admin-metaboxes.php:124 inc/admin/admin.php:667
69
- #: inc/admin/admin.php:1195 inc/admin/admin.php:1287 inc/admin/admin.php:1356
70
- #: inc/admin/admin.php:1401 inc/admin/admin.php:1503
71
  msgid "noindex"
72
  msgstr ""
73
 
74
- #: inc/admin/admin-metaboxes.php:130 inc/admin/admin.php:675
75
- #: inc/admin/admin.php:1214 inc/admin/admin.php:1306 inc/admin/admin.php:1520
 
 
 
 
 
 
 
76
  msgid "nofollow"
77
  msgstr ""
78
 
79
- #: inc/admin/admin-metaboxes.php:136 inc/admin/admin.php:683
80
- #: inc/admin/admin.php:1537
 
 
 
 
81
  msgid "noodp"
82
  msgstr ""
83
 
84
- #: inc/admin/admin-metaboxes.php:142 inc/admin/admin.php:691
85
- #: inc/admin/admin.php:1554
 
 
 
 
 
 
86
  msgid "noimageindex"
87
  msgstr ""
88
 
89
- #: inc/admin/admin-metaboxes.php:148 inc/admin/admin.php:699
90
- #: inc/admin/admin.php:1571
 
 
 
 
91
  msgid "noarchive"
92
  msgstr ""
93
 
94
- #: inc/admin/admin-metaboxes.php:154 inc/admin/admin.php:707
95
- #: inc/admin/admin.php:1588
 
 
 
 
96
  msgid "nosnippet"
97
  msgstr ""
98
 
99
- #: inc/admin/admin-metaboxes.php:158
 
 
 
 
 
100
  msgid "Canonical URL"
101
  msgstr ""
102
 
103
- #: inc/admin/admin-metaboxes.php:159
104
  msgid "Default value: "
105
  msgstr ""
106
 
107
- #: inc/admin/admin-metaboxes.php:165
108
  msgid "Facebook Title"
109
  msgstr ""
110
 
111
- #: inc/admin/admin-metaboxes.php:166
112
  msgid "Enter your Facebook title"
113
  msgstr ""
114
 
115
- #: inc/admin/admin-metaboxes.php:169
116
  msgid "Facebook description"
117
  msgstr ""
118
 
119
- #: inc/admin/admin-metaboxes.php:170
120
  msgid "Enter your Facebook description"
121
  msgstr ""
122
 
123
- #: inc/admin/admin-metaboxes.php:173
124
  msgid "Facebook Thumbnail"
125
  msgstr ""
126
 
127
- #: inc/admin/admin-metaboxes.php:174 inc/admin/admin-metaboxes.php:189
128
- #: inc/admin/admin.php:1860 inc/admin/admin.php:1912
 
 
 
 
129
  msgid "Select your default thumbnail"
130
  msgstr ""
131
 
132
- #: inc/admin/admin-metaboxes.php:175 inc/admin/admin-metaboxes.php:190
133
- #: inc/admin/admin.php:1730 inc/admin/admin.php:1862 inc/admin/admin.php:1914
134
  msgid "Upload an Image"
135
  msgstr ""
136
 
137
- #: inc/admin/admin-metaboxes.php:180
138
  msgid "Twitter Title"
139
  msgstr ""
140
 
141
- #: inc/admin/admin-metaboxes.php:181
142
  msgid "Enter your Twitter title"
143
  msgstr ""
144
 
145
- #: inc/admin/admin-metaboxes.php:184
146
  msgid "Twitter description"
147
  msgstr ""
148
 
149
- #: inc/admin/admin-metaboxes.php:185
150
  msgid "Enter your Twitter description"
151
  msgstr ""
152
 
153
- #: inc/admin/admin-metaboxes.php:188
154
  msgid "Twitter Thumbnail"
155
  msgstr ""
156
 
157
- #: inc/admin/admin-metaboxes.php:197
 
 
 
 
158
  msgid "Enable redirection?"
159
  msgstr ""
160
 
161
- #: inc/admin/admin-metaboxes.php:201
162
  msgid "URL redirection"
163
  msgstr ""
164
 
165
- #: inc/admin/admin-metaboxes.php:203
166
  msgid "301"
167
  msgstr ""
168
 
169
- #: inc/admin/admin-metaboxes.php:204
170
  msgid "302"
171
  msgstr ""
172
 
173
- #: inc/admin/admin-metaboxes.php:205
174
  msgid "307"
175
  msgstr ""
176
 
177
- #: inc/admin/admin-metaboxes.php:207
178
  msgid "Enter your URL"
179
  msgstr ""
180
 
181
- #: inc/admin/admin-metaboxes.php:210 inc/admin/admin-metaboxes.php:212
182
  msgid "Test your URL"
183
  msgstr ""
184
 
185
- #: inc/admin/admin.php:34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  msgid "Titles & Metas"
187
  msgstr ""
188
 
189
- #: inc/admin/admin.php:35 inc/admin/admin.php:399
190
  msgid "XML Sitemap"
191
  msgstr ""
192
 
193
- #: inc/admin/admin.php:38
 
 
 
 
194
  msgid "Import / Export / Reset settings"
195
  msgstr ""
196
 
197
- #: inc/admin/admin.php:38 inc/admin/admin.php:429
198
  msgid "Import / Export / Reset"
199
  msgstr ""
200
 
201
- #: inc/admin/admin.php:45
202
  #, php-format
203
  msgid "%%sitetitle%%"
204
  msgstr ""
205
 
206
- #: inc/admin/admin.php:45
 
 
207
  msgid "Site Title"
208
  msgstr ""
209
 
210
- #: inc/admin/admin.php:46
211
  #, php-format
212
  msgid "%%tagline%%"
213
  msgstr ""
214
 
215
- #: inc/admin/admin.php:46
216
  msgid "Tagline"
217
  msgstr ""
218
 
219
- #: inc/admin/admin.php:47
220
  #, php-format
221
  msgid "%%post_title%%"
222
  msgstr ""
223
 
224
- #: inc/admin/admin.php:47
225
  msgid "Post Title (post, page, custom post type)"
226
  msgstr ""
227
 
228
- #: inc/admin/admin.php:48
229
  #, php-format
230
  msgid "%%post_excerpt%%"
231
  msgstr ""
232
 
233
- #: inc/admin/admin.php:48
234
  msgid "Post excerpt"
235
  msgstr ""
236
 
237
- #: inc/admin/admin.php:49
238
  #, php-format
239
  msgid "%%post_date%%"
240
  msgstr ""
241
 
242
- #: inc/admin/admin.php:49
243
  msgid "Post date"
244
  msgstr ""
245
 
246
- #: inc/admin/admin.php:50
247
  #, php-format
248
  msgid "%%post_author%%"
249
  msgstr ""
250
 
251
- #: inc/admin/admin.php:50
252
  msgid "Post author"
253
  msgstr ""
254
 
255
- #: inc/admin/admin.php:51
256
  #, php-format
257
  msgid "%%_category_title%%"
258
  msgstr ""
259
 
260
- #: inc/admin/admin.php:51
261
  msgid "Category title"
262
  msgstr ""
263
 
264
- #: inc/admin/admin.php:52
265
  #, php-format
266
  msgid "%%_category_description%%"
267
  msgstr ""
268
 
269
- #: inc/admin/admin.php:52
270
  msgid "Category description"
271
  msgstr ""
272
 
273
- #: inc/admin/admin.php:53
274
  #, php-format
275
  msgid "%%tag_title%%"
276
  msgstr ""
277
 
278
- #: inc/admin/admin.php:53
279
  msgid "Tag title"
280
  msgstr ""
281
 
282
- #: inc/admin/admin.php:54
283
  #, php-format
284
  msgid "%%tag_description%%"
285
  msgstr ""
286
 
287
- #: inc/admin/admin.php:54
288
  msgid "Tag description"
289
  msgstr ""
290
 
291
- #: inc/admin/admin.php:55
292
  #, php-format
293
  msgid "%%term_title%%"
294
  msgstr ""
295
 
296
- #: inc/admin/admin.php:55
297
  msgid "Term title"
298
  msgstr ""
299
 
300
- #: inc/admin/admin.php:56
301
  #, php-format
302
  msgid "%%term_description%%"
303
  msgstr ""
304
 
305
- #: inc/admin/admin.php:56
306
  msgid "Term description"
307
  msgstr ""
308
 
309
- #: inc/admin/admin.php:57
310
  #, php-format
311
  msgid "%%search_keywords%%"
312
  msgstr ""
313
 
314
- #: inc/admin/admin.php:57
315
  msgid "Search keywords"
316
  msgstr ""
317
 
318
- #: inc/admin/admin.php:58
319
  #, php-format
320
  msgid "%%current_pagination%%"
321
  msgstr ""
322
 
323
- #: inc/admin/admin.php:58
324
  msgid "Current number page"
325
  msgstr ""
326
 
327
- #: inc/admin/admin.php:64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  msgid "Templates variables"
329
  msgstr ""
330
 
331
- #: inc/admin/admin.php:79
332
  msgid ""
333
  "Discourage search engines from indexing this site is <strong>ON!</strong> "
334
  "None of the following settings will be applied."
335
  msgstr ""
336
 
337
- #: inc/admin/admin.php:80
338
  msgid "Change this settings"
339
  msgstr ""
340
 
341
- #: inc/admin/admin.php:94
342
  msgid "Home"
343
  msgstr ""
344
 
345
- #: inc/admin/admin.php:95
346
  msgid "Single Post Types"
347
  msgstr ""
348
 
349
- #: inc/admin/admin.php:96 inc/admin/admin.php:137
350
- msgid "Taxonomies"
351
  msgstr ""
352
 
353
- #: inc/admin/admin.php:97
354
- msgid "Archives"
355
  msgstr ""
356
 
357
- #: inc/admin/admin.php:135
358
  msgid "General"
359
  msgstr ""
360
 
361
- #: inc/admin/admin.php:136
362
  msgid "Post Types"
363
  msgstr ""
364
 
365
- #: inc/admin/admin.php:172
366
  msgid "Knowledge Graph"
367
  msgstr ""
368
 
369
- #: inc/admin/admin.php:173
370
  msgid "Your social accounts"
371
  msgstr ""
372
 
373
- #: inc/admin/admin.php:174
374
  msgid "Facebook"
375
  msgstr ""
376
 
377
- #: inc/admin/admin.php:175
378
  msgid "Twitter"
379
  msgstr ""
380
 
381
- #: inc/admin/admin.php:236
382
- msgid "Import / Export Settings"
383
  msgstr ""
384
 
385
- #: inc/admin/admin.php:237
386
- msgid "Import / Export SEOPress settings from site to site"
 
 
 
 
387
  msgstr ""
388
 
389
- #: inc/admin/admin.php:240
390
  msgid "Export Settings"
391
  msgstr ""
392
 
393
- #: inc/admin/admin.php:242
394
  msgid ""
395
  "Export the plugin settings for this site as a .json file. This allows you to "
396
  "easily import the configuration into another site."
397
  msgstr ""
398
 
399
- #: inc/admin/admin.php:247
400
  msgid "Export"
401
  msgstr ""
402
 
403
- #: inc/admin/admin.php:254
404
  msgid "Import Settings"
405
  msgstr ""
406
 
407
- #: inc/admin/admin.php:256
408
  msgid ""
409
  "Import the plugin settings from a .json file. This file can be obtained by "
410
  "exporting the settings on another site using the form above."
411
  msgstr ""
412
 
413
- #: inc/admin/admin.php:264
414
  msgid "Import"
415
  msgstr ""
416
 
417
- #: inc/admin/admin.php:271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
418
  msgid "Reset All Settings"
419
  msgstr ""
420
 
421
- #: inc/admin/admin.php:273
422
  msgid ""
423
  "<strong>WARNING:</strong> Delete all options related to SEOPress in your "
424
- "database."
425
  msgstr ""
426
 
427
- #: inc/admin/admin.php:278
428
  msgid "Reset settings"
429
  msgstr ""
430
 
431
- #: inc/admin/admin.php:304
432
- msgid "PRO"
433
  msgstr ""
434
 
435
- #: inc/admin/admin.php:315
436
- msgid "You like SEOPress? Don't forget to rate it 5 stars!"
 
 
437
  msgstr ""
438
 
439
- #: inc/admin/admin.php:347
440
- msgid "Support"
441
  msgstr ""
442
 
443
- #: inc/admin/admin.php:356
444
- msgid "Notifications center"
 
 
 
 
 
 
 
 
445
  msgstr ""
446
 
447
- #: inc/admin/admin.php:359
448
  msgid "Your site is not visible to Search Engines!"
449
  msgstr ""
450
 
451
- #: inc/admin/admin.php:360 inc/admin/admin.php:366 inc/admin/admin.php:372
452
- #: inc/admin/admin.php:378
 
 
 
 
453
  msgid "Fix this!"
454
  msgstr ""
455
 
456
- #: inc/admin/admin.php:365
457
  msgid "Your site title is empty!"
458
  msgstr ""
459
 
460
- #: inc/admin/admin.php:371
461
  msgid ""
462
  "Your permalinks are not SEO Friendly! Enable pretty permalinks to fix this."
463
  msgstr ""
464
 
465
- #: inc/admin/admin.php:377
466
  msgid "You don't have an XML Sitemap!"
467
  msgstr ""
468
 
469
- #: inc/admin/admin.php:389
 
 
 
 
470
  msgid "Titles & metas"
471
  msgstr ""
472
 
473
- #: inc/admin/admin.php:390
474
  msgid "Manage all your titles & metas"
475
  msgstr ""
476
 
477
- #: inc/admin/admin.php:391 inc/admin/admin.php:401 inc/admin/admin.php:411
478
- #: inc/admin/admin.php:421 inc/admin/admin.php:431
 
 
 
479
  msgid "Manage"
480
  msgstr ""
481
 
482
- #: inc/admin/admin.php:400
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
483
  msgid "Manage your XML Sitemap"
484
  msgstr ""
485
 
486
- #: inc/admin/admin.php:410
487
  msgid "Open Graph, Twitter Card, Google Knowledge Graph and more..."
488
  msgstr ""
489
 
490
- #: inc/admin/admin.php:420
 
 
 
 
491
  msgid "Advanced SEO options for advanced users!"
492
  msgstr ""
493
 
494
- #: inc/admin/admin.php:430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
495
  msgid "Import / export SEOPress settings from site to site."
496
  msgstr ""
497
 
498
- #: inc/admin/admin.php:491
 
 
 
 
 
 
 
 
499
  msgid "Site title"
500
  msgstr ""
501
 
502
- #: inc/admin/admin.php:724 inc/admin/admin.php:1605
503
  msgid "Enable XML Sitemap"
504
  msgstr ""
505
 
506
- #: inc/admin/admin.php:740
507
  msgid "Check to INCLUDE Post Types"
508
  msgstr ""
509
 
510
- #: inc/admin/admin.php:756
511
  msgid "Check to INCLUDE Taxonomies"
512
  msgstr ""
513
 
514
- #: inc/admin/admin.php:773
515
  msgid "Person or organization"
516
  msgstr ""
517
 
518
- #: inc/admin/admin.php:781
519
- msgid "Your name/organization"
520
  msgstr ""
521
 
522
- #: inc/admin/admin.php:789
523
  msgid "Your photo / organization logo"
524
  msgstr ""
525
 
526
- #: inc/admin/admin.php:806
527
  msgid "Facebook Page URL"
528
  msgstr ""
529
 
530
- #: inc/admin/admin.php:814
531
  msgid "Twitter Username"
532
  msgstr ""
533
 
534
- #: inc/admin/admin.php:822
535
  msgid "Google + URL"
536
  msgstr ""
537
 
538
- #: inc/admin/admin.php:830
539
  msgid "Pinterest URL"
540
  msgstr ""
541
 
542
- #: inc/admin/admin.php:838
543
  msgid "Instagram URL"
544
  msgstr ""
545
 
546
- #: inc/admin/admin.php:846
547
  msgid "YouTube URL"
548
  msgstr ""
549
 
550
- #: inc/admin/admin.php:854
551
  msgid "LinkedIn URL"
552
  msgstr ""
553
 
554
- #: inc/admin/admin.php:862
555
  msgid "MySpace URL"
556
  msgstr ""
557
 
558
- #: inc/admin/admin.php:870
559
  msgid "Soundcloud URL"
560
  msgstr ""
561
 
562
- #: inc/admin/admin.php:878
563
  msgid "Tumblr URL"
564
  msgstr ""
565
 
566
- #: inc/admin/admin.php:895
567
  msgid "Enable Open Graph Data"
568
  msgstr ""
569
 
570
- #: inc/admin/admin.php:903
571
  msgid "Select a default image"
572
  msgstr ""
573
 
574
- #: inc/admin/admin.php:911
575
  msgid "Facebook Admin ID"
576
  msgstr ""
577
 
578
- #: inc/admin/admin.php:919
579
  msgid "Facebook App ID"
580
  msgstr ""
581
 
582
- #: inc/admin/admin.php:936
583
  msgid "Enable Twitter Card"
584
  msgstr ""
585
 
586
- #: inc/admin/admin.php:944
587
  msgid "Default Twitter Image"
588
  msgstr ""
589
 
590
- #: inc/admin/admin.php:952
591
  msgid "Image size for Twitter Summary card"
592
  msgstr ""
593
 
594
- #: inc/admin/admin.php:968
595
- msgid ""
596
- "Redirect attachment pages to post parent (if none, redirect to homepage)"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
597
  msgstr ""
598
 
599
- #: inc/admin/admin.php:976
 
 
 
 
600
  msgid "Remove stop words from URL"
601
  msgstr ""
602
 
603
- #: inc/admin/admin.php:984
604
  msgid "Google site verification"
605
  msgstr ""
606
 
607
- #: inc/admin/admin.php:992
608
  msgid "Bing site verification"
609
  msgstr ""
610
 
611
- #: inc/admin/admin.php:1000
612
  msgid "Pinterest site verification"
613
  msgstr ""
614
 
615
- #: inc/admin/admin.php:1008
616
  msgid "Yandex site verification"
617
  msgstr ""
618
 
619
- #: inc/admin/admin.php:1052
 
 
 
 
 
 
 
 
 
 
 
 
620
  msgid "<p>Customize your titles & metas for homepage</p>"
621
  msgstr ""
622
 
623
- #: inc/admin/admin.php:1057
624
  msgid "<p>Customize your titles & metas for Single Custom Post Types</p>"
625
  msgstr ""
626
 
627
- #: inc/admin/admin.php:1062
628
  msgid "<p>Customize your metas for all pages</p>"
629
  msgstr ""
630
 
631
- #: inc/admin/admin.php:1067
632
  msgid "<p>Customize your metas for all taxonomies archives</p>"
633
  msgstr ""
634
 
635
- #: inc/admin/admin.php:1072
636
  msgid "<p>Customize your metas for all archives</p>"
637
  msgstr ""
638
 
639
- #: inc/admin/admin.php:1077
640
  msgid "<p>Enable your Sitemap</p>"
641
  msgstr ""
642
 
643
- #: inc/admin/admin.php:1078
644
  msgid ""
645
  "To view your sitemap, enable permalinks (not default one), and save settings "
646
  "to flush them."
647
  msgstr ""
648
 
649
- #: inc/admin/admin.php:1080
650
  msgid ""
651
  "Only the last 1000 items are listed in Sitemaps for performances issues."
652
  msgstr ""
653
 
654
- #: inc/admin/admin.php:1083
655
  msgid "View your sitemap"
656
  msgstr ""
657
 
658
- #: inc/admin/admin.php:1085
659
  msgid "Ping Google manually"
660
  msgstr ""
661
 
662
- #: inc/admin/admin.php:1087
663
  msgid "Flush permalinks"
664
  msgstr ""
665
 
666
- #: inc/admin/admin.php:1093
667
  msgid "<p>Include / Exclude Post Types</p>"
668
  msgstr ""
669
 
670
- #: inc/admin/admin.php:1098
671
  msgid "<p>Include / Exclude Taxonomies</p>"
672
  msgstr ""
673
 
674
- #: inc/admin/admin.php:1103
675
  msgid "<p>Configure Google Knowledge Graph</p>"
676
  msgstr ""
677
 
678
- #: inc/admin/admin.php:1108
679
  msgid "<p>Link your site with your social accounts</p>"
680
  msgstr ""
681
 
682
- #: inc/admin/admin.php:1113
683
  msgid "<p>Manage Open Graph datas</p>"
684
  msgstr ""
685
 
686
- #: inc/admin/admin.php:1118
687
  msgid "<p>Manage your Twitter card</p>"
688
  msgstr ""
689
 
690
- #: inc/admin/admin.php:1123
 
 
 
 
 
 
 
 
 
 
 
 
691
  msgid "<p>Advanced SEO options</p>"
692
  msgstr ""
693
 
694
- #: inc/admin/admin.php:1134
 
 
 
 
695
  msgid "My awesome website"
696
  msgstr ""
697
 
698
- #: inc/admin/admin.php:1144
699
- msgid "This is cool website about Wookiees"
 
 
 
700
  msgstr ""
701
 
702
- #: inc/admin/admin.php:1161 inc/admin/admin.php:1253 inc/admin/admin.php:1321
703
- #: inc/admin/admin.php:1367 inc/admin/admin.php:1412 inc/admin/admin.php:1440
704
- #: inc/admin/admin.php:1468
 
 
 
 
705
  msgid "Title template"
706
  msgstr ""
707
 
708
- #: inc/admin/admin.php:1174 inc/admin/admin.php:1266 inc/admin/admin.php:1334
709
- #: inc/admin/admin.php:1380 inc/admin/admin.php:1425 inc/admin/admin.php:1453
710
- #: inc/admin/admin.php:1481
 
 
 
 
711
  msgid "Meta description template"
712
  msgstr ""
713
 
714
- #: inc/admin/admin.php:1233
715
  msgid "Display date in Google search results?"
716
  msgstr ""
717
 
718
- #: inc/admin/admin.php:1319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
719
  msgid "Author archives"
720
  msgstr ""
721
 
722
- #: inc/admin/admin.php:1365
723
  msgid "Date archives"
724
  msgstr ""
725
 
726
- #: inc/admin/admin.php:1410
 
 
 
 
727
  msgid "Search archives"
728
  msgstr ""
729
 
730
- #: inc/admin/admin.php:1438
731
- msgid "404 archives"
732
  msgstr ""
733
 
734
- #: inc/admin/admin.php:1466
735
- msgid "Paged archives"
736
  msgstr ""
737
 
738
- #: inc/admin/admin.php:1644 inc/admin/admin.php:1684
739
  msgid "Include"
740
  msgstr ""
741
 
742
- #: inc/admin/admin.php:1703
743
  msgid "Person"
744
  msgstr ""
745
 
746
- #: inc/admin/admin.php:1706
747
  msgid "Organization"
748
  msgstr ""
749
 
750
- #: inc/admin/admin.php:1717
751
  msgid "eg: Apple"
752
  msgstr ""
753
 
754
- #: inc/admin/admin.php:1728
755
  msgid "Select your logo"
756
  msgstr ""
757
 
758
- #: inc/admin/admin.php:1740
759
  msgid "eg: https://www.facebook.com/your-page"
760
  msgstr ""
761
 
762
- #: inc/admin/admin.php:1750
763
  msgid "eg: @wpcloudy"
764
  msgstr ""
765
 
766
- #: inc/admin/admin.php:1760
767
  msgid "eg: https://plus.google.com/+BenjaminDenis"
768
  msgstr ""
769
 
770
- #: inc/admin/admin.php:1770
771
  msgid "eg: https://pinterest.com/wpbuy/"
772
  msgstr ""
773
 
774
- #: inc/admin/admin.php:1780
775
  msgid "eg: https://www.instagram.com/your-name/"
776
  msgstr ""
777
 
778
- #: inc/admin/admin.php:1790
779
  msgid "eg: https://www.youtube.com/channel/UCpQzarWu55UzCIH7-OW6pwA"
780
  msgstr ""
781
 
782
- #: inc/admin/admin.php:1800
783
  msgid "eg: https://www.linkedin.com/in/benjamin-denis-70672b3b"
784
  msgstr ""
785
 
786
- #: inc/admin/admin.php:1810
787
  msgid "eg: https://myspace.com/your-page"
788
  msgstr ""
789
 
790
- #: inc/admin/admin.php:1820
791
  msgid "eg: https://soundcloud.com/michaelmccannmusic"
792
  msgstr ""
793
 
794
- #: inc/admin/admin.php:1830
795
  msgid "eg: https://your-site.tumblr.com"
796
  msgstr ""
797
 
798
- #: inc/admin/admin.php:1847
799
  msgid "Enable OG data"
800
  msgstr ""
801
 
802
- #: inc/admin/admin.php:1899
803
  msgid "Enable Twitter card"
804
  msgstr ""
805
 
806
- #: inc/admin/admin.php:1930
807
  msgid "Default"
808
  msgstr ""
809
 
810
- #: inc/admin/admin.php:1933
811
  msgid "Large"
812
  msgstr ""
813
 
814
- #: inc/admin/admin.php:1951
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
815
  msgid "Redirect attachment pages to post parent (or homepage if none)"
816
  msgstr ""
817
 
818
- #: inc/admin/admin.php:1968
819
  msgid "Remove stop words in permalinks"
820
  msgstr ""
821
 
822
- #: inc/admin/admin.php:1968
823
  msgid ""
824
  "Setting based on site language. Supported language EN, FR, ES, DE, IT, PT."
825
  msgstr ""
826
 
827
- #: inc/admin/admin.php:1978
828
  msgid "Enter Google meta value site verification"
829
  msgstr ""
830
 
831
- #: inc/admin/admin.php:1988
832
  msgid "Enter Bing meta value site verification"
833
  msgstr ""
834
 
835
- #: inc/admin/admin.php:1998
836
  msgid "Enter Pinterest meta value site verification"
837
  msgstr ""
838
 
839
- #: inc/admin/admin.php:2008
840
  msgid "Enter Yandex meta value site verification"
841
  msgstr ""
842
 
843
- #: inc/functions/options-import-export.php:43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
844
  msgid "Please upload a valid .json file"
845
  msgstr ""
846
 
847
- #: inc/functions/options-import-export.php:47
848
  msgid "Please upload a file to import"
849
  msgstr ""
850
 
851
- #: seopress.php:154
852
  msgid "Settings"
853
  msgstr ""
854
 
855
- #: seopress.php:155
856
  msgid "SEOPress.org"
857
  msgstr ""
858
 
859
- #: seopress.php:156
860
  msgid "GO PRO!"
861
  msgstr ""
2
  msgstr ""
3
  "Project-Id-Version: SEOPress\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-cloudy\n"
5
+ "POT-Creation-Date: 2016-12-07 18:39+0100\n"
6
+ "PO-Revision-Date: 2016-12-07 18:39+0100\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Benjamin DENIS <contact@seopress.org>\n"
9
  "Language: en\n"
15
  "X-Poedit-Basepath: ..\n"
16
  "X-Poedit-SearchPath-0: .\n"
17
 
18
+ #: inc/admin/admin-header.php:10
19
  msgid "SEOPress"
20
  msgstr ""
21
 
22
+ #: inc/admin/admin-header.php:14 inc/admin/adminbar.php:59
23
+ msgid "PRO"
24
+ msgstr ""
25
+
26
+ #: inc/admin/admin-header.php:25
27
+ msgid "You like SEOPress? Don't forget to rate it 5 stars!"
28
+ msgstr ""
29
+
30
+ #: inc/admin/admin-header.php:57
31
+ msgid "Support"
32
+ msgstr ""
33
+
34
+ #: inc/admin/admin-metaboxes.php:11 inc/admin/admin-metaboxes.php:13
35
+ #: inc/admin/adminbar.php:16
36
+ msgid "SEO"
37
+ msgstr ""
38
+
39
+ #: inc/admin/admin-metaboxes.php:86
40
  msgid "Titles settings"
41
  msgstr ""
42
 
43
+ #: inc/admin/admin-metaboxes.php:87 inc/admin/admin.php:174
44
+ #: inc/admin/admin.php:240 inc/admin/admin.php:402 inc/admin/admin.php:698
45
+ #: inc/admin/adminbar.php:46
46
  msgid "Advanced"
47
  msgstr ""
48
 
49
+ #: inc/admin/admin-metaboxes.php:88 inc/admin/admin.php:172
50
+ #: inc/admin/admin.php:640 inc/admin/adminbar.php:34
51
  msgid "Social"
52
  msgstr ""
53
 
54
+ #: inc/admin/admin-metaboxes.php:90 inc/admin/admin.php:852
55
  msgid "Redirections"
56
  msgstr ""
57
 
58
+ #: inc/admin/admin-metaboxes.php:93
59
+ msgid "Google News"
60
+ msgstr ""
61
+
62
+ #: inc/admin/admin-metaboxes.php:102
63
  msgid "Title"
64
  msgstr ""
65
 
66
+ #: inc/admin/admin-metaboxes.php:103
67
  msgid "Enter your title"
68
  msgstr ""
69
 
70
+ #: inc/admin/admin-metaboxes.php:107 inc/admin/admin-metaboxes.php:115
71
  msgid "(maximum recommended limit)"
72
  msgstr ""
73
 
74
+ #: inc/admin/admin-metaboxes.php:110 inc/admin/admin.php:470
75
+ #: inc/admin/admin.php:983
76
  msgid "Meta description"
77
  msgstr ""
78
 
79
+ #: inc/admin/admin-metaboxes.php:111
80
  msgid "Enter your meta description"
81
  msgstr ""
82
 
83
+ #: inc/admin/admin-metaboxes.php:120
84
  msgid "Google Snippet Preview"
85
  msgstr ""
86
 
87
+ #: inc/admin/admin-metaboxes.php:121
88
  msgid "This is what your page will look like in Google search results"
89
  msgstr ""
90
 
91
+ #: inc/admin/admin-metaboxes.php:137 inc/admin/admin.php:1141
92
+ #: inc/admin/admin.php:1875 inc/admin/admin.php:2008 inc/admin/admin.php:2098
93
+ #: inc/admin/admin.php:2171 inc/admin/admin.php:2220 inc/admin/admin.php:2300
94
  msgid "noindex"
95
  msgstr ""
96
 
97
+ #: inc/admin/admin-metaboxes.php:138 inc/admin/admin.php:2302
98
+ msgid ""
99
+ "Do not display all pages of the site in Google search results and do not "
100
+ "display \"Cached\" links in search results."
101
+ msgstr ""
102
+
103
+ #: inc/admin/admin-metaboxes.php:143 inc/admin/admin.php:1149
104
+ #: inc/admin/admin.php:1894 inc/admin/admin.php:2027 inc/admin/admin.php:2117
105
+ #: inc/admin/admin.php:2319
106
  msgid "nofollow"
107
  msgstr ""
108
 
109
+ #: inc/admin/admin-metaboxes.php:144 inc/admin/admin.php:2321
110
+ msgid "Do not follow links for all pages."
111
+ msgstr ""
112
+
113
+ #: inc/admin/admin-metaboxes.php:149 inc/admin/admin.php:1157
114
+ #: inc/admin/admin.php:2338
115
  msgid "noodp"
116
  msgstr ""
117
 
118
+ #: inc/admin/admin-metaboxes.php:150 inc/admin/admin.php:2340
119
+ msgid ""
120
+ "Do not use Open Directory project metadata for titles or excerpts for all "
121
+ "pages."
122
+ msgstr ""
123
+
124
+ #: inc/admin/admin-metaboxes.php:155 inc/admin/admin.php:1165
125
+ #: inc/admin/admin.php:2357
126
  msgid "noimageindex"
127
  msgstr ""
128
 
129
+ #: inc/admin/admin-metaboxes.php:156 inc/admin/admin.php:2359
130
+ msgid "Do not index images from the entire site."
131
+ msgstr ""
132
+
133
+ #: inc/admin/admin-metaboxes.php:161 inc/admin/admin.php:1173
134
+ #: inc/admin/admin.php:2376
135
  msgid "noarchive"
136
  msgstr ""
137
 
138
+ #: inc/admin/admin-metaboxes.php:162 inc/admin/admin.php:2378
139
+ msgid "Do not display a \"Cached\" link in the Google search results."
140
+ msgstr ""
141
+
142
+ #: inc/admin/admin-metaboxes.php:167 inc/admin/admin.php:1181
143
+ #: inc/admin/admin.php:2395
144
  msgid "nosnippet"
145
  msgstr ""
146
 
147
+ #: inc/admin/admin-metaboxes.php:168 inc/admin/admin.php:2397
148
+ msgid ""
149
+ "Do not display a description in the Google search results for all pages."
150
+ msgstr ""
151
+
152
+ #: inc/admin/admin-metaboxes.php:171 inc/admin/admin.php:474
153
  msgid "Canonical URL"
154
  msgstr ""
155
 
156
+ #: inc/admin/admin-metaboxes.php:172
157
  msgid "Default value: "
158
  msgstr ""
159
 
160
+ #: inc/admin/admin-metaboxes.php:178
161
  msgid "Facebook Title"
162
  msgstr ""
163
 
164
+ #: inc/admin/admin-metaboxes.php:179
165
  msgid "Enter your Facebook title"
166
  msgstr ""
167
 
168
+ #: inc/admin/admin-metaboxes.php:182
169
  msgid "Facebook description"
170
  msgstr ""
171
 
172
+ #: inc/admin/admin-metaboxes.php:183
173
  msgid "Enter your Facebook description"
174
  msgstr ""
175
 
176
+ #: inc/admin/admin-metaboxes.php:186
177
  msgid "Facebook Thumbnail"
178
  msgstr ""
179
 
180
+ #: inc/admin/admin-metaboxes.php:187
181
+ msgid "Minimum size: 200x200px"
182
+ msgstr ""
183
+
184
+ #: inc/admin/admin-metaboxes.php:188 inc/admin/admin-metaboxes.php:204
185
+ #: inc/admin/admin.php:2683 inc/admin/admin.php:2735
186
  msgid "Select your default thumbnail"
187
  msgstr ""
188
 
189
+ #: inc/admin/admin-metaboxes.php:189 inc/admin/admin-metaboxes.php:205
190
+ #: inc/admin/admin.php:2539 inc/admin/admin.php:2685 inc/admin/admin.php:2737
191
  msgid "Upload an Image"
192
  msgstr ""
193
 
194
+ #: inc/admin/admin-metaboxes.php:194
195
  msgid "Twitter Title"
196
  msgstr ""
197
 
198
+ #: inc/admin/admin-metaboxes.php:195
199
  msgid "Enter your Twitter title"
200
  msgstr ""
201
 
202
+ #: inc/admin/admin-metaboxes.php:198
203
  msgid "Twitter description"
204
  msgstr ""
205
 
206
+ #: inc/admin/admin-metaboxes.php:199
207
  msgid "Enter your Twitter description"
208
  msgstr ""
209
 
210
+ #: inc/admin/admin-metaboxes.php:202
211
  msgid "Twitter Thumbnail"
212
  msgstr ""
213
 
214
+ #: inc/admin/admin-metaboxes.php:203
215
+ msgid "Minimum size: 160x160px"
216
+ msgstr ""
217
+
218
+ #: inc/admin/admin-metaboxes.php:214
219
  msgid "Enable redirection?"
220
  msgstr ""
221
 
222
+ #: inc/admin/admin-metaboxes.php:218
223
  msgid "URL redirection"
224
  msgstr ""
225
 
226
+ #: inc/admin/admin-metaboxes.php:220
227
  msgid "301"
228
  msgstr ""
229
 
230
+ #: inc/admin/admin-metaboxes.php:221
231
  msgid "302"
232
  msgstr ""
233
 
234
+ #: inc/admin/admin-metaboxes.php:222
235
  msgid "307"
236
  msgstr ""
237
 
238
+ #: inc/admin/admin-metaboxes.php:224
239
  msgid "Enter your URL"
240
  msgstr ""
241
 
242
+ #: inc/admin/admin-metaboxes.php:227 inc/admin/admin-metaboxes.php:229
243
  msgid "Test your URL"
244
  msgstr ""
245
 
246
+ #: inc/admin/admin-metaboxes.php:238
247
+ msgid "Exclude this post from Google News Sitemap?"
248
+ msgstr ""
249
+
250
+ #: inc/admin/admin-metaboxes.php:242
251
+ msgid "Google News Genres"
252
+ msgstr ""
253
+
254
+ #: inc/admin/admin-metaboxes.php:244 inc/admin/admin.php:2903
255
+ #: inc/admin/admin.php:2980 inc/admin/admin.php:3057 inc/admin/admin.php:3134
256
+ #: inc/admin/admin.php:3211
257
+ msgid "None"
258
+ msgstr ""
259
+
260
+ #: inc/admin/admin-metaboxes.php:245
261
+ msgid "Press Release"
262
+ msgstr ""
263
+
264
+ #: inc/admin/admin-metaboxes.php:246
265
+ msgid "Satire"
266
+ msgstr ""
267
+
268
+ #: inc/admin/admin-metaboxes.php:247
269
+ msgid "Blog"
270
+ msgstr ""
271
+
272
+ #: inc/admin/admin-metaboxes.php:248
273
+ msgid "OpEd"
274
+ msgstr ""
275
+
276
+ #: inc/admin/admin-metaboxes.php:249
277
+ msgid "Opinion"
278
+ msgstr ""
279
+
280
+ #: inc/admin/admin-metaboxes.php:250
281
+ msgid "UserGenerated"
282
+ msgstr ""
283
+
284
+ #: inc/admin/admin-metaboxes.php:255
285
+ msgid "Google News Keywords <em>(max recommended limit: 12)</em>"
286
+ msgstr ""
287
+
288
+ #: inc/admin/admin-metaboxes.php:256
289
+ msgid "Enter your Google News Keywords"
290
+ msgstr ""
291
+
292
+ #: inc/admin/admin.php:102
293
+ msgid "404 - Page not found"
294
+ msgstr ""
295
+
296
+ #: inc/admin/admin.php:170 inc/admin/adminbar.php:22
297
  msgid "Titles & Metas"
298
  msgstr ""
299
 
300
+ #: inc/admin/admin.php:171 inc/admin/admin.php:611 inc/admin/adminbar.php:28
301
  msgid "XML Sitemap"
302
  msgstr ""
303
 
304
+ #: inc/admin/admin.php:173 inc/admin/admin.php:669 inc/admin/adminbar.php:40
305
+ msgid "Google Analytics"
306
+ msgstr ""
307
+
308
+ #: inc/admin/admin.php:175
309
  msgid "Import / Export / Reset settings"
310
  msgstr ""
311
 
312
+ #: inc/admin/admin.php:175 inc/admin/admin.php:893 inc/admin/adminbar.php:52
313
  msgid "Import / Export / Reset"
314
  msgstr ""
315
 
316
+ #: inc/admin/admin.php:182
317
  #, php-format
318
  msgid "%%sitetitle%%"
319
  msgstr ""
320
 
321
+ #: inc/admin/admin.php:182 inc/admin/admin.php:1798 inc/admin/admin.php:1845
322
+ #: inc/admin/admin.php:1960 inc/admin/admin.php:2068 inc/admin/admin.php:2142
323
+ #: inc/admin/admin.php:2192 inc/admin/admin.php:2241 inc/admin/admin.php:2271
324
  msgid "Site Title"
325
  msgstr ""
326
 
327
+ #: inc/admin/admin.php:183
328
  #, php-format
329
  msgid "%%tagline%%"
330
  msgstr ""
331
 
332
+ #: inc/admin/admin.php:183 inc/admin/admin.php:1799 inc/admin/admin.php:1810
333
  msgid "Tagline"
334
  msgstr ""
335
 
336
+ #: inc/admin/admin.php:184
337
  #, php-format
338
  msgid "%%post_title%%"
339
  msgstr ""
340
 
341
+ #: inc/admin/admin.php:184
342
  msgid "Post Title (post, page, custom post type)"
343
  msgstr ""
344
 
345
+ #: inc/admin/admin.php:185
346
  #, php-format
347
  msgid "%%post_excerpt%%"
348
  msgstr ""
349
 
350
+ #: inc/admin/admin.php:185
351
  msgid "Post excerpt"
352
  msgstr ""
353
 
354
+ #: inc/admin/admin.php:186
355
  #, php-format
356
  msgid "%%post_date%%"
357
  msgstr ""
358
 
359
+ #: inc/admin/admin.php:186
360
  msgid "Post date"
361
  msgstr ""
362
 
363
+ #: inc/admin/admin.php:187
364
  #, php-format
365
  msgid "%%post_author%%"
366
  msgstr ""
367
 
368
+ #: inc/admin/admin.php:187 inc/admin/admin.php:2141
369
  msgid "Post author"
370
  msgstr ""
371
 
372
+ #: inc/admin/admin.php:188
373
  #, php-format
374
  msgid "%%_category_title%%"
375
  msgstr ""
376
 
377
+ #: inc/admin/admin.php:188
378
  msgid "Category title"
379
  msgstr ""
380
 
381
+ #: inc/admin/admin.php:189
382
  #, php-format
383
  msgid "%%_category_description%%"
384
  msgstr ""
385
 
386
+ #: inc/admin/admin.php:189
387
  msgid "Category description"
388
  msgstr ""
389
 
390
+ #: inc/admin/admin.php:190
391
  #, php-format
392
  msgid "%%tag_title%%"
393
  msgstr ""
394
 
395
+ #: inc/admin/admin.php:190
396
  msgid "Tag title"
397
  msgstr ""
398
 
399
+ #: inc/admin/admin.php:191
400
  #, php-format
401
  msgid "%%tag_description%%"
402
  msgstr ""
403
 
404
+ #: inc/admin/admin.php:191
405
  msgid "Tag description"
406
  msgstr ""
407
 
408
+ #: inc/admin/admin.php:192
409
  #, php-format
410
  msgid "%%term_title%%"
411
  msgstr ""
412
 
413
+ #: inc/admin/admin.php:192
414
  msgid "Term title"
415
  msgstr ""
416
 
417
+ #: inc/admin/admin.php:193
418
  #, php-format
419
  msgid "%%term_description%%"
420
  msgstr ""
421
 
422
+ #: inc/admin/admin.php:193
423
  msgid "Term description"
424
  msgstr ""
425
 
426
+ #: inc/admin/admin.php:194
427
  #, php-format
428
  msgid "%%search_keywords%%"
429
  msgstr ""
430
 
431
+ #: inc/admin/admin.php:194
432
  msgid "Search keywords"
433
  msgstr ""
434
 
435
+ #: inc/admin/admin.php:195
436
  #, php-format
437
  msgid "%%current_pagination%%"
438
  msgstr ""
439
 
440
+ #: inc/admin/admin.php:195
441
  msgid "Current number page"
442
  msgstr ""
443
 
444
+ #: inc/admin/admin.php:196
445
+ #, php-format
446
+ msgid "%%cpt_plural%%"
447
+ msgstr ""
448
+
449
+ #: inc/admin/admin.php:196
450
+ msgid "Plural Post Type Archive name"
451
+ msgstr ""
452
+
453
+ #: inc/admin/admin.php:197
454
+ #, php-format
455
+ msgid "%%date_archive%%"
456
+ msgstr ""
457
+
458
+ #: inc/admin/admin.php:197
459
+ msgid "Date Archive"
460
+ msgstr ""
461
+
462
+ #: inc/admin/admin.php:203
463
  msgid "Templates variables"
464
  msgstr ""
465
 
466
+ #: inc/admin/admin.php:221
467
  msgid ""
468
  "Discourage search engines from indexing this site is <strong>ON!</strong> "
469
  "None of the following settings will be applied."
470
  msgstr ""
471
 
472
+ #: inc/admin/admin.php:222
473
  msgid "Change this settings"
474
  msgstr ""
475
 
476
+ #: inc/admin/admin.php:236
477
  msgid "Home"
478
  msgstr ""
479
 
480
+ #: inc/admin/admin.php:237
481
  msgid "Single Post Types"
482
  msgstr ""
483
 
484
+ #: inc/admin/admin.php:238
485
+ msgid "Archives"
486
  msgstr ""
487
 
488
+ #: inc/admin/admin.php:239 inc/admin/admin.php:282
489
+ msgid "Taxonomies"
490
  msgstr ""
491
 
492
+ #: inc/admin/admin.php:280 inc/admin/admin.php:361
493
  msgid "General"
494
  msgstr ""
495
 
496
+ #: inc/admin/admin.php:281
497
  msgid "Post Types"
498
  msgstr ""
499
 
500
+ #: inc/admin/admin.php:319
501
  msgid "Knowledge Graph"
502
  msgstr ""
503
 
504
+ #: inc/admin/admin.php:320
505
  msgid "Your social accounts"
506
  msgstr ""
507
 
508
+ #: inc/admin/admin.php:321
509
  msgid "Facebook"
510
  msgstr ""
511
 
512
+ #: inc/admin/admin.php:322
513
  msgid "Twitter"
514
  msgstr ""
515
 
516
+ #: inc/admin/admin.php:362
517
+ msgid "Tracking"
518
  msgstr ""
519
 
520
+ #: inc/admin/admin.php:363
521
+ msgid "Custom Dimensions"
522
+ msgstr ""
523
+
524
+ #: inc/admin/admin.php:403
525
+ msgid "Appearance"
526
  msgstr ""
527
 
528
+ #: inc/admin/admin.php:434
529
  msgid "Export Settings"
530
  msgstr ""
531
 
532
+ #: inc/admin/admin.php:436
533
  msgid ""
534
  "Export the plugin settings for this site as a .json file. This allows you to "
535
  "easily import the configuration into another site."
536
  msgstr ""
537
 
538
+ #: inc/admin/admin.php:441
539
  msgid "Export"
540
  msgstr ""
541
 
542
+ #: inc/admin/admin.php:448
543
  msgid "Import Settings"
544
  msgstr ""
545
 
546
+ #: inc/admin/admin.php:450
547
  msgid ""
548
  "Import the plugin settings from a .json file. This file can be obtained by "
549
  "exporting the settings on another site using the form above."
550
  msgstr ""
551
 
552
+ #: inc/admin/admin.php:458
553
  msgid "Import"
554
  msgstr ""
555
 
556
+ #: inc/admin/admin.php:465
557
+ msgid "Import posts metadata from Yoast"
558
+ msgstr ""
559
+
560
+ #: inc/admin/admin.php:467
561
+ msgid "By clicking Migrate, we'll import:"
562
+ msgstr ""
563
+
564
+ #: inc/admin/admin.php:469
565
+ msgid "Title tags"
566
+ msgstr ""
567
+
568
+ #: inc/admin/admin.php:471
569
+ msgid "Facebook Open Graph tags (title, description and image thumbnail)"
570
+ msgstr ""
571
+
572
+ #: inc/admin/admin.php:472
573
+ msgid "Twitter tags (title, description and image thumbnail)"
574
+ msgstr ""
575
+
576
+ #: inc/admin/admin.php:473
577
+ msgid "Meta Robots (noindex, nofollow...)"
578
+ msgstr ""
579
+
580
+ #: inc/admin/admin.php:476
581
+ msgid ""
582
+ "<strong>WARNING:</strong> Migration will delete all SEOPress posts metadata"
583
+ msgstr ""
584
+
585
+ #: inc/admin/admin.php:477
586
+ msgid "Migrate now"
587
+ msgstr ""
588
+
589
+ #: inc/admin/admin.php:484
590
  msgid "Reset All Settings"
591
  msgstr ""
592
 
593
+ #: inc/admin/admin.php:486
594
  msgid ""
595
  "<strong>WARNING:</strong> Delete all options related to SEOPress in your "
596
+ "database AND set settings to their default values."
597
  msgstr ""
598
 
599
+ #: inc/admin/admin.php:491
600
  msgid "Reset settings"
601
  msgstr ""
602
 
603
+ #: inc/admin/admin.php:514
604
+ msgid "Notifications center"
605
  msgstr ""
606
 
607
+ #: inc/admin/admin.php:519
608
+ msgid ""
609
+ "We notice that you use Yoast SEO plugin. <br>Do you want to migrate all your "
610
+ "posts metadata to SEOPress?"
611
  msgstr ""
612
 
613
+ #: inc/admin/admin.php:521
614
+ msgid "Migrate!"
615
  msgstr ""
616
 
617
+ #: inc/admin/admin.php:528
618
+ msgid "Your site doesn't use an SSL certificate!"
619
+ msgstr ""
620
+
621
+ #: inc/admin/admin.php:529
622
+ msgid "Low impact"
623
+ msgstr ""
624
+
625
+ #: inc/admin/admin.php:531
626
+ msgid "Buy an SSL!"
627
  msgstr ""
628
 
629
+ #: inc/admin/admin.php:538
630
  msgid "Your site is not visible to Search Engines!"
631
  msgstr ""
632
 
633
+ #: inc/admin/admin.php:539 inc/admin/admin.php:549 inc/admin/admin.php:559
634
+ msgid "High impact"
635
+ msgstr ""
636
+
637
+ #: inc/admin/admin.php:541 inc/admin/admin.php:551 inc/admin/admin.php:561
638
+ #: inc/admin/admin.php:571
639
  msgid "Fix this!"
640
  msgstr ""
641
 
642
+ #: inc/admin/admin.php:548
643
  msgid "Your site title is empty!"
644
  msgstr ""
645
 
646
+ #: inc/admin/admin.php:558
647
  msgid ""
648
  "Your permalinks are not SEO Friendly! Enable pretty permalinks to fix this."
649
  msgstr ""
650
 
651
+ #: inc/admin/admin.php:568
652
  msgid "You don't have an XML Sitemap!"
653
  msgstr ""
654
 
655
+ #: inc/admin/admin.php:569
656
+ msgid "Medium impact"
657
+ msgstr ""
658
+
659
+ #: inc/admin/admin.php:582
660
  msgid "Titles & metas"
661
  msgstr ""
662
 
663
+ #: inc/admin/admin.php:583
664
  msgid "Manage all your titles & metas"
665
  msgstr ""
666
 
667
+ #: inc/admin/admin.php:584 inc/admin/admin.php:613 inc/admin/admin.php:642
668
+ #: inc/admin/admin.php:671 inc/admin/admin.php:700 inc/admin/admin.php:729
669
+ #: inc/admin/admin.php:757 inc/admin/admin.php:786 inc/admin/admin.php:797
670
+ #: inc/admin/admin.php:826 inc/admin/admin.php:854 inc/admin/admin.php:883
671
+ #: inc/admin/admin.php:895 inc/admin/admin.php:907
672
  msgid "Manage"
673
  msgstr ""
674
 
675
+ #: inc/admin/admin.php:596 inc/admin/admin.php:600 inc/admin/admin.php:625
676
+ #: inc/admin/admin.php:629 inc/admin/admin.php:654 inc/admin/admin.php:658
677
+ #: inc/admin/admin.php:683 inc/admin/admin.php:687 inc/admin/admin.php:712
678
+ #: inc/admin/admin.php:716 inc/admin/admin.php:741 inc/admin/admin.php:745
679
+ #: inc/admin/admin.php:769 inc/admin/admin.php:773 inc/admin/admin.php:809
680
+ #: inc/admin/admin.php:813 inc/admin/admin.php:838 inc/admin/admin.php:842
681
+ #: inc/admin/admin.php:866 inc/admin/admin.php:870
682
+ msgid "Click to disable this feature"
683
+ msgstr ""
684
+
685
+ #: inc/admin/admin.php:597 inc/admin/admin.php:599 inc/admin/admin.php:626
686
+ #: inc/admin/admin.php:628 inc/admin/admin.php:655 inc/admin/admin.php:657
687
+ #: inc/admin/admin.php:684 inc/admin/admin.php:686 inc/admin/admin.php:713
688
+ #: inc/admin/admin.php:715 inc/admin/admin.php:742 inc/admin/admin.php:744
689
+ #: inc/admin/admin.php:770 inc/admin/admin.php:772 inc/admin/admin.php:810
690
+ #: inc/admin/admin.php:812 inc/admin/admin.php:839 inc/admin/admin.php:841
691
+ #: inc/admin/admin.php:867 inc/admin/admin.php:869
692
+ msgid "Click to enable this feature"
693
+ msgstr ""
694
+
695
+ #: inc/admin/admin.php:612
696
  msgid "Manage your XML Sitemap"
697
  msgstr ""
698
 
699
+ #: inc/admin/admin.php:641
700
  msgid "Open Graph, Twitter Card, Google Knowledge Graph and more..."
701
  msgstr ""
702
 
703
+ #: inc/admin/admin.php:670
704
+ msgid "Track everything about your visitors with Google Analytics"
705
+ msgstr ""
706
+
707
+ #: inc/admin/admin.php:699
708
  msgid "Advanced SEO options for advanced users!"
709
  msgstr ""
710
 
711
+ #: inc/admin/admin.php:727
712
+ msgid "WooCommerce"
713
+ msgstr ""
714
+
715
+ #: inc/admin/admin.php:728
716
+ msgid "Improve WooCommerce SEO"
717
+ msgstr ""
718
+
719
+ #: inc/admin/admin.php:755
720
+ msgid "Breadcrumbs"
721
+ msgstr ""
722
+
723
+ #: inc/admin/admin.php:756
724
+ msgid "Enable Breadcrumbs for your theme and improve your SEO in SERPs"
725
+ msgstr ""
726
+
727
+ #: inc/admin/admin.php:784
728
+ msgid "Google Page Speed"
729
+ msgstr ""
730
+
731
+ #: inc/admin/admin.php:785
732
+ msgid "Track your website performance to improve SEO with Google Page Speed"
733
+ msgstr ""
734
+
735
+ #: inc/admin/admin.php:795
736
+ msgid "Robots"
737
+ msgstr ""
738
+
739
+ #: inc/admin/admin.php:796
740
+ msgid "Edit your robots.txt file"
741
+ msgstr ""
742
+
743
+ #: inc/admin/admin.php:824
744
+ msgid "Google News Sitemap"
745
+ msgstr ""
746
+
747
+ #: inc/admin/admin.php:825
748
+ msgid "Optimize your site for Google News"
749
+ msgstr ""
750
+
751
+ #: inc/admin/admin.php:853
752
+ msgid "Monitor 404, create 301, 302 and 307 redirections"
753
+ msgstr ""
754
+
755
+ #: inc/admin/admin.php:881
756
+ msgid "htaccess"
757
+ msgstr ""
758
+
759
+ #: inc/admin/admin.php:882
760
+ msgid "Edit your htaccess file."
761
+ msgstr ""
762
+
763
+ #: inc/admin/admin.php:894
764
  msgid "Import / export SEOPress settings from site to site."
765
  msgstr ""
766
 
767
+ #: inc/admin/admin.php:905
768
+ msgid "License"
769
+ msgstr ""
770
+
771
+ #: inc/admin/admin.php:906
772
+ msgid "Edit your SEOPress license key."
773
+ msgstr ""
774
+
775
+ #: inc/admin/admin.php:975
776
  msgid "Site title"
777
  msgstr ""
778
 
779
+ #: inc/admin/admin.php:1198 inc/admin/admin.php:2414
780
  msgid "Enable XML Sitemap"
781
  msgstr ""
782
 
783
+ #: inc/admin/admin.php:1214
784
  msgid "Check to INCLUDE Post Types"
785
  msgstr ""
786
 
787
+ #: inc/admin/admin.php:1230
788
  msgid "Check to INCLUDE Taxonomies"
789
  msgstr ""
790
 
791
+ #: inc/admin/admin.php:1247
792
  msgid "Person or organization"
793
  msgstr ""
794
 
795
+ #: inc/admin/admin.php:1255
796
+ msgid "Your name / organization"
797
  msgstr ""
798
 
799
+ #: inc/admin/admin.php:1263
800
  msgid "Your photo / organization logo"
801
  msgstr ""
802
 
803
+ #: inc/admin/admin.php:1280
804
  msgid "Facebook Page URL"
805
  msgstr ""
806
 
807
+ #: inc/admin/admin.php:1288
808
  msgid "Twitter Username"
809
  msgstr ""
810
 
811
+ #: inc/admin/admin.php:1296
812
  msgid "Google + URL"
813
  msgstr ""
814
 
815
+ #: inc/admin/admin.php:1304
816
  msgid "Pinterest URL"
817
  msgstr ""
818
 
819
+ #: inc/admin/admin.php:1312
820
  msgid "Instagram URL"
821
  msgstr ""
822
 
823
+ #: inc/admin/admin.php:1320
824
  msgid "YouTube URL"
825
  msgstr ""
826
 
827
+ #: inc/admin/admin.php:1328
828
  msgid "LinkedIn URL"
829
  msgstr ""
830
 
831
+ #: inc/admin/admin.php:1336
832
  msgid "MySpace URL"
833
  msgstr ""
834
 
835
+ #: inc/admin/admin.php:1344
836
  msgid "Soundcloud URL"
837
  msgstr ""
838
 
839
+ #: inc/admin/admin.php:1352
840
  msgid "Tumblr URL"
841
  msgstr ""
842
 
843
+ #: inc/admin/admin.php:1369
844
  msgid "Enable Open Graph Data"
845
  msgstr ""
846
 
847
+ #: inc/admin/admin.php:1377
848
  msgid "Select a default image"
849
  msgstr ""
850
 
851
+ #: inc/admin/admin.php:1385
852
  msgid "Facebook Admin ID"
853
  msgstr ""
854
 
855
+ #: inc/admin/admin.php:1393
856
  msgid "Facebook App ID"
857
  msgstr ""
858
 
859
+ #: inc/admin/admin.php:1410
860
  msgid "Enable Twitter Card"
861
  msgstr ""
862
 
863
+ #: inc/admin/admin.php:1418
864
  msgid "Default Twitter Image"
865
  msgstr ""
866
 
867
+ #: inc/admin/admin.php:1426
868
  msgid "Image size for Twitter Summary card"
869
  msgstr ""
870
 
871
+ #: inc/admin/admin.php:1443 inc/admin/admin.php:2774
872
+ msgid "Enable Google Analytics tracking"
873
+ msgstr ""
874
+
875
+ #: inc/admin/admin.php:1451
876
+ msgid "Enter your tracking ID"
877
+ msgstr ""
878
+
879
+ #: inc/admin/admin.php:1459
880
+ msgid "Exclude user roles from tracking"
881
+ msgstr ""
882
+
883
+ #: inc/admin/admin.php:1477 inc/admin/admin.php:2826
884
+ msgid "Enable remarketing, demographics and interest reporting"
885
+ msgstr ""
886
+
887
+ #: inc/admin/admin.php:1485 inc/admin/admin.php:2843
888
+ msgid "Enable IP Anonymization"
889
+ msgstr ""
890
+
891
+ #: inc/admin/admin.php:1493 inc/admin/admin.php:2860
892
+ msgid "Enhanced Link Attribution"
893
+ msgstr ""
894
+
895
+ #: inc/admin/admin.php:1501 inc/admin/admin.php:2877
896
+ msgid "Enable cross-domain tracking"
897
+ msgstr ""
898
+
899
+ #: inc/admin/admin.php:1509
900
+ msgid "Cross domains"
901
+ msgstr ""
902
+
903
+ #: inc/admin/admin.php:1527
904
+ msgid "Track Authors"
905
+ msgstr ""
906
+
907
+ #: inc/admin/admin.php:1535
908
+ msgid "Track Categories"
909
+ msgstr ""
910
+
911
+ #: inc/admin/admin.php:1543
912
+ msgid "Track Tags"
913
+ msgstr ""
914
+
915
+ #: inc/admin/admin.php:1551
916
+ msgid "Track Post Types"
917
+ msgstr ""
918
+
919
+ #: inc/admin/admin.php:1559
920
+ msgid "Track Logged In Users"
921
  msgstr ""
922
 
923
+ #: inc/admin/admin.php:1576
924
+ msgid "Redirect attachment pages to post parent"
925
+ msgstr ""
926
+
927
+ #: inc/admin/admin.php:1584
928
  msgid "Remove stop words from URL"
929
  msgstr ""
930
 
931
+ #: inc/admin/admin.php:1592
932
  msgid "Google site verification"
933
  msgstr ""
934
 
935
+ #: inc/admin/admin.php:1600
936
  msgid "Bing site verification"
937
  msgstr ""
938
 
939
+ #: inc/admin/admin.php:1608
940
  msgid "Pinterest site verification"
941
  msgstr ""
942
 
943
+ #: inc/admin/admin.php:1616
944
  msgid "Yandex site verification"
945
  msgstr ""
946
 
947
+ #: inc/admin/admin.php:1633
948
+ msgid "SEOPress in admin bar"
949
+ msgstr ""
950
+
951
+ #: inc/admin/admin.php:1641
952
+ msgid "Show Title tag column in post types"
953
+ msgstr ""
954
+
955
+ #: inc/admin/admin.php:1649
956
+ msgid "Show Meta description column in post types"
957
+ msgstr ""
958
+
959
+ #: inc/admin/admin.php:1693
960
  msgid "<p>Customize your titles & metas for homepage</p>"
961
  msgstr ""
962
 
963
+ #: inc/admin/admin.php:1698
964
  msgid "<p>Customize your titles & metas for Single Custom Post Types</p>"
965
  msgstr ""
966
 
967
+ #: inc/admin/admin.php:1703
968
  msgid "<p>Customize your metas for all pages</p>"
969
  msgstr ""
970
 
971
+ #: inc/admin/admin.php:1708
972
  msgid "<p>Customize your metas for all taxonomies archives</p>"
973
  msgstr ""
974
 
975
+ #: inc/admin/admin.php:1713
976
  msgid "<p>Customize your metas for all archives</p>"
977
  msgstr ""
978
 
979
+ #: inc/admin/admin.php:1718
980
  msgid "<p>Enable your Sitemap</p>"
981
  msgstr ""
982
 
983
+ #: inc/admin/admin.php:1719
984
  msgid ""
985
  "To view your sitemap, enable permalinks (not default one), and save settings "
986
  "to flush them."
987
  msgstr ""
988
 
989
+ #: inc/admin/admin.php:1721
990
  msgid ""
991
  "Only the last 1000 items are listed in Sitemaps for performances issues."
992
  msgstr ""
993
 
994
+ #: inc/admin/admin.php:1724
995
  msgid "View your sitemap"
996
  msgstr ""
997
 
998
+ #: inc/admin/admin.php:1726
999
  msgid "Ping Google manually"
1000
  msgstr ""
1001
 
1002
+ #: inc/admin/admin.php:1728
1003
  msgid "Flush permalinks"
1004
  msgstr ""
1005
 
1006
+ #: inc/admin/admin.php:1734
1007
  msgid "<p>Include / Exclude Post Types</p>"
1008
  msgstr ""
1009
 
1010
+ #: inc/admin/admin.php:1739
1011
  msgid "<p>Include / Exclude Taxonomies</p>"
1012
  msgstr ""
1013
 
1014
+ #: inc/admin/admin.php:1744
1015
  msgid "<p>Configure Google Knowledge Graph</p>"
1016
  msgstr ""
1017
 
1018
+ #: inc/admin/admin.php:1749
1019
  msgid "<p>Link your site with your social accounts</p>"
1020
  msgstr ""
1021
 
1022
+ #: inc/admin/admin.php:1754
1023
  msgid "<p>Manage Open Graph datas</p>"
1024
  msgstr ""
1025
 
1026
+ #: inc/admin/admin.php:1759
1027
  msgid "<p>Manage your Twitter card</p>"
1028
  msgstr ""
1029
 
1030
+ #: inc/admin/admin.php:1764
1031
+ msgid "<p>Link your Google Analytics to your website</p>"
1032
+ msgstr ""
1033
+
1034
+ #: inc/admin/admin.php:1769
1035
+ msgid "<p>Configure your Google Analytics tracking code</p>"
1036
+ msgstr ""
1037
+
1038
+ #: inc/admin/admin.php:1774
1039
+ msgid "<p>Configure your Google Analytics custom dimensions</p>"
1040
+ msgstr ""
1041
+
1042
+ #: inc/admin/admin.php:1779
1043
  msgid "<p>Advanced SEO options</p>"
1044
  msgstr ""
1045
 
1046
+ #: inc/admin/admin.php:1784
1047
+ msgid "<p>Customize SEOPress to fit your needs</p>"
1048
+ msgstr ""
1049
+
1050
+ #: inc/admin/admin.php:1795
1051
  msgid "My awesome website"
1052
  msgstr ""
1053
 
1054
+ #: inc/admin/admin.php:1800 inc/admin/admin.php:1811 inc/admin/admin.php:1847
1055
+ #: inc/admin/admin.php:1962 inc/admin/admin.php:1993 inc/admin/admin.php:2070
1056
+ #: inc/admin/admin.php:2143 inc/admin/admin.php:2193 inc/admin/admin.php:2242
1057
+ #: inc/admin/admin.php:2272
1058
+ msgid "More tags"
1059
  msgstr ""
1060
 
1061
+ #: inc/admin/admin.php:1806
1062
+ msgid "This is a cool website about Wookiees"
1063
+ msgstr ""
1064
+
1065
+ #: inc/admin/admin.php:1824 inc/admin/admin.php:1933 inc/admin/admin.php:2047
1066
+ #: inc/admin/admin.php:2132 inc/admin/admin.php:2182 inc/admin/admin.php:2231
1067
+ #: inc/admin/admin.php:2263
1068
  msgid "Title template"
1069
  msgstr ""
1070
 
1071
+ #: inc/admin/admin.php:1843
1072
+ msgid "Post Title"
1073
+ msgstr ""
1074
+
1075
+ #: inc/admin/admin.php:1854 inc/admin/admin.php:1969 inc/admin/admin.php:2077
1076
+ #: inc/admin/admin.php:2149 inc/admin/admin.php:2199 inc/admin/admin.php:2248
1077
+ #: inc/admin/admin.php:2278
1078
  msgid "Meta description template"
1079
  msgstr ""
1080
 
1081
+ #: inc/admin/admin.php:1913
1082
  msgid "Display date in Google search results?"
1083
  msgstr ""
1084
 
1085
+ #: inc/admin/admin.php:1953
1086
+ msgid "Category Title"
1087
+ msgstr ""
1088
+
1089
+ #: inc/admin/admin.php:1955
1090
+ msgid "Tag Title"
1091
+ msgstr ""
1092
+
1093
+ #: inc/admin/admin.php:1957
1094
+ msgid "Term Title"
1095
+ msgstr ""
1096
+
1097
+ #: inc/admin/admin.php:1986
1098
+ msgid "Category Description"
1099
+ msgstr ""
1100
+
1101
+ #: inc/admin/admin.php:1988
1102
+ msgid "Tag Description"
1103
+ msgstr ""
1104
+
1105
+ #: inc/admin/admin.php:1990
1106
+ msgid "Term Description"
1107
+ msgstr ""
1108
+
1109
+ #: inc/admin/admin.php:2066
1110
+ msgid "Post Type Archive Name"
1111
+ msgstr ""
1112
+
1113
+ #: inc/admin/admin.php:2130
1114
  msgid "Author archives"
1115
  msgstr ""
1116
 
1117
+ #: inc/admin/admin.php:2180
1118
  msgid "Date archives"
1119
  msgstr ""
1120
 
1121
+ #: inc/admin/admin.php:2191
1122
+ msgid "Archive date"
1123
+ msgstr ""
1124
+
1125
+ #: inc/admin/admin.php:2229
1126
  msgid "Search archives"
1127
  msgstr ""
1128
 
1129
+ #: inc/admin/admin.php:2240
1130
+ msgid "Search Keywords"
1131
  msgstr ""
1132
 
1133
+ #: inc/admin/admin.php:2261
1134
+ msgid "404 archives"
1135
  msgstr ""
1136
 
1137
+ #: inc/admin/admin.php:2453 inc/admin/admin.php:2493
1138
  msgid "Include"
1139
  msgstr ""
1140
 
1141
+ #: inc/admin/admin.php:2512
1142
  msgid "Person"
1143
  msgstr ""
1144
 
1145
+ #: inc/admin/admin.php:2515
1146
  msgid "Organization"
1147
  msgstr ""
1148
 
1149
+ #: inc/admin/admin.php:2526
1150
  msgid "eg: Apple"
1151
  msgstr ""
1152
 
1153
+ #: inc/admin/admin.php:2537
1154
  msgid "Select your logo"
1155
  msgstr ""
1156
 
1157
+ #: inc/admin/admin.php:2563
1158
  msgid "eg: https://www.facebook.com/your-page"
1159
  msgstr ""
1160
 
1161
+ #: inc/admin/admin.php:2573
1162
  msgid "eg: @wpcloudy"
1163
  msgstr ""
1164
 
1165
+ #: inc/admin/admin.php:2583
1166
  msgid "eg: https://plus.google.com/+BenjaminDenis"
1167
  msgstr ""
1168
 
1169
+ #: inc/admin/admin.php:2593
1170
  msgid "eg: https://pinterest.com/wpbuy/"
1171
  msgstr ""
1172
 
1173
+ #: inc/admin/admin.php:2603
1174
  msgid "eg: https://www.instagram.com/your-name/"
1175
  msgstr ""
1176
 
1177
+ #: inc/admin/admin.php:2613
1178
  msgid "eg: https://www.youtube.com/channel/UCpQzarWu55UzCIH7-OW6pwA"
1179
  msgstr ""
1180
 
1181
+ #: inc/admin/admin.php:2623
1182
  msgid "eg: https://www.linkedin.com/in/benjamin-denis-70672b3b"
1183
  msgstr ""
1184
 
1185
+ #: inc/admin/admin.php:2633
1186
  msgid "eg: https://myspace.com/your-page"
1187
  msgstr ""
1188
 
1189
+ #: inc/admin/admin.php:2643
1190
  msgid "eg: https://soundcloud.com/michaelmccannmusic"
1191
  msgstr ""
1192
 
1193
+ #: inc/admin/admin.php:2653
1194
  msgid "eg: https://your-site.tumblr.com"
1195
  msgstr ""
1196
 
1197
+ #: inc/admin/admin.php:2670
1198
  msgid "Enable OG data"
1199
  msgstr ""
1200
 
1201
+ #: inc/admin/admin.php:2722
1202
  msgid "Enable Twitter card"
1203
  msgstr ""
1204
 
1205
+ #: inc/admin/admin.php:2753
1206
  msgid "Default"
1207
  msgstr ""
1208
 
1209
+ #: inc/admin/admin.php:2756
1210
  msgid "Large"
1211
  msgstr ""
1212
 
1213
+ #: inc/admin/admin.php:2784
1214
+ msgid "Enter your Tracking ID (UA-XXXX-XX)"
1215
+ msgstr ""
1216
+
1217
+ #: inc/admin/admin.php:2887
1218
+ msgid "Enter yours domains"
1219
+ msgstr ""
1220
+
1221
+ #: inc/admin/admin.php:2906 inc/admin/admin.php:2983 inc/admin/admin.php:3060
1222
+ #: inc/admin/admin.php:3137 inc/admin/admin.php:3214
1223
+ msgid "Custom Dimension #1"
1224
+ msgstr ""
1225
+
1226
+ #: inc/admin/admin.php:2909 inc/admin/admin.php:2986 inc/admin/admin.php:3063
1227
+ #: inc/admin/admin.php:3140 inc/admin/admin.php:3217
1228
+ msgid "Custom Dimension #2"
1229
+ msgstr ""
1230
+
1231
+ #: inc/admin/admin.php:2912 inc/admin/admin.php:2989 inc/admin/admin.php:3066
1232
+ #: inc/admin/admin.php:3143 inc/admin/admin.php:3220
1233
+ msgid "Custom Dimension #3"
1234
+ msgstr ""
1235
+
1236
+ #: inc/admin/admin.php:2915 inc/admin/admin.php:2992 inc/admin/admin.php:3069
1237
+ #: inc/admin/admin.php:3146 inc/admin/admin.php:3223
1238
+ msgid "Custom Dimension #4"
1239
+ msgstr ""
1240
+
1241
+ #: inc/admin/admin.php:2918 inc/admin/admin.php:2995 inc/admin/admin.php:3072
1242
+ #: inc/admin/admin.php:3149 inc/admin/admin.php:3226
1243
+ msgid "Custom Dimension #5"
1244
+ msgstr ""
1245
+
1246
+ #: inc/admin/admin.php:2921 inc/admin/admin.php:2998 inc/admin/admin.php:3075
1247
+ #: inc/admin/admin.php:3152 inc/admin/admin.php:3229
1248
+ msgid "Custom Dimension #6"
1249
+ msgstr ""
1250
+
1251
+ #: inc/admin/admin.php:2924 inc/admin/admin.php:3001 inc/admin/admin.php:3078
1252
+ #: inc/admin/admin.php:3155 inc/admin/admin.php:3232
1253
+ msgid "Custom Dimension #7"
1254
+ msgstr ""
1255
+
1256
+ #: inc/admin/admin.php:2927 inc/admin/admin.php:3004 inc/admin/admin.php:3081
1257
+ #: inc/admin/admin.php:3158 inc/admin/admin.php:3235
1258
+ msgid "Custom Dimension #8"
1259
+ msgstr ""
1260
+
1261
+ #: inc/admin/admin.php:2930 inc/admin/admin.php:3007 inc/admin/admin.php:3084
1262
+ #: inc/admin/admin.php:3161 inc/admin/admin.php:3238
1263
+ msgid "Custom Dimension #9"
1264
+ msgstr ""
1265
+
1266
+ #: inc/admin/admin.php:2933 inc/admin/admin.php:3010 inc/admin/admin.php:3087
1267
+ #: inc/admin/admin.php:3164 inc/admin/admin.php:3241
1268
+ msgid "Custom Dimension #10"
1269
+ msgstr ""
1270
+
1271
+ #: inc/admin/admin.php:2936 inc/admin/admin.php:3013 inc/admin/admin.php:3090
1272
+ #: inc/admin/admin.php:3167 inc/admin/admin.php:3244
1273
+ msgid "Custom Dimension #11"
1274
+ msgstr ""
1275
+
1276
+ #: inc/admin/admin.php:2939 inc/admin/admin.php:3016 inc/admin/admin.php:3093
1277
+ #: inc/admin/admin.php:3170 inc/admin/admin.php:3247
1278
+ msgid "Custom Dimension #12"
1279
+ msgstr ""
1280
+
1281
+ #: inc/admin/admin.php:2942 inc/admin/admin.php:3019 inc/admin/admin.php:3096
1282
+ #: inc/admin/admin.php:3173 inc/admin/admin.php:3250
1283
+ msgid "Custom Dimension #13"
1284
+ msgstr ""
1285
+
1286
+ #: inc/admin/admin.php:2945 inc/admin/admin.php:3022 inc/admin/admin.php:3099
1287
+ #: inc/admin/admin.php:3176 inc/admin/admin.php:3253
1288
+ msgid "Custom Dimension #14"
1289
+ msgstr ""
1290
+
1291
+ #: inc/admin/admin.php:2948 inc/admin/admin.php:3025 inc/admin/admin.php:3102
1292
+ #: inc/admin/admin.php:3179 inc/admin/admin.php:3256
1293
+ msgid "Custom Dimension #15"
1294
+ msgstr ""
1295
+
1296
+ #: inc/admin/admin.php:2951 inc/admin/admin.php:3028 inc/admin/admin.php:3105
1297
+ #: inc/admin/admin.php:3182 inc/admin/admin.php:3259
1298
+ msgid "Custom Dimension #16"
1299
+ msgstr ""
1300
+
1301
+ #: inc/admin/admin.php:2954 inc/admin/admin.php:3031 inc/admin/admin.php:3108
1302
+ #: inc/admin/admin.php:3185 inc/admin/admin.php:3262
1303
+ msgid "Custom Dimension #17"
1304
+ msgstr ""
1305
+
1306
+ #: inc/admin/admin.php:2957 inc/admin/admin.php:3034 inc/admin/admin.php:3111
1307
+ #: inc/admin/admin.php:3188 inc/admin/admin.php:3265
1308
+ msgid "Custom Dimension #18"
1309
+ msgstr ""
1310
+
1311
+ #: inc/admin/admin.php:2960 inc/admin/admin.php:3037 inc/admin/admin.php:3114
1312
+ #: inc/admin/admin.php:3191 inc/admin/admin.php:3268
1313
+ msgid "Custom Dimension #19"
1314
+ msgstr ""
1315
+
1316
+ #: inc/admin/admin.php:2963 inc/admin/admin.php:3040 inc/admin/admin.php:3117
1317
+ #: inc/admin/admin.php:3194 inc/admin/admin.php:3271
1318
+ msgid "Custom Dimension #20"
1319
+ msgstr ""
1320
+
1321
+ #: inc/admin/admin.php:3289
1322
  msgid "Redirect attachment pages to post parent (or homepage if none)"
1323
  msgstr ""
1324
 
1325
+ #: inc/admin/admin.php:3306
1326
  msgid "Remove stop words in permalinks"
1327
  msgstr ""
1328
 
1329
+ #: inc/admin/admin.php:3306
1330
  msgid ""
1331
  "Setting based on site language. Supported language EN, FR, ES, DE, IT, PT."
1332
  msgstr ""
1333
 
1334
+ #: inc/admin/admin.php:3316
1335
  msgid "Enter Google meta value site verification"
1336
  msgstr ""
1337
 
1338
+ #: inc/admin/admin.php:3326
1339
  msgid "Enter Bing meta value site verification"
1340
  msgstr ""
1341
 
1342
+ #: inc/admin/admin.php:3336
1343
  msgid "Enter Pinterest meta value site verification"
1344
  msgstr ""
1345
 
1346
+ #: inc/admin/admin.php:3346
1347
  msgid "Enter Yandex meta value site verification"
1348
  msgstr ""
1349
 
1350
+ #: inc/admin/admin.php:3363
1351
+ msgid "Remove SEOPress from Admin Bar in backend"
1352
+ msgstr ""
1353
+
1354
+ #: inc/admin/admin.php:3380
1355
+ msgid "Add title column"
1356
+ msgstr ""
1357
+
1358
+ #: inc/admin/admin.php:3397
1359
+ msgid "Add meta description column"
1360
+ msgstr ""
1361
+
1362
+ #: inc/functions/options-advanced-admin.php:57
1363
+ msgid "Title tag"
1364
+ msgstr ""
1365
+
1366
+ #: inc/functions/options-advanced-admin.php:60
1367
+ msgid "Meta Desc."
1368
+ msgstr ""
1369
+
1370
+ #: inc/functions/options-import-export.php:48
1371
  msgid "Please upload a valid .json file"
1372
  msgstr ""
1373
 
1374
+ #: inc/functions/options-import-export.php:52
1375
  msgid "Please upload a file to import"
1376
  msgstr ""
1377
 
1378
+ #: seopress.php:228
1379
  msgid "Settings"
1380
  msgstr ""
1381
 
1382
+ #: seopress.php:229
1383
  msgid "SEOPress.org"
1384
  msgstr ""
1385
 
1386
+ #: seopress.php:231
1387
  msgid "GO PRO!"
1388
  msgstr ""
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: rainbowgeek
3
  Donate link: https://seopress.org/
4
  Tags: seo, search engine optimization, meta, title, description, keywords, serp, knowledge grah, schema.org, url, redirection, 301, xml sitemap, breadcrumbs, ranking
5
  Requires at least: 4.4+
6
- Tested up to: 4.6
7
- Stable tag: 0.9
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -21,36 +21,53 @@ SEOPress is a powerful plugin to optimize your SEO, boost your traffic and impro
21
  <li>Meta descriptions</li>
22
  <li>Open Graph Data</li>
23
  <li>Google Knowledge Graph</li>
 
24
  <li>Twitter Card</li>
25
  <li>Canonical URL</li>
26
  <li>Meta robots (noindex, nofollow, noodp, noimageindex, noarchive, nosnippet)</li>
27
  <li>Build your custom XML Sitemap to improve search indexing.</li>
28
  <li>Link your social media accounts to your site.</li>
29
- <li>Redirections</li>
30
  <li>Remove stop words (english, french, spanish, german, italian, portuguese)</li>
31
  <li>Redirect attachment pages to post parent</li>
32
  <li>Import / Export settings from site to site.</li>
 
33
  <li>...</li>
34
  </ul>
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  <h3>Translation</h3>
37
 
38
  <ul>
39
  <li>English</li>
40
  <li>French</li>
 
41
  </ul>
42
 
43
  <h3>Subscribe to our newsletter and get a huge discount!</h3>
44
  And get early access to our pro release!
45
  <a href="http://seopress.org/" target="_blank">Subscribe now</a>
 
46
  == Installation ==
47
 
48
- 1. Upload 'seopress' to the '/wp-content/plugins/' directory
49
  2. Activate the plugin through the 'Plugins' menu in WordPress
50
  3. Click on SEOPress and apply settings.
51
 
52
  == Frequently Asked Questions ==
53
- <a href="http://www.seopress.org/support/faq/" target="_blank">Read our FAQ</a>
54
 
55
  == Screenshots ==
56
  1. SEOPress Dashboard
@@ -64,6 +81,42 @@ And get early access to our pro release!
64
  9. SEOPress Metaboxe: Redirection settings
65
 
66
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  = 0.9 =
68
  * NEW Add OG:URL if Open Graph is enabled
69
  * NEW Add OG:SITE_NAME if Open Graph is enabled
3
  Donate link: https://seopress.org/
4
  Tags: seo, search engine optimization, meta, title, description, keywords, serp, knowledge grah, schema.org, url, redirection, 301, xml sitemap, breadcrumbs, ranking
5
  Requires at least: 4.4+
6
+ Tested up to: 4.7
7
+ Stable tag: 1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
21
  <li>Meta descriptions</li>
22
  <li>Open Graph Data</li>
23
  <li>Google Knowledge Graph</li>
24
+ <li>Google Analytics</li>
25
  <li>Twitter Card</li>
26
  <li>Canonical URL</li>
27
  <li>Meta robots (noindex, nofollow, noodp, noimageindex, noarchive, nosnippet)</li>
28
  <li>Build your custom XML Sitemap to improve search indexing.</li>
29
  <li>Link your social media accounts to your site.</li>
30
+ <li>Redirections in post, pages, custom post types</li>
31
  <li>Remove stop words (english, french, spanish, german, italian, portuguese)</li>
32
  <li>Redirect attachment pages to post parent</li>
33
  <li>Import / Export settings from site to site.</li>
34
+ <li>Import posts metadata from Yoast SEO</li>
35
  <li>...</li>
36
  </ul>
37
 
38
+ <h3>SEOPress PRO</h3>
39
+
40
+ <ul>
41
+ <li>WooCommerce</li>
42
+ <li>Breadcrumbs</li>
43
+ <li>Google Page Speed</li>
44
+ <li>Robots</li>
45
+ <li>Google News Sitemap</li>
46
+ <li>404 Monitoring</li>
47
+ <li>301 Redirections</li>
48
+ <li>htaccess</li>
49
+ </ul>
50
+
51
  <h3>Translation</h3>
52
 
53
  <ul>
54
  <li>English</li>
55
  <li>French</li>
56
+ <li><a href="https://www.seopress.org/contact/">Add yours!</a></li>
57
  </ul>
58
 
59
  <h3>Subscribe to our newsletter and get a huge discount!</h3>
60
  And get early access to our pro release!
61
  <a href="http://seopress.org/" target="_blank">Subscribe now</a>
62
+
63
  == Installation ==
64
 
65
+ 1. Upload 'wp-seopress' to the '/wp-content/plugins/' directory
66
  2. Activate the plugin through the 'Plugins' menu in WordPress
67
  3. Click on SEOPress and apply settings.
68
 
69
  == Frequently Asked Questions ==
70
+ <a href="https://www.seopress.org/support/faq/" target="_blank">Read our FAQ</a>
71
 
72
  == Screenshots ==
73
  1. SEOPress Dashboard
81
  9. SEOPress Metaboxe: Redirection settings
82
 
83
  == Changelog ==
84
+ = 1.0 =
85
+ * NEW Google Analytics
86
+ * 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)
87
+ * NEW Google News Sitemap (SEOPress PRO only)
88
+ * NEW Breadcrumbs (SEOPress PRO only)
89
+ * NEW Google Page Speed tool (SEOPress PRO only)
90
+ * NEW Robots.txt (SEOPress PRO only)
91
+ * NEW htaccess (SEOPress PRO only)
92
+ * NEW WooCommerce OG:PRICE meta for product (SEOPress PRO only)
93
+ * NEW WooCommerce OG:CURRENCY meta for product (SEOPress PRO only)
94
+ * NEW WooCommerce Noindex cart page (SEOPress PRO only)
95
+ * NEW WooCommerce Noindex checkout page (SEOPress PRO only)
96
+ * NEW WooCommerce Noindex customer account pages (SEOPress PRO only)
97
+ * NEW Add Title tag column in post types
98
+ * NEW Add Meta description column in post types
99
+ * NEW Set default values (settings need to be reset if you already own the plugin)
100
+ * NEW Add SEOPress in Admin Bar for quick access (you can remove it)
101
+ * NEW Manage Titles, Meta Descriptions and Meta Robots for Custom Post Type Archives
102
+ * NEW Add new checks in notifications center
103
+ * NEW Add Logo preview in Knowledge graph
104
+ * INFO If Jetpack enabled, disable Jetpack Open Graph Tags for compatibility
105
+ * INFO Check if SEOPress is installed, if not, display a notice for SEOPress Pro users
106
+ * INFO Improve some labels
107
+ * INFO Add minimum size required for Facebook and Twitter thumbnail
108
+ * INFO Add SEOPress icon in admin menu
109
+ * INFO Add descriptions / tooltips for labels, inputs...
110
+ * FIX Disable article:published_time, article:modified_time and og:updated_time on homepage
111
+ * FIX CSS bugs
112
+ * FIX XML Sitemaps namespaces
113
+ * FIX Escape HTML in OG:Title, Twitter:title
114
+ * FIX Wrong link for rating SEOPress on w.org
115
+ * FIX Replace get_site_url() by get_home_url() (thanks to Ludovic Riaudel)
116
+ * FIX Title tag and meta description for frontpage
117
+ * FIX Notification center checks
118
+ * FIX if function exists errors
119
+ * FIX WooCommerce checks
120
  = 0.9 =
121
  * NEW Add OG:URL if Open Graph is enabled
122
  * NEW Add OG:SITE_NAME if Open Graph is enabled
seopress.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: SEOPress
5
  Plugin URI: http://seopress.org/
6
  Description: The best SEO plugin.
7
- Version: 0.9
8
  Author: Benjamin DENIS
9
  Author URI: http://seopress.org/
10
  License: GPLv2
@@ -34,6 +34,33 @@ if ( !function_exists( 'add_action' ) ) {
34
  exit;
35
  }
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  function seopress_activation() {
38
  add_option( 'seopress_activated', 'yes' );
39
  flush_rewrite_rules();
@@ -52,7 +79,7 @@ register_deactivation_hook(__FILE__, 'seopress_deactivation');
52
  //Define
53
  ///////////////////////////////////////////////////////////////////////////////////////////////////
54
 
55
- define( 'SEOPRESS_VERSION', '0.9' );
56
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
57
 
58
  ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -67,6 +94,11 @@ function seopress_init() {
67
  require_once dirname( __FILE__ ) . '/inc/admin/admin.php';
68
  require_once dirname( __FILE__ ) . '/inc/admin/admin-metaboxes.php';
69
  require_once dirname( __FILE__ ) . '/inc/admin/ajax.php';
 
 
 
 
 
70
  }
71
 
72
  require_once dirname( __FILE__ ) . '/inc/functions/options.php';
@@ -82,6 +114,28 @@ function seopress_add_admin_options_scripts($hook) {
82
  wp_register_style( 'seopress-admin', plugins_url('assets/css/seopress.css', __FILE__));
83
  wp_enqueue_style( 'seopress-admin' );
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  //Tabs
86
  if (isset($_GET['page']) && ($_GET['page'] == 'seopress-titles') ) {
87
  wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
@@ -89,7 +143,9 @@ function seopress_add_admin_options_scripts($hook) {
89
 
90
  if (isset($_GET['page']) && ($_GET['page'] == 'seopress-xml-sitemap') ) {
91
  wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs4.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
 
92
 
 
93
  wp_enqueue_script( 'seopress-xml-ajax', plugins_url( 'assets/js/seopress-sitemap-ajax.js', __FILE__ ), array( 'jquery' ), '', true );
94
 
95
  $seopress_ajax_permalinks = array(
@@ -100,6 +156,10 @@ function seopress_add_admin_options_scripts($hook) {
100
 
101
  }
102
 
 
 
 
 
103
  if (isset($_GET['page']) && ($_GET['page'] == 'seopress-advanced') ) {
104
  wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs5.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
105
  }
@@ -112,11 +172,17 @@ function seopress_add_admin_options_scripts($hook) {
112
  }
113
 
114
  global $post;
115
-
 
 
116
  if ( $hook == 'post-new.php' || $hook == 'post.php') {
117
- if ( 'attachment' !== $post->post_type) {
118
  wp_enqueue_script( 'seopress-cpt-tabs-js', plugins_url( 'assets/js/seopress-tabs2.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
119
- wp_enqueue_script( 'seopress-cpt-counters-js', plugins_url( 'assets/js/seopress-counters.js', __FILE__ ), array( 'jquery' ) );
 
 
 
 
120
  wp_enqueue_script( 'seopress-media-uploader-js', plugins_url('assets/js/seopress-media-uploader.js', __FILE__), array('jquery'), '', false );
121
  wp_enqueue_media();
122
 
@@ -132,7 +198,15 @@ add_action('admin_enqueue_scripts', 'seopress_add_admin_options_scripts', 10, 1)
132
 
133
  add_filter( 'admin_body_class', 'seopress_admin_body_class' );
134
  function seopress_admin_body_class( $classes ) {
135
- if (isset($_GET['page']) && ($_GET['page'] == 'seopress-option' )) {
 
 
 
 
 
 
 
 
136
  return $classes."seopress-styles";
137
  }
138
  }
@@ -151,10 +225,13 @@ function seopress_plugin_action_links($links, $file) {
151
  }
152
 
153
  if ($file == $this_plugin) {
154
- $settings_link = '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=seopress-option">'.__("Settings","wp-seopress").'</a>';
155
  $website_link = '<a href="http://seopress.org/" target="_blank">'.__("SEOPress.org","wp-seopress").'</a>';
156
- $pro_link = '<a href="http://seopress.org/pro" style="color:#a00;font-weight:bold" target="_blank">'.__("GO PRO!","wp-seopress").'</a>';
157
- array_unshift($links, $settings_link, $website_link, $pro_link);
 
 
 
158
  }
159
 
160
  return $links;
@@ -169,13 +246,14 @@ function seopress_get_post_types() {
169
 
170
  $args = array(
171
  'show_ui' => true,
 
172
  );
173
 
174
  $output = 'objects'; // names or objects, note names is the default
175
  $operator = 'and'; // 'and' or 'or'
176
 
177
  $post_types = get_post_types( $args, $output, $operator );
178
- unset($post_types['attachment']);
179
  return $post_types;
180
  }
181
 
@@ -208,7 +286,7 @@ function seopress_xml_sitemap_general_enable_option() {
208
  return $seopress_xml_sitemap_general_enable_option['seopress_xml_sitemap_general_enable'];
209
  }
210
  }
211
- };
212
 
213
  function seopress_xml_sitemap_post_types_list_option() {
214
  $seopress_xml_sitemap_post_types_list_option = get_option("seopress_xml_sitemap_option_name");
@@ -219,7 +297,7 @@ function seopress_xml_sitemap_post_types_list_option() {
219
  return $seopress_xml_sitemap_post_types_list_option['seopress_xml_sitemap_post_types_list'];
220
  }
221
  }
222
- };
223
 
224
  function seopress_xml_sitemap_taxonomies_list_option() {
225
  $seopress_xml_sitemap_taxonomies_list_option = get_option("seopress_xml_sitemap_option_name");
@@ -230,7 +308,7 @@ function seopress_xml_sitemap_taxonomies_list_option() {
230
  return $seopress_xml_sitemap_taxonomies_list_option['seopress_xml_sitemap_taxonomies_list'];
231
  }
232
  }
233
- };
234
 
235
  //Rewrite Rules for XML Sitemap
236
  if (seopress_xml_sitemap_general_enable_option() =='1') {
@@ -242,17 +320,17 @@ if (seopress_xml_sitemap_general_enable_option() =='1') {
242
  function seopress_xml_sitemap_rewrite() {
243
 
244
  //XML Index
245
- add_rewrite_rule( '^sitemaps$', 'index.php?seopress_sitemap=1', 'top' );
246
 
247
  //XSL Sitemap
248
- add_rewrite_rule( '^sitemaps_xsl$', 'index.php?seopress_sitemap_xsl=1', 'top' );
249
 
250
  //CPT
251
  if (seopress_xml_sitemap_post_types_list_option() !='') {
252
  foreach (seopress_xml_sitemap_post_types_list_option() as $cpt_key => $cpt_value) {
253
  foreach ($cpt_value as $_cpt_key => $_cpt_value) {
254
  if($_cpt_value =='1') {
255
- add_rewrite_rule( 'sitemaps/'.$cpt_key.'/?$', 'index.php?seopress_cpt='.$cpt_key, 'top' );
256
  }
257
  }
258
  }
@@ -263,7 +341,7 @@ if (seopress_xml_sitemap_general_enable_option() =='1') {
263
  foreach (seopress_xml_sitemap_taxonomies_list_option() as $tax_key => $tax_value) {
264
  foreach ($tax_value as $_tax_key => $_tax_value) {
265
  if($_tax_value =='1') {
266
- add_rewrite_rule( 'sitemaps/'.$tax_key.'/?$', 'index.php?seopress_tax='.$tax_key, 'top' );
267
  }
268
  }
269
  }
@@ -308,7 +386,64 @@ if (seopress_xml_sitemap_general_enable_option() =='1') {
308
  }
309
  }
310
 
 
 
 
311
 
312
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
 
314
  ?>
4
  Plugin Name: SEOPress
5
  Plugin URI: http://seopress.org/
6
  Description: The best SEO plugin.
7
+ Version: 1.0
8
  Author: Benjamin DENIS
9
  Author URI: http://seopress.org/
10
  License: GPLv2
34
  exit;
35
  }
36
 
37
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
38
+ //Tracking
39
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
40
+ require_once __DIR__ . '/wpgod/vendor/autoload.php';
41
+
42
+ use WPGodWpseopress\WPGod;
43
+
44
+ $wpgod3545d44c7f14185 = new WPGod(
45
+ array(
46
+ "type_development" => "plugin",
47
+ "plugin_file" => plugin_basename(__FILE__),
48
+ "basename" => dirname(plugin_basename(__FILE__)),
49
+ "token" => "3545d44c7f14185a1bd17412521e5356b60065c0",
50
+ "prevent_user" => true,
51
+ "name_transient" => "wpgod_3545d44c7f14185a1bd17412",
52
+ "rules_ignore" => array(
53
+
54
+ ),
55
+ "environment" => 60
56
+ )
57
+ );
58
+ $wpgod3545d44c7f14185->execute();
59
+
60
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
61
+ //Hooks activation
62
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
63
+
64
  function seopress_activation() {
65
  add_option( 'seopress_activated', 'yes' );
66
  flush_rewrite_rules();
79
  //Define
80
  ///////////////////////////////////////////////////////////////////////////////////////////////////
81
 
82
+ define( 'SEOPRESS_VERSION', '1.0' );
83
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
84
 
85
  ///////////////////////////////////////////////////////////////////////////////////////////////////
94
  require_once dirname( __FILE__ ) . '/inc/admin/admin.php';
95
  require_once dirname( __FILE__ ) . '/inc/admin/admin-metaboxes.php';
96
  require_once dirname( __FILE__ ) . '/inc/admin/ajax.php';
97
+ require_once dirname( __FILE__ ) . '/inc/admin/admin-header.php';
98
+
99
+ if(current_user_can('edit_posts')) {
100
+ require_once dirname( __FILE__ ) . '/inc/admin/adminbar.php';
101
+ }
102
  }
103
 
104
  require_once dirname( __FILE__ ) . '/inc/functions/options.php';
114
  wp_register_style( 'seopress-admin', plugins_url('assets/css/seopress.css', __FILE__));
115
  wp_enqueue_style( 'seopress-admin' );
116
 
117
+ //Toggle JS
118
+ if (isset($_GET['page']) && ($_GET['page'] == 'seopress-option') ) {
119
+ wp_enqueue_script( 'seopress-toggle-ajax', plugins_url( 'assets/js/seopress-dashboard.js', __FILE__ ), array( 'jquery' ), '', true );
120
+
121
+ $seopress_toggle_features = array(
122
+ 'seopress_nonce' => wp_create_nonce('seopress_toggle_features_nonce'),
123
+ 'seopress_toggle_features' => admin_url( 'admin-ajax.php'),
124
+ );
125
+ wp_localize_script( 'seopress-toggle-ajax', 'seopressAjaxToggleFeatures', $seopress_toggle_features );
126
+ }
127
+
128
+ //Migration
129
+ if (isset($_GET['page']) && ($_GET['page'] == 'seopress-option' || $_GET['page'] == 'seopress-import-export') ) {
130
+ wp_enqueue_script( 'seopress-migrate-ajax', plugins_url( 'assets/js/seopress-yoast-migrate.js', __FILE__ ), array( 'jquery' ), '', true );
131
+
132
+ $seopress_yoast_migrate = array(
133
+ 'seopress_nonce' => wp_create_nonce('seopress_yoast_migrate_nonce'),
134
+ 'seopress_yoast_migration' => admin_url( 'admin-ajax.php'),
135
+ );
136
+ wp_localize_script( 'seopress-migrate-ajax', 'seopressAjaxYoastMigrate', $seopress_yoast_migrate );
137
+ }
138
+
139
  //Tabs
140
  if (isset($_GET['page']) && ($_GET['page'] == 'seopress-titles') ) {
141
  wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
143
 
144
  if (isset($_GET['page']) && ($_GET['page'] == 'seopress-xml-sitemap') ) {
145
  wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs4.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
146
+ }
147
 
148
+ if (isset($_GET['page']) && ($_GET['page'] == 'seopress-xml-sitemap' || $_GET['page'] == 'seopress-pro-page') ) {
149
  wp_enqueue_script( 'seopress-xml-ajax', plugins_url( 'assets/js/seopress-sitemap-ajax.js', __FILE__ ), array( 'jquery' ), '', true );
150
 
151
  $seopress_ajax_permalinks = array(
156
 
157
  }
158
 
159
+ if (isset($_GET['page']) && ($_GET['page'] == 'seopress-google-analytics') ) {
160
+ wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs6.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
161
+ }
162
+
163
  if (isset($_GET['page']) && ($_GET['page'] == 'seopress-advanced') ) {
164
  wp_enqueue_script( 'seopress-admin-tabs-js', plugins_url( 'assets/js/seopress-tabs5.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
165
  }
172
  }
173
 
174
  global $post;
175
+
176
+ $cpt_public_check = get_post_type_object( $post->post_type );
177
+
178
  if ( $hook == 'post-new.php' || $hook == 'post.php') {
179
+ if ( 'attachment' !== $post->post_type ) {
180
  wp_enqueue_script( 'seopress-cpt-tabs-js', plugins_url( 'assets/js/seopress-tabs2.js', __FILE__ ), array( 'jquery-ui-tabs' ) );
181
+ if ( 'seopress_404' !== $post->post_type ) {
182
+ if ($cpt_public_check->public =='1') {
183
+ wp_enqueue_script( 'seopress-cpt-counters-js', plugins_url( 'assets/js/seopress-counters.js', __FILE__ ), array( 'jquery' ) );
184
+ }
185
+ }
186
  wp_enqueue_script( 'seopress-media-uploader-js', plugins_url('assets/js/seopress-media-uploader.js', __FILE__), array('jquery'), '', false );
187
  wp_enqueue_media();
188
 
198
 
199
  add_filter( 'admin_body_class', 'seopress_admin_body_class' );
200
  function seopress_admin_body_class( $classes ) {
201
+ if ((isset($_GET['page']) && ($_GET['page'] == 'seopress-option'))
202
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-titles'))
203
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-xml-sitemap'))
204
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-social'))
205
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-google-analytics'))
206
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-advanced'))
207
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-import-export'))
208
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-pro-page'))
209
+ || (isset($_GET['page']) && ($_GET['page'] == 'seopress-license'))) {
210
  return $classes."seopress-styles";
211
  }
212
  }
225
  }
226
 
227
  if ($file == $this_plugin) {
228
+ $settings_link = '<a href="' . admin_url( 'admin.php?page=seopress-option') . '">'.__("Settings","wp-seopress").'</a>';
229
  $website_link = '<a href="http://seopress.org/" target="_blank">'.__("SEOPress.org","wp-seopress").'</a>';
230
+ if ( !is_plugin_active( 'wp-seopress-pro/seopress-pro.php' )) {
231
+ $pro_link = '<a href="http://seopress.org/pro" style="color:#a00;font-weight:bold" target="_blank">'.__("GO PRO!","wp-seopress").'</a>';
232
+ array_unshift($links, $pro_link);
233
+ }
234
+ array_unshift($links, $settings_link, $website_link);
235
  }
236
 
237
  return $links;
246
 
247
  $args = array(
248
  'show_ui' => true,
249
+ 'public' => true,
250
  );
251
 
252
  $output = 'objects'; // names or objects, note names is the default
253
  $operator = 'and'; // 'and' or 'or'
254
 
255
  $post_types = get_post_types( $args, $output, $operator );
256
+ unset($post_types['attachment'], $post_types['seopress_404']);
257
  return $post_types;
258
  }
259
 
286
  return $seopress_xml_sitemap_general_enable_option['seopress_xml_sitemap_general_enable'];
287
  }
288
  }
289
+ }
290
 
291
  function seopress_xml_sitemap_post_types_list_option() {
292
  $seopress_xml_sitemap_post_types_list_option = get_option("seopress_xml_sitemap_option_name");
297
  return $seopress_xml_sitemap_post_types_list_option['seopress_xml_sitemap_post_types_list'];
298
  }
299
  }
300
+ }
301
 
302
  function seopress_xml_sitemap_taxonomies_list_option() {
303
  $seopress_xml_sitemap_taxonomies_list_option = get_option("seopress_xml_sitemap_option_name");
308
  return $seopress_xml_sitemap_taxonomies_list_option['seopress_xml_sitemap_taxonomies_list'];
309
  }
310
  }
311
+ }
312
 
313
  //Rewrite Rules for XML Sitemap
314
  if (seopress_xml_sitemap_general_enable_option() =='1') {
320
  function seopress_xml_sitemap_rewrite() {
321
 
322
  //XML Index
323
+ add_rewrite_rule( '^sitemaps.xml$', 'index.php?seopress_sitemap=1', 'top' );
324
 
325
  //XSL Sitemap
326
+ add_rewrite_rule( '^sitemaps_xsl.xsl$', 'index.php?seopress_sitemap_xsl=1', 'top' );
327
 
328
  //CPT
329
  if (seopress_xml_sitemap_post_types_list_option() !='') {
330
  foreach (seopress_xml_sitemap_post_types_list_option() as $cpt_key => $cpt_value) {
331
  foreach ($cpt_value as $_cpt_key => $_cpt_value) {
332
  if($_cpt_value =='1') {
333
+ add_rewrite_rule( 'sitemaps/'.$cpt_key.'.xml?$', 'index.php?seopress_cpt='.$cpt_key, 'top' );
334
  }
335
  }
336
  }
341
  foreach (seopress_xml_sitemap_taxonomies_list_option() as $tax_key => $tax_value) {
342
  foreach ($tax_value as $_tax_key => $_tax_value) {
343
  if($_tax_value =='1') {
344
+ add_rewrite_rule( 'sitemaps/'.$tax_key.'.xml?$', 'index.php?seopress_tax='.$tax_key, 'top' );
345
  }
346
  }
347
  }
386
  }
387
  }
388
 
389
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
390
+ // Check if a feature is ON
391
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
392
 
393
+ // Is Titles enable?
394
+ function seopress_get_toggle_titles_option() {
395
+ $seopress_get_toggle_titles_option = get_option("seopress_toggle");
396
+ if ( ! empty ( $seopress_get_toggle_titles_option ) ) {
397
+ foreach ($seopress_get_toggle_titles_option as $key => $seopress_get_toggle_titles_value)
398
+ $options[$key] = $seopress_get_toggle_titles_value;
399
+ if (isset($seopress_get_toggle_titles_option['toggle-titles'])) {
400
+ return $seopress_get_toggle_titles_option['toggle-titles'];
401
+ }
402
+ }
403
+ }
404
+ // Is Social enable?
405
+ function seopress_get_toggle_social_option() {
406
+ $seopress_get_toggle_social_option = get_option("seopress_toggle");
407
+ if ( ! empty ( $seopress_get_toggle_social_option ) ) {
408
+ foreach ($seopress_get_toggle_social_option as $key => $seopress_get_toggle_social_value)
409
+ $options[$key] = $seopress_get_toggle_social_value;
410
+ if (isset($seopress_get_toggle_social_option['toggle-social'])) {
411
+ return $seopress_get_toggle_social_option['toggle-social'];
412
+ }
413
+ }
414
+ }
415
+ // Is XML Sitemap enable?
416
+ function seopress_get_toggle_xml_sitemap_option() {
417
+ $seopress_get_toggle_xml_sitemap_option = get_option("seopress_toggle");
418
+ if ( ! empty ( $seopress_get_toggle_xml_sitemap_option ) ) {
419
+ foreach ($seopress_get_toggle_xml_sitemap_option as $key => $seopress_get_toggle_xml_sitemap_value)
420
+ $options[$key] = $seopress_get_toggle_xml_sitemap_value;
421
+ if (isset($seopress_get_toggle_xml_sitemap_option['toggle-xml-sitemap'])) {
422
+ return $seopress_get_toggle_xml_sitemap_option['toggle-xml-sitemap'];
423
+ }
424
+ }
425
+ }
426
+ // Is Google Analytics enable?
427
+ function seopress_get_toggle_google_analytics_option() {
428
+ $seopress_get_toggle_google_analytics_option = get_option("seopress_toggle");
429
+ if ( ! empty ( $seopress_get_toggle_google_analytics_option ) ) {
430
+ foreach ($seopress_get_toggle_google_analytics_option as $key => $seopress_get_toggle_google_analytics_value)
431
+ $options[$key] = $seopress_get_toggle_google_analytics_value;
432
+ if (isset($seopress_get_toggle_google_analytics_option['toggle-google-analytics'])) {
433
+ return $seopress_get_toggle_google_analytics_option['toggle-google-analytics'];
434
+ }
435
+ }
436
+ }
437
+ // Is Advanced enable?
438
+ function seopress_get_toggle_advanced_option() {
439
+ $seopress_get_toggle_advanced_option = get_option("seopress_toggle");
440
+ if ( ! empty ( $seopress_get_toggle_advanced_option ) ) {
441
+ foreach ($seopress_get_toggle_advanced_option as $key => $seopress_get_toggle_advanced_value)
442
+ $options[$key] = $seopress_get_toggle_advanced_value;
443
+ if (isset($seopress_get_toggle_advanced_option['toggle-advanced'])) {
444
+ return $seopress_get_toggle_advanced_option['toggle-advanced'];
445
+ }
446
+ }
447
+ }
448
 
449
  ?>
wpgod/composer-temp.phar ADDED
Binary file
wpgod/composer.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Gmulti/WPGod",
3
+ "description": "Library Tracker errors WordPress",
4
+ "license": "GPL",
5
+ "authors": [
6
+ {
7
+ "name": "Thomas DENEULIN",
8
+ "email": "contact@wp-god.com"
9
+ }
10
+ ],
11
+ "autoload": {
12
+ "psr-4": {
13
+ "WPGodWpseopress\\": "src/WPGod/"
14
+ }
15
+ }
16
+ }
wpgod/composer.phar ADDED
Binary file
wpgod/public/js/send-error.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function($){
2
+ $.post(
3
+ configGodError.url,
4
+ {
5
+ 'action': configGodError.action
6
+ }
7
+ );
8
+ });
wpgod/public/js/send-tracking-general.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function($){
2
+ $.post(
3
+ configGodTrackingGeneral.url,
4
+ {
5
+ 'action': configGodTrackingGeneral.action
6
+ }
7
+ );
8
+ });
wpgod/src/WPGod/Handler/GodAdminNoticeHandler.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Handler;
4
+
5
+ use WPGodWpseopress\Services\GodAbstractService;
6
+ use WPGodWpseopress\Helpers\GodTypeDevelopment;
7
+ use WPGodWpseopress\Models\HooksInterface;
8
+ use WPGodWpseopress\WPGod;
9
+
10
+ /**
11
+ *
12
+ * GodAdminNoticeHandler
13
+ *
14
+ * @author Thomas DENEULIN <contact@wp-god.com>
15
+ * @version 1.0.0
16
+ * @since 1.0.0
17
+ */
18
+ class GodAdminNoticeHandler extends GodAbstractService implements HooksInterface {
19
+
20
+ public function __construct($services = array(), $helpers = array(), $preventUser = false){
21
+
22
+ parent::__construct($services, $helpers);
23
+
24
+ $this->preventUser = $preventUser;
25
+
26
+ }
27
+
28
+
29
+ public function hooks(){
30
+ if($this->preventUser){
31
+ add_action( 'admin_notices', array( $this, 'preventMonitoring' ) );
32
+ add_action( 'admin_init', array( $this, 'checkForMonitoring' ) );
33
+ }
34
+ }
35
+
36
+
37
+ public function checkForMonitoring() {
38
+
39
+
40
+
41
+ if ( ! current_user_can( 'manage_options' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
42
+ return;
43
+ }
44
+
45
+
46
+ if(isset($_GET["wpgod_seopress_action"]) &&
47
+ in_array($_GET["wpgod_seopress_action"], array("opt_in", "opt_out"))){
48
+
49
+ $hide_notice = get_option( 'wpgod_seopress_tracking_notice' );
50
+
51
+ if( $hide_notice ) {
52
+ return;
53
+ }
54
+
55
+ update_option( 'wpgod_seopress_tracking_notice', 1);
56
+
57
+ switch ($_GET["wpgod_seopress_action"]) {
58
+ case 'opt_in':
59
+ update_option("wpgod_seopress_allow_tracking", 1);
60
+ break;
61
+
62
+ case "opt_out":
63
+ update_option("wpgod_seopress_allow_tracking", 0);
64
+ break;
65
+ }
66
+ }
67
+ }
68
+
69
+
70
+ public function preventMonitoring(){
71
+ $hide_notice = get_option( 'wpgod_seopress_tracking_notice' );
72
+
73
+ if( $hide_notice ) {
74
+ return;
75
+ }
76
+
77
+ if( get_option( 'wpgod_seopress_allow_tracking', false ) ) {
78
+ return;
79
+ }
80
+
81
+ if( ! current_user_can( 'manage_options' ) ) {
82
+ return;
83
+ }
84
+
85
+ if(
86
+ stristr( network_site_url( '/' ), 'dev' ) !== false ||
87
+ stristr( network_site_url( '/' ), 'localhost' ) !== false ||
88
+ stristr( network_site_url( '/' ), ':8888' ) !== false
89
+ ) {
90
+ update_option( 'wpgod_seopress_tracking_notice', '1' );
91
+ } else {
92
+ $optinUrl = add_query_arg( 'wpgod_seopress_action', "opt_in" );
93
+ $optoutUrl = add_query_arg( 'wpgod_seopress_action', "opt_out" );
94
+
95
+ ?>
96
+ <div class="updated">
97
+ <p>
98
+ Allow to track plugin SEOPress usage ? . No sensitive data is tracked.
99
+ &nbsp;<a href="<?php echo esc_url( $optinUrl ) ?>" class="button-secondary">Allow</a>
100
+ &nbsp;<a href="<?php echo esc_url( $optoutUrl ) ?>" class="button-secondary">Do not allow</a>
101
+ </p>
102
+ </div>
103
+
104
+ <?php
105
+ }
106
+ }
107
+
108
+
109
+ }
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
wpgod/src/WPGod/Handler/GodErrorHandler.php ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Handler;
4
+
5
+ use WPGodWpseopress\Models\GodHandlerInterface;
6
+ use WPGodWpseopress\Services\GodAbstractService;
7
+ use WPGodWpseopress\Helpers\GodTypeDevelopment;
8
+
9
+ /**
10
+ *
11
+ * GodErrorHandler
12
+ *
13
+ * @author Thomas DENEULIN <contact@wp-god.com>
14
+ * @version 1.0.0
15
+ * @since 1.0.0
16
+ */
17
+ class GodErrorHandler extends GodAbstractService implements GodHandlerInterface{
18
+
19
+ public static $functionExclude = array(
20
+ "getBackTrace",
21
+ "register_error",
22
+ "godErrorHandler",
23
+ "godErrorShutdownHandler",
24
+ "verifyExistErrors"
25
+ );
26
+
27
+ public function __construct($services = array(), $helpers = array(), $pause = false){
28
+
29
+ parent::__construct($services, $helpers);
30
+
31
+ if(!$pause):
32
+ set_error_handler(array($this, 'godErrorHandler'));
33
+ register_shutdown_function(array($this, 'godErrorShutdownHandler'));
34
+
35
+ endif;
36
+ }
37
+
38
+
39
+ public function checkLibraryPlugin($file){
40
+
41
+ $pluginDir = dirname(str_replace(WP_PLUGIN_DIR, "", $file));
42
+ $namespaceName = "\WPGod" . ucfirst(str_replace("/", "", $pluginDir));
43
+ $class = $namespaceName . "\Services\GodApi";
44
+ if(file_exists(WP_PLUGIN_DIR . $pluginDir . '/wpgod/src/WPGod/Services/GodApi.php') &&
45
+ method_exists($class, "getNameTransientOtherStatic") &&
46
+ method_exists($class, "getNameTransientAlreadyCheck")){
47
+ return array(
48
+ "already_check" => $class::getNameTransientAlreadyCheck(),
49
+ "other" => $class::getNameTransientOtherStatic()
50
+ );
51
+ }
52
+
53
+ return false;
54
+
55
+ }
56
+
57
+ public function godErrorHandler($code, $message, $file, $line, $ctx = array()) {
58
+ $serializeParams = array(
59
+ "file" => $file,
60
+ "code" => $code,
61
+ "line" => $line,
62
+ "message" => $message
63
+ );
64
+ if($this->getService("GodAuthorizeError")->authorizeHandler($file, $code) &&
65
+ !$this->getService("GodAuthorizeError")->checkAlreadyTrack($serializeParams) ) {
66
+
67
+ $this->code = $code;
68
+ $this->message = $message;
69
+ $this->file = $file;
70
+ $this->line = $line;
71
+ $this->ctx = $ctx;
72
+
73
+ $this->registerError();
74
+
75
+ $transients = $this->checkLibraryPlugin($file);
76
+
77
+ if($transients && !$this->getService("GodAuthorizeError")->checkAlreadyTrack($serializeParams, $transients["already_check"])){
78
+ $this->registerError($transients["other"]);
79
+ }
80
+
81
+ }
82
+ }
83
+
84
+ protected function registerError($nameTransient = null){
85
+
86
+ $this->file = addslashes($this->file);
87
+
88
+ global $wp_version;
89
+ $locale = get_locale();
90
+ $locale = str_replace('_', '-', $locale);
91
+
92
+
93
+ $pluginData = $this->getHelper("GodEnvironmentInfo")->getPluginData($this->getService("GodApi")->getPluginFile());
94
+
95
+ $version = $this->getService("GodApi")->getVersion();
96
+ if($pluginData){
97
+ $version = $pluginData["plugin_version"];
98
+ }
99
+
100
+ $params = array(
101
+ "file" => $this->file,
102
+ "message" => $this->message,
103
+ "line" => $this->line,
104
+ "code" => $this->code,
105
+ "wp_infos" => array(
106
+ "wp_version" => $wp_version,
107
+ "blog_id" => get_current_blog_id(),
108
+ "wp_local_package" => $locale
109
+ ),
110
+ "server_infos" => $this->getHelper("GodServerInfo")->getInfosServerForSavePost(),
111
+ "version" => $version,
112
+ "home_url" => get_home_url(),
113
+ "php_version" => PHP_VERSION
114
+ );
115
+
116
+ $this->getService("GodApi")->saveError($params, $nameTransient);
117
+ }
118
+
119
+ public function godErrorShutdownHandler(){
120
+
121
+ $last_error = error_get_last();
122
+ if ($last_error !== null) {
123
+ $this->godErrorHandler($last_error['type'], $last_error['message'], $last_error['file'], $last_error['line']);
124
+ }
125
+ }
126
+
127
+ }
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
wpgod/src/WPGod/Handler/GodTrackingHandler.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Handler;
4
+
5
+ use WPGodWpseopress\Services\GodAbstractService;
6
+ use WPGodWpseopress\Helpers\GodTypeDevelopment;
7
+ use WPGodWpseopress\Models\HooksInterface;
8
+ use WPGodWpseopress\WPGod;
9
+
10
+ /**
11
+ *
12
+ * GodTrackingHandler
13
+ *
14
+ * @author Thomas DENEULIN <contact@wp-god.com>
15
+ * @version 1.0.0
16
+ * @since 1.0.0
17
+ */
18
+ class GodTrackingHandler extends GodAbstractService implements HooksInterface {
19
+
20
+ public function __construct($services = array(), $helpers = array(), $pause = false){
21
+
22
+ parent::__construct($services, $helpers);
23
+
24
+ $this->pause = $pause;
25
+
26
+ }
27
+
28
+
29
+ public function hooks(){
30
+ $apiService = $this->getService('GodApi');
31
+
32
+ if(!$this->pause):
33
+ $lastDateCheck = $apiService::getLastCheckTrackingGeneral();
34
+ $intervalTracking = apply_filters("god_interval_tracking", 60 * 60 * 24 * 5);
35
+ $authorizeMonitoring = true;
36
+
37
+ $preventUser = $this->getService("GodApi")->getPreventUser();
38
+
39
+ if($preventUser){
40
+
41
+ $allowTracking = get_option('wpgod_seopress_allow_tracking');
42
+
43
+ if(!$allowTracking){
44
+ $authorizeMonitoring = false;
45
+ }
46
+ }
47
+
48
+ if((!$lastDateCheck || abs(time() - $lastDateCheck) > $intervalTracking) && $authorizeMonitoring){
49
+ $apiService::initLastCheckTrackingGeneral();
50
+ add_action('init', array($this, 'trackingGeneral'), 0);
51
+ add_action( 'wp_ajax_tracking_general', array($this, 'prefix_ajax_tracking_general') );
52
+ add_action( 'wp_ajax_nopriv_tracking_general', array($this, 'prefix_ajax_tracking_general') );
53
+ }
54
+ endif;
55
+ }
56
+
57
+ public function prefix_ajax_tracking_general(){
58
+ $serverInfos = $this->getHelper("GodServerInfo")->getTrackingServerData();
59
+ $wpInfos = $this->getHelper("GodEnvironmentInfo")->getAllDataEnvironment();
60
+ $pluginData = $this->getHelper("GodEnvironmentInfo")->getPluginData($this->getService("GodApi")->getPluginFile());
61
+
62
+ $this->getService("GodApi")->sendTrackingGeneral(array_merge($serverInfos, $wpInfos, $pluginData));
63
+ }
64
+
65
+ public function trackingGeneral(){
66
+ $pluginData = $this->getHelper("GodEnvironmentInfo")->getPluginData($this->getService("GodApi")->getPluginFile());
67
+ if(is_admin()){
68
+ add_action("admin_enqueue_scripts", array($this, "enqueue_script_god"));
69
+ }
70
+ else{
71
+ add_action("wp_enqueue_scripts", array($this, "enqueue_script_god"));
72
+ }
73
+ }
74
+
75
+ public function enqueue_script_god(){
76
+ $url = admin_url("admin-ajax.php");
77
+ $urlRegisterScript = sprintf("%s/%s.js", WPGod::$GOD_PATH_PUBLIC_JS, "send-tracking-general");
78
+ $uniqId = uniqid();
79
+ wp_register_script( $uniqId . '-god-js', $urlRegisterScript, array( 'jquery' ) );
80
+
81
+ $arr = array(
82
+ "url" => $url,
83
+ "action" => "tracking_general"
84
+ );
85
+ wp_localize_script( $uniqId . '-god-js', 'configGodTrackingGeneral', $arr );
86
+
87
+ wp_enqueue_script( $uniqId . '-god-js' );
88
+ }
89
+
90
+
91
+
92
+ }
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
wpgod/src/WPGod/Helpers/GodEnvironmentInfo.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Helpers;
4
+
5
+ use WPGodWpseopress\Models\HelperInterface;
6
+
7
+ /**
8
+ * GodServerInfo
9
+ *
10
+ * @author Thomas DENEULIN <contact@wp-god.com>
11
+ * @version 2.0.0
12
+ * @since 1.0.0
13
+ */
14
+ class GodEnvironmentInfo implements HelperInterface {
15
+
16
+ public function getThemeData(){
17
+ if ( get_bloginfo( 'version' ) < '3.4' ) {
18
+ $themeData = get_theme_data( get_stylesheet_directory() . '/style.css' );
19
+ $theme = $themeData['Name'] . ' ' . $themeData['Version'];
20
+ } else {
21
+ $themeData = wp_get_theme();
22
+ $theme = $themeData->Name . ' ' . $themeData->Version;
23
+ }
24
+
25
+ return array(
26
+ "theme" => $theme,
27
+ "theme_data" => $themeData
28
+ );
29
+ }
30
+
31
+ public function getAllDataEnvironment(){
32
+
33
+ $data = array();
34
+ try {
35
+
36
+ $themeData = $this->getThemeData();
37
+ $data['admin_email'] = get_bloginfo( 'admin_email' );
38
+ $data['locale'] = get_locale();
39
+ $data["multisite"] = is_multisite();
40
+ $data["site_url"] = site_url();
41
+ $data["home_url"] = home_url();
42
+ $data["wp_version"] = get_bloginfo( 'version' );
43
+ $data["permalink_structure"] = get_option( 'permalink_structure' );
44
+ $data["active_theme"] = $themeData["theme"];
45
+
46
+ $data["registered_post_stati"] = implode( ', ', get_post_stati());
47
+ $data["wp_debug"] = defined( 'WP_DEBUG' )? WP_DEBUG : false;
48
+
49
+
50
+ return $data;
51
+
52
+ } catch (\Exception $e) {
53
+ return $data;
54
+ }
55
+
56
+ }
57
+
58
+ public function getPluginData($pluginFile){
59
+ if ( ! function_exists( 'get_plugins' ) ) {
60
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
61
+ }
62
+
63
+ $plugins = get_plugins();
64
+ $active_plugins = get_option( 'active_plugins', array() );
65
+
66
+ $pluginData = null;
67
+ foreach ( $plugins as $plugin_path => $plugin ) {
68
+ if ( ! in_array( $plugin_path, $active_plugins ) || $plugin_path != $pluginFile)
69
+ continue;
70
+
71
+ $pluginData = $plugin;
72
+ break;
73
+ }
74
+
75
+ return array(
76
+ "plugin_version" => $pluginData['Version']
77
+ );
78
+ }
79
+
80
+ public function getPluginDataMultisite($pluginFile){
81
+
82
+ if ( !is_multisite() ){
83
+ return false;
84
+ }
85
+
86
+ $plugins = wp_get_active_network_plugins();
87
+ $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
88
+ $pluginData = null;
89
+
90
+ foreach ( $plugins as $plugin_path ) {
91
+ $plugin_base = plugin_basename( $plugin_path );
92
+
93
+ if ( ! array_key_exists( $plugin_base, $active_plugins ) || $plugin_path != $pluginFile )
94
+ continue;
95
+
96
+ $pluginData = $plugin;
97
+ break;
98
+ }
99
+
100
+ return array(
101
+ "plugin_version" => $pluginData['Version']
102
+ );
103
+ }
104
+
105
+ }
106
+
107
+
wpgod/src/WPGod/Helpers/GodError.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Helpers;
4
+
5
+ use WPGodWpseopress\Models\HelperInterface;
6
+
7
+ /**
8
+ * GodError
9
+ *
10
+ * @author Thomas DENEULIN <contact@wp-god.com>
11
+ * @version 2.0.0
12
+ * @since 1.0.0
13
+ */
14
+ class GodError implements HelperInterface {
15
+
16
+ protected $errors;
17
+
18
+ protected $froms;
19
+
20
+ public function __construct(){
21
+ $this->errors = apply_filters("_god_list_errors",
22
+ array(
23
+ 0 => 'E_UNKNOWN',
24
+ 1 => 'E_ERROR',
25
+ 2 => 'E_WARNING',
26
+ 4 => 'E_PARSE',
27
+ 8 => 'E_NOTICE',
28
+ 16 => 'E_CORE_ERROR',
29
+ 32 => 'E_CORE_WARNING',
30
+ 64 => 'E_COMPILE_ERROR',
31
+ 128 => 'E_COMPILE_WARNING',
32
+ 256 => 'E_USER_ERROR',
33
+ 512 => 'E_USER_WARNING',
34
+ 1024 => 'E_USER_NOTICE',
35
+ 2048 => 'E_STRICT',
36
+ 4096 => 'E_RECOVERABLE_ERROR',
37
+ 8192 => 'E_DEPRECATED',
38
+ 16384 => 'E_USER_DEPRECATED',
39
+ 32767 => 'E_ALL'
40
+ )
41
+ );
42
+
43
+ }
44
+
45
+ public function getErrors(){
46
+ return $this->errors;
47
+ }
48
+
49
+ public function getFroms(){
50
+ return $this->froms;
51
+ }
52
+
53
+
54
+ public function getStringError($errno){
55
+ $errors = self::getErrors();
56
+
57
+ if(array_key_exists($errno, $errors)){
58
+ return $errors[$errno];
59
+ }
60
+
61
+ return 'E_UNKNOWN';
62
+ }
63
+
64
+ }
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
wpgod/src/WPGod/Helpers/GodServerInfo.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Helpers;
4
+
5
+ use WPGodWpseopress\Models\HelperInterface;
6
+
7
+ /**
8
+ * GodServerInfo
9
+ *
10
+ * @author Thomas DENEULIN <contact@wp-god.com>
11
+ * @version 2.0.0
12
+ * @since 1.0.0
13
+ */
14
+ class GodServerInfo implements HelperInterface {
15
+
16
+
17
+ public function getInfosServerForSavePost(){
18
+ $data["is_ajax"] = (defined('DOING_AJAX') && DOING_AJAX) ? true : false;
19
+ $data['HTTP_HOST'] = esc_html( $_SERVER['HTTP_HOST'] );
20
+ $data['SERVER_ADDR'] = $_SERVER['SERVER_ADDR'];
21
+ $data['SERVER_PORT'] = $_SERVER['SERVER_PORT'];
22
+ $data['REQUEST_URI'] = str_replace( '&amp;nbsp;', '&nbsp;', esc_html( $_SERVER['REQUEST_URI'] ) );
23
+ $data["php_safe_mode"] = ini_get( 'safe_mode' );
24
+ $data["php_memory_limit"] = ini_get( 'memory_limit' );
25
+ $data["php_upload_max_size"] = ini_get( 'upload_max_filesize' );
26
+ $data["php_post_max_size"] = ini_get( 'post_max_size' );
27
+ $data["php_upload_max_filesize"] = ini_get( 'upload_max_filesize' );
28
+ $data["php_time_limit"] = ini_get( 'max_execution_time' );
29
+ $data["php_max_input_vars"] = ini_get( 'max_input_vars' );
30
+ $data["php_arg_separator"] = ini_get( 'arg_separator.output' );
31
+ $data["php_allow_url_file_open"] = ini_get( 'allow_url_fopen' );
32
+ $data["wp_memory_limit"] = WP_MEMORY_LIMIT;
33
+ $data["session"] = isset( $_SESSION );
34
+ $data["cookies"] = ini_get( 'session.use_cookies' );
35
+ $data["only_cookies"] = ini_get( 'session.use_only_cookies' );
36
+ $data["display_errors"] = ini_get( 'display_errors' );
37
+ $data["fsockopen"] = function_exists( 'fsockopen' );
38
+ $data["curl"] = function_exists( 'curl_init' );
39
+ $data["soap"] = class_exists( 'SoapClient');
40
+ $data["suhosin"] = extension_loaded( 'suhosin' );
41
+
42
+ $data["active_plugins"] = array();
43
+ $data["network_active_plugins"] = array();
44
+
45
+ if ( ! function_exists( 'get_plugins' ) ) {
46
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
47
+ }
48
+ $plugins = get_plugins();
49
+ $active_plugins = get_option( 'active_plugins', array() );
50
+
51
+ $i = 0;
52
+ foreach ( $plugins as $plugin_path => $plugin ) {
53
+ if ( ! in_array( $plugin_path, $active_plugins ) )
54
+ continue;
55
+ $data["active_plugins"][$i]["name"] = $plugin['Name'];
56
+ $data["active_plugins"][$i]["version"] = $plugin['Version'];
57
+ $i++;
58
+ }
59
+
60
+ if ( is_multisite() ){
61
+ $i = 0;
62
+ $plugins = wp_get_active_network_plugins();
63
+ $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
64
+
65
+ foreach ( $plugins as $plugin_path ) {
66
+ $plugin_base = plugin_basename( $plugin_path );
67
+
68
+ if ( ! array_key_exists( $plugin_base, $active_plugins ) )
69
+ continue;
70
+
71
+ $plugin = get_plugin_data( $plugin_path );
72
+
73
+ $data["network_active_plugins"][$i]["name"] = $plugin['Name'];
74
+ $data["network_active_plugins"][$i]["version"] = $plugin['Version'];
75
+ $i++;
76
+ }
77
+ }
78
+
79
+
80
+
81
+ return $data;
82
+ }
83
+
84
+ public function getTrackingServerData(){
85
+
86
+ $data = array();
87
+ if(function_exists("mysql_get_server_info")){
88
+ $data["mysql_version"] = mysql_get_server_info();
89
+ }
90
+
91
+ $data["web_server"] = $_SERVER['SERVER_SOFTWARE'];
92
+ $data['server_addr'] = $_SERVER['SERVER_ADDR'];
93
+ $data["php_version"] = PHP_VERSION;
94
+
95
+ return $data;
96
+ }
97
+
98
+
99
+ }
100
+
101
+
wpgod/src/WPGod/Helpers/GodTypeDevelopment.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Helpers;
4
+
5
+
6
+ /**
7
+ * GodTypeDevelopment
8
+ *
9
+ * @author Thomas DENEULIN <contact@wp-god.com>
10
+ * @version 2.0.0
11
+ * @since 1.0.0
12
+ */
13
+ abstract class GodTypeDevelopment {
14
+
15
+ const PLUGIN = "plugin";
16
+ const THEME = "theme";
17
+ const SITE = "site";
18
+ const MU_PLUGIN = "mu-plugin";
19
+ }
20
+
21
+
wpgod/src/WPGod/Models/GodHandlerInterface.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ namespace WPGodWpseopress\Models;
5
+
6
+ /**
7
+ *
8
+ * @version 1.0.0
9
+ * @since 1.0.0
10
+ *
11
+ * @author Thomas DENEULIN <contact@wp-god.com>
12
+ *
13
+ */
14
+ interface GodHandlerInterface{
15
+ /**
16
+ *
17
+ * @version 1.0.0
18
+ * @version 1.0.0
19
+ * @access public
20
+ *
21
+ * @return void
22
+ */
23
+ public function godErrorHandler($code, $message, $file, $line, $ctx);
24
+
25
+ /**
26
+ *
27
+ * @version 1.0.0
28
+ * @version 1.0.0
29
+ * @access public
30
+ *
31
+ * @return void
32
+ */
33
+ public function godErrorShutdownHandler();
34
+ }
wpgod/src/WPGod/Models/HelperInterface.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ namespace WPGodWpseopress\Models;
5
+
6
+ /**
7
+ *
8
+ * @version 2.0.0
9
+ * @since 2.0.0
10
+ *
11
+ * @author Thomas DENEULIN <contact@wp-god.com>
12
+ *
13
+ */
14
+ interface HelperInterface{}
wpgod/src/WPGod/Models/HooksInterface.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ namespace WPGodWpseopress\Models;
5
+
6
+ /**
7
+ *
8
+ * @version 1.0.0
9
+ * @since 1.0.0
10
+ *
11
+ * @author Thomas DENEULIN <contact@wp-god.com>
12
+ *
13
+ */
14
+ interface HooksInterface{
15
+ /**
16
+ * Execute hooks
17
+ *
18
+ * @version 1.0.0
19
+ * @version 1.0.0
20
+ * @access public
21
+ *
22
+ * @return void
23
+ */
24
+ public function hooks();
25
+ }
wpgod/src/WPGod/Models/ServiceInterface.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ namespace WPGodWpseopress\Models;
5
+
6
+ /**
7
+ *
8
+ * @version 1.0.0
9
+ * @since 1.0.0
10
+ *
11
+ * @author Thomas DENEULIN <contact@wp-god.com>
12
+ *
13
+ */
14
+ interface ServiceInterface{}
wpgod/src/WPGod/Models/Specification/AbstractSpecification.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WPGodWpseopress\Models\Specification;
3
+
4
+ use WPGodWpseopress\Models\Specification\SpecificationInterface;
5
+ use WPGodWpseopress\Models\Specification\AndX;
6
+ use WPGodWpseopress\Models\Specification\OrX;
7
+ use WPGodWpseopress\Models\Specification\NotX;
8
+
9
+ /**
10
+ * @version 1.0.0
11
+ * @since 1.0.0
12
+ *
13
+ * @author Thomas DENEULIN <contact@wp-god.com>
14
+ */
15
+ abstract class AbstractSpecification implements SpecificationInterface
16
+ {
17
+ /**
18
+ *
19
+ * @param $item
20
+ *
21
+ * @return bool
22
+ */
23
+ abstract public function isSatisfiedBy($item);
24
+
25
+ /**
26
+ *
27
+ * @param SpecificationInterface $spec
28
+ *
29
+ * @return SpecificationInterface
30
+ */
31
+ public function andX(SpecificationInterface $spec)
32
+ {
33
+ return new AndX($this, $spec);
34
+ }
35
+
36
+ /**
37
+ *
38
+ * @param SpecificationInterface $spec
39
+ *
40
+ * @return SpecificationInterface
41
+ */
42
+ public function orX(SpecificationInterface $spec)
43
+ {
44
+ return new OrX($this, $spec);
45
+ }
46
+
47
+ /**
48
+ *
49
+ * @return SpecificationInterface
50
+ */
51
+ public function notX()
52
+ {
53
+ return new NotX($this);
54
+ }
55
+ }
wpgod/src/WPGod/Models/Specification/AndX.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WPGodWpseopress\Models\Specification;
3
+
4
+ use WPGodWpseopress\Models\Specification\AbstractSpecification;
5
+
6
+ /**
7
+ * @version 1.0.0
8
+ * @since 1.0.0
9
+ *
10
+ * @author Thomas DENEULIN <contact@wp-god.com>
11
+ */
12
+ class AndX extends AbstractSpecification
13
+ {
14
+
15
+ protected $left;
16
+ protected $right;
17
+
18
+ /**
19
+ *
20
+ * @param SpecificationInterface $left
21
+ * @param SpecificationInterface $right
22
+ */
23
+ public function __construct(SpecificationInterface $left, SpecificationInterface $right)
24
+ {
25
+ $this->left = $left;
26
+ $this->right = $right;
27
+ }
28
+
29
+ /**
30
+ *
31
+ * @param $item
32
+ *
33
+ * @return bool
34
+ */
35
+ public function isSatisfiedBy($item)
36
+ {
37
+ return $this->left->isSatisfiedBy($item) && $this->right->isSatisfiedBy($item);
38
+ }
39
+ }
wpgod/src/WPGod/Models/Specification/ContainsSpecification.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Models\Specification;
4
+
5
+ use WPGodWpseopress\Models\Specification\AbstractSpecification;
6
+
7
+ class ContainsSpecification extends AbstractSpecification
8
+ {
9
+ public function __construct($string){
10
+ $this->string = $string;
11
+ }
12
+
13
+ public function isSatisfiedBy($item){
14
+ $pos = strpos($item, $this->string);
15
+
16
+ if ($pos === false) {
17
+ return false;
18
+ } else {
19
+ return true;
20
+ }
21
+ }
22
+ }
wpgod/src/WPGod/Models/Specification/EqualsSpecification.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Models\Specification;
4
+
5
+ use WPGodWpseopress\Models\Specification\AbstractSpecification;
6
+
7
+ class EqualsSpecification extends AbstractSpecification
8
+ {
9
+ public function __construct($string){
10
+ $this->string = $string;
11
+ }
12
+
13
+ public function isSatisfiedBy($item){
14
+ return $this->string == $item;
15
+ }
16
+ }
wpgod/src/WPGod/Models/Specification/NotX.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WPGodWpseopress\Models\Specification;
3
+
4
+ use WPGodWpseopress\Models\Specification\AbstractSpecification;
5
+
6
+ /**
7
+ * @version 1.0.0
8
+ * @since 1.0.0
9
+ *
10
+ * @author Thomas DENEULIN <contact@wp-god.com>
11
+ */
12
+ class NotX extends AbstractSpecification
13
+ {
14
+
15
+ protected $specification;
16
+
17
+ /**
18
+ *
19
+ * @param SpecificationInterface $specification
20
+ */
21
+ public function __construct(SpecificationInterface $specification)
22
+ {
23
+ $this->specification = $specification;
24
+ }
25
+
26
+ /**
27
+ *
28
+ * @param $item
29
+ *
30
+ * @return bool
31
+ */
32
+ public function isSatisfiedBy($item)
33
+ {
34
+ return !$this->specification->isSatisfiedBy($item);
35
+ }
36
+ }
wpgod/src/WPGod/Models/Specification/OrX.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WPGodWpseopress\Models\Specification;
3
+
4
+ use WPGodWpseopress\Models\Specification\AbstractSpecification;
5
+
6
+ /**
7
+ * @version 1.0.0
8
+ * @since 1.0.0
9
+ *
10
+ * @author Thomas DENEULIN <contact@wp-god.com>
11
+ */
12
+ class OrX extends AbstractSpecification
13
+ {
14
+
15
+ protected $left;
16
+
17
+ protected $right;
18
+
19
+ /**
20
+ *
21
+ * @param SpecificationInterface $left
22
+ * @param SpecificationInterface $right
23
+ */
24
+ public function __construct(SpecificationInterface $left, SpecificationInterface $right)
25
+ {
26
+ $this->left = $left;
27
+ $this->right = $right;
28
+ }
29
+
30
+ /**
31
+ *
32
+ * @param $item
33
+ *
34
+ * @return bool
35
+ */
36
+ public function isSatisfiedBy($item)
37
+ {
38
+ return $this->left->isSatisfiedBy($item) || $this->right->isSatisfiedBy($item);
39
+ }
40
+ }
wpgod/src/WPGod/Models/Specification/SpecificationInterface.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WPGodWpseopress\Models\Specification;
3
+
4
+
5
+ /**
6
+ * @version 1.0.0
7
+ * @since 1.0.0
8
+ *
9
+ * @author Thomas DENEULIN <contact@wp-god.com>
10
+ */
11
+ interface SpecificationInterface
12
+ {
13
+ /**
14
+ * @version 1.0.0
15
+ * @since 1.0.0
16
+ *
17
+ *
18
+ * @return bool
19
+ */
20
+ public function isSatisfiedBy($item);
21
+
22
+ /**
23
+ * @version 1.0.0
24
+ * @since 1.0.0
25
+ *
26
+ * @param SpecificationInterface $spec
27
+ */
28
+ public function andX(SpecificationInterface $spec);
29
+
30
+ /**
31
+ * @version 1.0.0
32
+ * @since 1.0.0
33
+ *
34
+ * @param SpecificationInterface $spec
35
+ */
36
+ public function orX(SpecificationInterface $spec);
37
+
38
+ /**
39
+ * @version 1.0.0
40
+ * @since 1.0.0
41
+ */
42
+ public function notX();
43
+ }
wpgod/src/WPGod/Services/GodAbstractService.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace WPGodWpseopress\Services;
3
+
4
+ use WPGodWpseopress\Models\ServiceInterface;
5
+ use WPGodWpseopress\Models\HelperInterface;
6
+
7
+ /**
8
+ * @version 2.0.0
9
+ * @since 2.0.0
10
+ *
11
+ * @author Thomas DENEULIN <contact@wp-god.com>
12
+ */
13
+ abstract class GodAbstractService
14
+ {
15
+
16
+ protected $services;
17
+
18
+ protected $helpers;
19
+
20
+ public function __construct($services = array(), $helpers = array()){
21
+ $this->setObjects($services);
22
+ $this->setObjects($helpers);
23
+ }
24
+
25
+ public function setObjects($objects){
26
+
27
+ foreach ($objects as $key => $value) {
28
+ $nameClass = join('', array_slice(explode('\\', get_class($value)), -1));
29
+
30
+ if($value instanceOf ServiceInterface){
31
+ $this->services[$nameClass] = $value;
32
+ }
33
+ else if($value instanceOf HelperInterface){
34
+ $this->helpers[$nameClass] = $value;
35
+ }
36
+ }
37
+
38
+ return $this;
39
+ }
40
+
41
+ public function getServices(){
42
+ return $this->services;
43
+ }
44
+
45
+
46
+ public function getObject($key, $type = "service"){
47
+ if($type === "service"){
48
+ if(!empty($this->services) && array_key_exists($key, $this->services) && $this->services[$key] instanceOf ServiceInterface){
49
+ return $this->services[$key];
50
+ }
51
+ }
52
+ else if($type === "helper"){
53
+ if(!empty($this->helpers) && array_key_exists($key, $this->helpers) && $this->helpers[$key] instanceOf HelperInterface){
54
+ return $this->helpers[$key];
55
+ }
56
+ }
57
+
58
+ return null;
59
+ }
60
+
61
+ public function getService($key){
62
+ return $this->getObject($key);
63
+ }
64
+
65
+ public function getHelper($key){
66
+ return $this->getObject($key, "helper");
67
+ }
68
+
69
+
70
+
71
+ }
wpgod/src/WPGod/Services/GodApi.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Services;
4
+
5
+ use WPGodWpseopress\Models\ServiceInterface;
6
+ use WPGodWpseopress\WPGod;
7
+
8
+ class GodApi implements ServiceInterface
9
+ {
10
+
11
+ public static $NAME_TRANSIENT_OTHER = "wpgod_580f97c174717_site";
12
+
13
+ public static $NAME_TRANSIENT_ALREADY_CHECK = "wpgod_580f97c174754_already";
14
+
15
+ public static $LAST_CHECK_TRACKING_GENERAL = "wpgod_580f97c17478b_tracking_g";
16
+
17
+ public function __construct($params){
18
+
19
+ $this->basename = (isset($params["basename"])) ? $params["basename"] : null;
20
+ $this->pluginFile = (isset($params["plugin_file"])) ? $params["plugin_file"] : null;
21
+ $this->preventUser = (isset($params["prevent_user"])) ? $params["prevent_user"] : null;
22
+ $this->typeDevelopment = (isset($params["type_development"])) ? $params["type_development"] : null;
23
+ $this->token = (isset($params["token"])) ? $params["token"] : null;
24
+ $this->nameTransient = (isset($params["name_transient"])) ? $params["name_transient"] : "_god_save_errors";
25
+ $this->environment = (isset($params["environment"])) ? $params["environment"] : null;
26
+ $this->version = (isset($params["version"])) ? $params["version"] : null;
27
+ }
28
+
29
+ public static function getLastCheckTrackingGeneral(){
30
+ return get_option(self::$LAST_CHECK_TRACKING_GENERAL);
31
+ }
32
+
33
+ public static function initLastCheckTrackingGeneral(){
34
+ update_option(self::$LAST_CHECK_TRACKING_GENERAL, time());
35
+ }
36
+
37
+ public static function getNameTransientOtherStatic(){
38
+ return self::$NAME_TRANSIENT_OTHER;
39
+ }
40
+
41
+ public static function getNameTransientAlreadyCheck(){
42
+ return self::$NAME_TRANSIENT_ALREADY_CHECK;
43
+ }
44
+
45
+ public function getPreventUser(){
46
+ return $this->preventUser;
47
+ }
48
+
49
+ public function getPluginFile(){
50
+ return $this->pluginFile;
51
+ }
52
+
53
+ public function getVersion(){
54
+ return $this->version;
55
+ }
56
+
57
+ public function getEnvironment(){
58
+ return $this->environment;
59
+ }
60
+
61
+ public function getBasename(){
62
+ return $this->basename;
63
+ }
64
+
65
+
66
+ public function getClientSecret(){
67
+ return $this->clientSecret;
68
+ }
69
+
70
+ public function getTypeDevelopment(){
71
+ return $this->typeDevelopment;
72
+ }
73
+
74
+ public function getNameTransient(){
75
+ return $this->nameTransient;
76
+ }
77
+
78
+ public function serializeError($params){
79
+ return md5(vsprintf("%s-%s-%s-%s", array($params["file"], $params["line"], $params["code"], $params["message"])));
80
+ }
81
+
82
+ public function saveError($params, $nameTransient = null){
83
+
84
+ $nameTransient = ($nameTransient == null) ? $this->getNameTransient() : $nameTransient;
85
+
86
+ $serialize = $this->serializeError($params);
87
+
88
+ if ( false === ( $transientError = get_transient( $nameTransient ) ) ) {
89
+ $transientError = array();
90
+ $transientError[$serialize] = $params;
91
+ set_transient($nameTransient, $transientError);
92
+ }
93
+ else{
94
+
95
+ if(!array_key_exists($serialize, $transientError)){
96
+ $transientError[$serialize] = $params;
97
+ set_transient($nameTransient, $transientError);
98
+ }
99
+ }
100
+
101
+ }
102
+
103
+ public function sendTrackingGeneral($params){
104
+ $url = sprintf("%s/trackings.json", WPGod::GOD_URL_API);
105
+ $data = json_encode($params, true);
106
+
107
+ $this->callApi($url, $data);
108
+
109
+ }
110
+
111
+ public function sendError($params){
112
+ $url = sprintf("%s/errors.json", WPGod::GOD_URL_API);
113
+ $data = json_encode($params, true);
114
+
115
+ $this->callApi($url, $data);
116
+
117
+ }
118
+
119
+ public function callApi($url, $data){
120
+
121
+ $bearer = sprintf("Authorization: Bearer %s", $this->token);
122
+ $environment = sprintf("Environment: %s", $this->getEnvironment());
123
+
124
+ try {
125
+
126
+ $ch = curl_init($url);
127
+ curl_setopt($ch, CURLOPT_POST, 1);
128
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
129
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
130
+ curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
131
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
132
+ curl_setopt($ch, CURLOPT_TIMEOUT, 30);
133
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
134
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
135
+ curl_setopt($ch, CURLOPT_HTTPHEADER,
136
+ array(
137
+ "Content-Type: application/json",
138
+ "Accept: application/json",
139
+ $bearer,
140
+ $environment
141
+ )
142
+ );
143
+ $result = curl_exec($ch);
144
+ } catch (Exception $e) {}
145
+ }
146
+
147
+
148
+ }
wpgod/src/WPGod/Services/GodAuthorizeError.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Services;
4
+
5
+ use WPGodWpseopress\Models\GodHandlerInterface;
6
+ use WPGodWpseopress\Services\GodAbstractService;
7
+ use WPGodWpseopress\Helpers\GodTypeDevelopment;
8
+ use WPGodWpseopress\Models\ServiceInterface;
9
+
10
+
11
+ class GodAuthorizeError extends GodAbstractService implements ServiceInterface
12
+ {
13
+
14
+ public function authorizeHandler($file, $code){
15
+ $basename = $this->getService("GodApi")->getBasename();
16
+ $typeDevelopment = $this->getService("GodApi")->getTypeDevelopment();
17
+
18
+ if (in_array($typeDevelopment, array(GodTypeDevelopment::PLUGIN, GodTypeDevelopment::MU_PLUGIN, GodTypeDevelopment::THEME))) {
19
+ switch ($typeDevelopment) {
20
+ case 'plugin':
21
+ $verify = sprintf("%s/%s", PLUGINDIR, $basename);
22
+ break;
23
+ case 'mu-plugin':
24
+ $verify = sprintf("%s/%s", WPMU_PLUGIN_DIR, $basename);
25
+ break;
26
+ case 'theme':
27
+ $verify = sprintf("themes/%s", $basename);
28
+ break;
29
+ }
30
+
31
+ if(strpos(str_replace("\\", "/", $file), $verify) === false){
32
+ return false;
33
+ }
34
+
35
+ }
36
+
37
+ if($this->getService("GodFilesRules")->isInformationIgnore("file_dir", $file) ||
38
+ $this->getService("GodFilesRules")->isInformationIgnore("code_error", $code)){
39
+ return false;
40
+ }
41
+
42
+ return true;
43
+
44
+ }
45
+
46
+ public function checkAlreadyTrack($params, $nameTransient = null){
47
+ $apiServices = $this->getService("GodApi");
48
+ $nameTransient = ($nameTransient == null) ? $apiServices::getNameTransientAlreadyCheck() : $nameTransient;
49
+
50
+ $serialize = $apiServices->serializeError($params);
51
+ if ( false === ( $transientAlreadyCheckError = get_transient( $nameTransient ) ) ) {
52
+ $transientAlreadyCheckError = array();
53
+ $transientAlreadyCheckError[$serialize] = 1;
54
+ set_transient($nameTransient, $transientAlreadyCheckError);
55
+ return false;
56
+ }
57
+ else{
58
+
59
+ if(!array_key_exists($serialize, $transientAlreadyCheckError)){
60
+ $transientAlreadyCheckError[$serialize] = 1;
61
+ set_transient($nameTransient, $transientAlreadyCheckError);
62
+ return false;
63
+ }
64
+
65
+ return true;
66
+ }
67
+ }
68
+
69
+ }
wpgod/src/WPGod/Services/GodCheckErrors.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Services;
4
+
5
+ use WPGodWpseopress\Models\ServiceInterface;
6
+ use WPGodWpseopress\Models\HooksInterface;
7
+ use WPGodWpseopress\WPGod;
8
+
9
+ class GodCheckErrors extends GodAbstractService implements HooksInterface{
10
+
11
+
12
+ public function hooks(){
13
+ add_action('init', array($this, 'checkOtherTransient'), 0);
14
+ add_action('init', array($this, 'searchErrors'), 1);
15
+ add_action( 'wp_ajax_send_error', array($this, 'prefix_ajax_send_error') );
16
+ add_action( 'wp_ajax_nopriv_send_error', array($this, 'prefix_ajax_send_error') );
17
+ }
18
+
19
+ public function prefix_ajax_send_error(){
20
+ $this->sendErrors();
21
+ }
22
+
23
+ public function searchErrors(){
24
+ $transient = get_transient( $this->getService('GodApi')->getNameTransient());
25
+
26
+ if(!$transient || empty($transient)){
27
+ return;
28
+ }
29
+
30
+ if(is_admin()){
31
+ add_action("admin_enqueue_scripts", array($this, "enqueue_script_god"));
32
+ }
33
+ else{
34
+ add_action("wp_enqueue_scripts", array($this, "enqueue_script_god"));
35
+ }
36
+ }
37
+
38
+ public function enqueue_script_god(){
39
+ $url = admin_url("admin-ajax.php");
40
+ $urlRegisterScript = sprintf("%s/%s.js", WPGod::$GOD_PATH_PUBLIC_JS, "send-error");
41
+ $uniqId = uniqid();
42
+ wp_register_script( $uniqId . '-god-js', $urlRegisterScript, array( 'jquery' ) );
43
+
44
+ $arr = array(
45
+ "url" => $url,
46
+ "action" => "send_error"
47
+ );
48
+ wp_localize_script( $uniqId . '-god-js', 'configGodError', $arr );
49
+
50
+ wp_enqueue_script( $uniqId . '-god-js' );
51
+ }
52
+
53
+ public function checkOtherTransient(){
54
+ $godApi = $this->getService('GodApi');
55
+ $name = $godApi::getNameTransientOtherStatic();
56
+ $transient = get_transient($name);
57
+
58
+ if(!$transient || empty($transient)){
59
+ return;
60
+ }
61
+
62
+ foreach ($transient as $key => $value) {
63
+ if($this->getService('GodAuthorizeError')->authorizeHandler($value["file"], $value["code"])){
64
+ $this->getService("GodApi")->sendError($value);
65
+ }
66
+ }
67
+
68
+ delete_transient($name);
69
+
70
+ }
71
+
72
+ public function sendErrors(){
73
+ $name = $this->getService("GodApi")->getNameTransient();
74
+ $transient = get_transient($name);
75
+
76
+ if(!$transient || empty($transient)){
77
+ return;
78
+ }
79
+
80
+ foreach ($transient as $key => $value) {
81
+ $this->getService("GodApi")->sendError($value);
82
+ }
83
+
84
+ delete_transient($name);
85
+ }
86
+ }
wpgod/src/WPGod/Services/GodFilesRules.php ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress\Services;
4
+
5
+ use WPGodWpseopress\Models\ServiceInterface;
6
+ use WPGodWpseopress\Models\Specification\OrX;
7
+ use WPGodWpseopress\Models\Specification\AndX;
8
+ use WPGodWpseopress\Models\Specification\NotX;
9
+ use WPGodWpseopress\Models\Specification\ContainsSpecification;
10
+ use WPGodWpseopress\Models\Specification\EqualsSpecification;
11
+
12
+
13
+ /**
14
+ * GodFilesRules
15
+ *
16
+ * @author Thomas DENEULIN <contact@wp-god.com>
17
+ * @version 1.0.0
18
+ * @since 1.0.0
19
+ */
20
+ class GodFilesRules implements ServiceInterface {
21
+ public function __construct($params = array()){
22
+ $this->rulesIgnore = (isset($params["rules_ignore"])) ? $params["rules_ignore"] : array();
23
+
24
+ $this->typeErrorRules = array(
25
+ "code_error",
26
+ "file_dir"
27
+ );
28
+
29
+ $this->conditionTest = array(
30
+ "equals",
31
+ "contains",
32
+ "not-equals",
33
+ "not-contains"
34
+ );
35
+ }
36
+
37
+ public function getTypeErrorRules(){
38
+ return $this->typeErrorRules;
39
+ }
40
+
41
+ public function getConditionTest(){
42
+ return $this->conditionTest;
43
+ }
44
+
45
+ public function isInformationIgnore($type, $valueIgnore){
46
+ $arraySpec = array();
47
+ $result = false;
48
+
49
+ if (!in_array($type, $this->typeErrorRules)) {
50
+ return false;
51
+ }
52
+
53
+ if(!empty($this->rulesIgnore)){
54
+ foreach ($this->rulesIgnore as $keyOr => $valueOr) {
55
+ foreach ($valueOr as $keyAnd => $valueAnd) {
56
+ if($valueAnd['type_error'] == $type){
57
+ $conditionTest = "";
58
+ $value = "";
59
+
60
+ switch ($type) {
61
+ case 'file_dir':
62
+ $conditionTest = "contains";
63
+ $value = $valueAnd["file"];
64
+ break;
65
+ case 'code_error':
66
+ $conditionTest = "equals";
67
+ $value = $valueAnd["code_error"];
68
+ break;
69
+ }
70
+
71
+ $arraySpec[$keyOr][] = $this->getSpecificationFromConditionTest($conditionTest, $value);
72
+ }
73
+ }
74
+ }
75
+ }
76
+
77
+
78
+ if(!empty($arraySpec)){
79
+ $allSpecs = null;
80
+ if(count($arraySpec) > 1){
81
+ foreach ($arraySpec as $key => $value) {
82
+ if (array_key_exists($key+1, $arraySpec)) {
83
+ $allSpecs = ($allSpecs === null) ? new OrX($this->constructAndSpecification($value), $this->constructAndSpecification($arraySpec[$key+1])) : new OrX($allSpecs, $this->constructAndSpecification($arraySpec[$key+1]));
84
+ }
85
+ }
86
+ }
87
+ else{
88
+ $arraySpec = array_values($arraySpec);
89
+ $allSpecs = $this->constructAndSpecification($arraySpec[0]);
90
+ }
91
+
92
+ if ($allSpecs !== null) {
93
+ $result = $allSpecs->isSatisfiedBy($valueIgnore);
94
+ }
95
+ }
96
+
97
+ return $result;
98
+
99
+
100
+ }
101
+
102
+ private function constructAndSpecification($andSpecs){
103
+ $andSpecification = null;
104
+ if(!empty($andSpecs) && count($andSpecs) === 1){
105
+ return $andSpecs[0];
106
+ }
107
+ else{
108
+ foreach ($andSpecs as $key => $value) {
109
+ if (array_key_exists($key+1, $andSpecs)) {
110
+ $andSpecification = ($andSpecification === null) ? new AndX($value, $andSpecs[$key+1]) : new AndX($andSpecification, $andSpecs[$key+1]);
111
+ }
112
+ }
113
+ }
114
+
115
+ return $andSpecification;
116
+ }
117
+
118
+
119
+ public function getSpecificationFromConditionTest($conditionTest, $value){
120
+ $stringChoice = new ContainsSpecification($conditionTest);
121
+ $spec = "";
122
+
123
+ if($stringChoice->isSatisfiedBy("not")){
124
+ if($stringChoice->isSatisfiedBy("equals")){
125
+ $spec = new NotX(new EqualsSpecification($value));
126
+ }
127
+ else{
128
+ $spec = new NotX(new ContainsSpecification($value));
129
+ }
130
+ }
131
+ else{
132
+ if($stringChoice->isSatisfiedBy("equals")){
133
+ $spec = new EqualsSpecification($value);
134
+ }
135
+ else{
136
+ $spec = new ContainsSpecification($value);
137
+ }
138
+ }
139
+
140
+ return $spec;
141
+ }
142
+
143
+
144
+
145
+ }
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
wpgod/src/WPGod/WPGod.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPGodWpseopress;
4
+
5
+ use WPGodWpseopress\Handler\GodErrorHandler;
6
+ use WPGodWpseopress\Handler\GodTrackingHandler;
7
+ use WPGodWpseopress\Handler\GodAdminNoticeHandler;
8
+ use WPGodWpseopress\Helpers\GodError;
9
+ use WPGodWpseopress\Helpers\GodServerInfo;
10
+ use WPGodWpseopress\Helpers\GodEnvironmentInfo;
11
+ use WPGodWpseopress\Helpers\GodTypeDevelopment;
12
+ use WPGodWpseopress\Services\GodApi;
13
+ use WPGodWpseopress\Services\GodFilesRules;
14
+ use WPGodWpseopress\Services\GodCheckErrors;
15
+ use WPGodWpseopress\Services\GodAuthorizeError;
16
+
17
+ if ( ! defined( 'ABSPATH' ) ) exit;
18
+
19
+
20
+ /**
21
+ * WPGod
22
+ *
23
+ * @author Thomas DENEULIN <contact@wp-god.com>
24
+ * @version 1.0.0
25
+ * @since 1.0.0
26
+ */
27
+ class WPGod{
28
+
29
+ public static $GOD_PATH_PUBLIC_JS;
30
+
31
+ const PHP_VERSION_MINI = "5.4";
32
+ const GOD_VERSION = "2.2";
33
+ const GOD_URL_API = "https://api.wp-god.com/api/v1";
34
+
35
+ protected $paramsObligatory = array(
36
+ "basename",
37
+ "type_development",
38
+ "name_transient",
39
+ "token",
40
+ "environment"
41
+ );
42
+
43
+ protected $hooksServices = array();
44
+
45
+ public function __construct($params){
46
+ self::$GOD_PATH_PUBLIC_JS = plugin_dir_url(__FILE__) . "../../public/js";
47
+
48
+ $missingParameters = 0;
49
+
50
+ foreach ($this->paramsObligatory as $key => $value) {
51
+ if(!array_key_exists($value, $params)){
52
+ $missingParameters++;
53
+ }
54
+ }
55
+
56
+ if($missingParameters === 0){
57
+
58
+ $godApi = new GodApi($params);
59
+ $godFilesRules = new GodFilesRules($params);
60
+ $godAuthorizeError = new GodAuthorizeError(array(
61
+ $godApi,
62
+ $godFilesRules
63
+ )
64
+ );
65
+
66
+ $pause = ($this->canBeTrigger()) ? false : true;
67
+ $authorizeTracking = get_option("wpgod_seopress_allow_tracking");
68
+ $pauseTrackingEnvironment = (!($params["type_development"] == GodTypeDevelopment::PLUGIN) || !$authorizeTracking);
69
+
70
+ $this->hooksServices = array(
71
+ "god_handler" => new GodErrorHandler(
72
+ array(
73
+ $godApi,
74
+ $godFilesRules,
75
+ $godAuthorizeError
76
+ ),
77
+ array(
78
+ new GodError(),
79
+ new GodServerInfo(),
80
+ new GodEnvironmentInfo()
81
+ ),
82
+ $pause
83
+ ),
84
+ "god_tracking_handler" => new GodTrackingHandler(
85
+ array(
86
+ $godApi
87
+ ),
88
+ array(
89
+ new GodEnvironmentInfo(),
90
+ new GodServerInfo()
91
+ ),
92
+ $pauseTrackingEnvironment
93
+ ),
94
+ "god_check_errors" => new GodCheckErrors(
95
+ array(
96
+ $godApi,
97
+ $godAuthorizeError
98
+ )
99
+ )
100
+ );
101
+
102
+ if($params["type_development"] == GodTypeDevelopment::PLUGIN){
103
+ $this->hooksServices["god_admin_notice_handler"] = new GodAdminNoticeHandler(
104
+ array(
105
+ $godApi
106
+ ),
107
+ array(),
108
+ (isset($params["prevent_user"])) ? $params["prevent_user"] : false
109
+ );
110
+ }
111
+ }
112
+ }
113
+
114
+
115
+ protected function canBeTrigger(){
116
+ if(strpos(__DIR__, "_wpgod") !== false){
117
+ return true;
118
+ }
119
+
120
+ if(file_exists(WPMU_PLUGIN_DIR . '/_wpgod')){
121
+ return false;
122
+ }
123
+
124
+ return true;
125
+ }
126
+
127
+
128
+ protected function canLoadedWPGod(){
129
+
130
+ if ( version_compare( PHP_VERSION, self::PHP_VERSION_MINI, '<' ) ) {
131
+ return false;
132
+ }
133
+
134
+ if(!function_exists('curl_version')){
135
+ return false;
136
+ }
137
+
138
+ return true;
139
+ }
140
+
141
+ public function execute(){
142
+
143
+ if ($this->canLoadedWPGod()){
144
+ add_action( 'plugins_loaded' , array($this,'hooks'), 0);
145
+ }
146
+ }
147
+
148
+ public function hooks(){
149
+
150
+ foreach ($this->hooksServices as $key => $hook) {
151
+ if($hook instanceOf HooksInterface){
152
+ $hook->hooks();
153
+ }
154
+
155
+ $interfaces = class_implements($hook);
156
+ foreach ($interfaces as $key => $value) {
157
+ $pos = strpos($key, "HooksInterface");
158
+ if($pos !== false){
159
+ $hook->hooks();
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
wpgod/vendor/autoload.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload.php @generated by Composer
4
+
5
+ require_once __DIR__ . '/composer' . '/autoload_real.php';
6
+
7
+ return ComposerAutoloaderInit6ea64e24194a64d6eef9458bf8eb5c18::getLoader();
wpgod/vendor/composer/ClassLoader.php ADDED
@@ -0,0 +1,413 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer\Autoload;
14
+
15
+ /**
16
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
+ *
18
+ * $loader = new \Composer\Autoload\ClassLoader();
19
+ *
20
+ * // register classes with namespaces
21
+ * $loader->add('Symfony\Component', __DIR__.'/component');
22
+ * $loader->add('Symfony', __DIR__.'/framework');
23
+ *
24
+ * // activate the autoloader
25
+ * $loader->register();
26
+ *
27
+ * // to enable searching the include path (eg. for PEAR packages)
28
+ * $loader->setUseIncludePath(true);
29
+ *
30
+ * In this example, if you try to use a class in the Symfony\Component
31
+ * namespace or one of its children (Symfony\Component\Console for instance),
32
+ * the autoloader will first look for the class under the component/
33
+ * directory, and it will then fallback to the framework/ directory if not
34
+ * found before giving up.
35
+ *
36
+ * This class is loosely based on the Symfony UniversalClassLoader.
37
+ *
38
+ * @author Fabien Potencier <fabien@symfony.com>
39
+ * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see http://www.php-fig.org/psr/psr-0/
41
+ * @see http://www.php-fig.org/psr/psr-4/
42
+ */
43
+ class ClassLoader
44
+ {
45
+ // PSR-4
46
+ private $prefixLengthsPsr4 = array();
47
+ private $prefixDirsPsr4 = array();
48
+ private $fallbackDirsPsr4 = array();
49
+
50
+ // PSR-0
51
+ private $prefixesPsr0 = array();
52
+ private $fallbackDirsPsr0 = array();
53
+
54
+ private $useIncludePath = false;
55
+ private $classMap = array();
56
+
57
+ private $classMapAuthoritative = false;
58
+
59
+ public function getPrefixes()
60
+ {
61
+ if (!empty($this->prefixesPsr0)) {
62
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
63
+ }
64
+
65
+ return array();
66
+ }
67
+
68
+ public function getPrefixesPsr4()
69
+ {
70
+ return $this->prefixDirsPsr4;
71
+ }
72
+
73
+ public function getFallbackDirs()
74
+ {
75
+ return $this->fallbackDirsPsr0;
76
+ }
77
+
78
+ public function getFallbackDirsPsr4()
79
+ {
80
+ return $this->fallbackDirsPsr4;
81
+ }
82
+
83
+ public function getClassMap()
84
+ {
85
+ return $this->classMap;
86
+ }
87
+
88
+ /**
89
+ * @param array $classMap Class to filename map
90
+ */
91
+ public function addClassMap(array $classMap)
92
+ {
93
+ if ($this->classMap) {
94
+ $this->classMap = array_merge($this->classMap, $classMap);
95
+ } else {
96
+ $this->classMap = $classMap;
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Registers a set of PSR-0 directories for a given prefix, either
102
+ * appending or prepending to the ones previously set for this prefix.
103
+ *
104
+ * @param string $prefix The prefix
105
+ * @param array|string $paths The PSR-0 root directories
106
+ * @param bool $prepend Whether to prepend the directories
107
+ */
108
+ public function add($prefix, $paths, $prepend = false)
109
+ {
110
+ if (!$prefix) {
111
+ if ($prepend) {
112
+ $this->fallbackDirsPsr0 = array_merge(
113
+ (array) $paths,
114
+ $this->fallbackDirsPsr0
115
+ );
116
+ } else {
117
+ $this->fallbackDirsPsr0 = array_merge(
118
+ $this->fallbackDirsPsr0,
119
+ (array) $paths
120
+ );
121
+ }
122
+
123
+ return;
124
+ }
125
+
126
+ $first = $prefix[0];
127
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
128
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
129
+
130
+ return;
131
+ }
132
+ if ($prepend) {
133
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
134
+ (array) $paths,
135
+ $this->prefixesPsr0[$first][$prefix]
136
+ );
137
+ } else {
138
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
139
+ $this->prefixesPsr0[$first][$prefix],
140
+ (array) $paths
141
+ );
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Registers a set of PSR-4 directories for a given namespace, either
147
+ * appending or prepending to the ones previously set for this namespace.
148
+ *
149
+ * @param string $prefix The prefix/namespace, with trailing '\\'
150
+ * @param array|string $paths The PSR-4 base directories
151
+ * @param bool $prepend Whether to prepend the directories
152
+ *
153
+ * @throws \InvalidArgumentException
154
+ */
155
+ public function addPsr4($prefix, $paths, $prepend = false)
156
+ {
157
+ if (!$prefix) {
158
+ // Register directories for the root namespace.
159
+ if ($prepend) {
160
+ $this->fallbackDirsPsr4 = array_merge(
161
+ (array) $paths,
162
+ $this->fallbackDirsPsr4
163
+ );
164
+ } else {
165
+ $this->fallbackDirsPsr4 = array_merge(
166
+ $this->fallbackDirsPsr4,
167
+ (array) $paths
168
+ );
169
+ }
170
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
171
+ // Register directories for a new namespace.
172
+ $length = strlen($prefix);
173
+ if ('\\' !== $prefix[$length - 1]) {
174
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
175
+ }
176
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
177
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
178
+ } elseif ($prepend) {
179
+ // Prepend directories for an already registered namespace.
180
+ $this->prefixDirsPsr4[$prefix] = array_merge(
181
+ (array) $paths,
182
+ $this->prefixDirsPsr4[$prefix]
183
+ );
184
+ } else {
185
+ // Append directories for an already registered namespace.
186
+ $this->prefixDirsPsr4[$prefix] = array_merge(
187
+ $this->prefixDirsPsr4[$prefix],
188
+ (array) $paths
189
+ );
190
+ }
191
+ }
192
+
193
+ /**
194
+ * Registers a set of PSR-0 directories for a given prefix,
195
+ * replacing any others previously set for this prefix.
196
+ *
197
+ * @param string $prefix The prefix
198
+ * @param array|string $paths The PSR-0 base directories
199
+ */
200
+ public function set($prefix, $paths)
201
+ {
202
+ if (!$prefix) {
203
+ $this->fallbackDirsPsr0 = (array) $paths;
204
+ } else {
205
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
206
+ }
207
+ }
208
+
209
+ /**
210
+ * Registers a set of PSR-4 directories for a given namespace,
211
+ * replacing any others previously set for this namespace.
212
+ *
213
+ * @param string $prefix The prefix/namespace, with trailing '\\'
214
+ * @param array|string $paths The PSR-4 base directories
215
+ *
216
+ * @throws \InvalidArgumentException
217
+ */
218
+ public function setPsr4($prefix, $paths)
219
+ {
220
+ if (!$prefix) {
221
+ $this->fallbackDirsPsr4 = (array) $paths;
222
+ } else {
223
+ $length = strlen($prefix);
224
+ if ('\\' !== $prefix[$length - 1]) {
225
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
226
+ }
227
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
228
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
229
+ }
230
+ }
231
+
232
+ /**
233
+ * Turns on searching the include path for class files.
234
+ *
235
+ * @param bool $useIncludePath
236
+ */
237
+ public function setUseIncludePath($useIncludePath)
238
+ {
239
+ $this->useIncludePath = $useIncludePath;
240
+ }
241
+
242
+ /**
243
+ * Can be used to check if the autoloader uses the include path to check
244
+ * for classes.
245
+ *
246
+ * @return bool
247
+ */
248
+ public function getUseIncludePath()
249
+ {
250
+ return $this->useIncludePath;
251
+ }
252
+
253
+ /**
254
+ * Turns off searching the prefix and fallback directories for classes
255
+ * that have not been registered with the class map.
256
+ *
257
+ * @param bool $classMapAuthoritative
258
+ */
259
+ public function setClassMapAuthoritative($classMapAuthoritative)
260
+ {
261
+ $this->classMapAuthoritative = $classMapAuthoritative;
262
+ }
263
+
264
+ /**
265
+ * Should class lookup fail if not found in the current class map?
266
+ *
267
+ * @return bool
268
+ */
269
+ public function isClassMapAuthoritative()
270
+ {
271
+ return $this->classMapAuthoritative;
272
+ }
273
+
274
+ /**
275
+ * Registers this instance as an autoloader.
276
+ *
277
+ * @param bool $prepend Whether to prepend the autoloader or not
278
+ */
279
+ public function register($prepend = false)
280
+ {
281
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
282
+ }
283
+
284
+ /**
285
+ * Unregisters this instance as an autoloader.
286
+ */
287
+ public function unregister()
288
+ {
289
+ spl_autoload_unregister(array($this, 'loadClass'));
290
+ }
291
+
292
+ /**
293
+ * Loads the given class or interface.
294
+ *
295
+ * @param string $class The name of the class
296
+ * @return bool|null True if loaded, null otherwise
297
+ */
298
+ public function loadClass($class)
299
+ {
300
+ if ($file = $this->findFile($class)) {
301
+ includeFile($file);
302
+
303
+ return true;
304
+ }
305
+ }
306
+
307
+ /**
308
+ * Finds the path to the file where the class is defined.
309
+ *
310
+ * @param string $class The name of the class
311
+ *
312
+ * @return string|false The path if found, false otherwise
313
+ */
314
+ public function findFile($class)
315
+ {
316
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
317
+ if ('\\' == $class[0]) {
318
+ $class = substr($class, 1);
319
+ }
320
+
321
+ // class map lookup
322
+ if (isset($this->classMap[$class])) {
323
+ return $this->classMap[$class];
324
+ }
325
+ if ($this->classMapAuthoritative) {
326
+ return false;
327
+ }
328
+
329
+ $file = $this->findFileWithExtension($class, '.php');
330
+
331
+ // Search for Hack files if we are running on HHVM
332
+ if ($file === null && defined('HHVM_VERSION')) {
333
+ $file = $this->findFileWithExtension($class, '.hh');
334
+ }
335
+
336
+ if ($file === null) {
337
+ // Remember that this class does not exist.
338
+ return $this->classMap[$class] = false;
339
+ }
340
+
341
+ return $file;
342
+ }
343
+
344
+ private function findFileWithExtension($class, $ext)
345
+ {
346
+ // PSR-4 lookup
347
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
348
+
349
+ $first = $class[0];
350
+ if (isset($this->prefixLengthsPsr4[$first])) {
351
+ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
352
+ if (0 === strpos($class, $prefix)) {
353
+ foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
354
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
355
+ return $file;
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+
362
+ // PSR-4 fallback dirs
363
+ foreach ($this->fallbackDirsPsr4 as $dir) {
364
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
365
+ return $file;
366
+ }
367
+ }
368
+
369
+ // PSR-0 lookup
370
+ if (false !== $pos = strrpos($class, '\\')) {
371
+ // namespaced class name
372
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
373
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
374
+ } else {
375
+ // PEAR-like class name
376
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
377
+ }
378
+
379
+ if (isset($this->prefixesPsr0[$first])) {
380
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
381
+ if (0 === strpos($class, $prefix)) {
382
+ foreach ($dirs as $dir) {
383
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
384
+ return $file;
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
390
+
391
+ // PSR-0 fallback dirs
392
+ foreach ($this->fallbackDirsPsr0 as $dir) {
393
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
394
+ return $file;
395
+ }
396
+ }
397
+
398
+ // PSR-0 include paths.
399
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
400
+ return $file;
401
+ }
402
+ }
403
+ }
404
+
405
+ /**
406
+ * Scope isolated include.
407
+ *
408
+ * Prevents access to $this/self from included files.
409
+ */
410
+ function includeFile($file)
411
+ {
412
+ include $file;
413
+ }
wpgod/vendor/composer/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Copyright (c) 2016 Nils Adermann, Jordi Boggiano
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished
9
+ to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
wpgod/vendor/composer/autoload_classmap.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_classmap.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
wpgod/vendor/composer/autoload_namespaces.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_namespaces.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
wpgod/vendor/composer/autoload_psr4.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_psr4.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'WPGodWpseopress\\' => array($baseDir . '/src/WPGod'),
10
+ );
wpgod/vendor/composer/autoload_real.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_real.php @generated by Composer
4
+
5
+ class ComposerAutoloaderInit6ea64e24194a64d6eef9458bf8eb5c18
6
+ {
7
+ private static $loader;
8
+
9
+ public static function loadClassLoader($class)
10
+ {
11
+ if ('Composer\Autoload\ClassLoader' === $class) {
12
+ require __DIR__ . '/ClassLoader.php';
13
+ }
14
+ }
15
+
16
+ public static function getLoader()
17
+ {
18
+ if (null !== self::$loader) {
19
+ return self::$loader;
20
+ }
21
+
22
+ spl_autoload_register(array('ComposerAutoloaderInit6ea64e24194a64d6eef9458bf8eb5c18', 'loadClassLoader'), true, true);
23
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit6ea64e24194a64d6eef9458bf8eb5c18', 'loadClassLoader'));
25
+
26
+ $map = require __DIR__ . '/autoload_namespaces.php';
27
+ foreach ($map as $namespace => $path) {
28
+ $loader->set($namespace, $path);
29
+ }
30
+
31
+ $map = require __DIR__ . '/autoload_psr4.php';
32
+ foreach ($map as $namespace => $path) {
33
+ $loader->setPsr4($namespace, $path);
34
+ }
35
+
36
+ $classMap = require __DIR__ . '/autoload_classmap.php';
37
+ if ($classMap) {
38
+ $loader->addClassMap($classMap);
39
+ }
40
+
41
+ $loader->register(true);
42
+
43
+ return $loader;
44
+ }
45
+ }