SEOPress - Version 3.5.8

Version Description

  • NEW Installation wizard!
  • NEW Import redirects from Redirections plugin
  • NEW Display and automatically accept the users consent on page load (not fully GDPR) for Google Analytics
  • INFO Compatibility with LifterLMS plugin
  • INFO Improve redirections export to CSV
  • FIX Import/export redirects tool for query param
  • FIX Links in SEO Tools
  • FIX Post type archive link if no posts page set in Settings > Reading for HTML sitemap
Download this release

Release Info

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

Code changes from version 3.5.7 to 3.5.8

assets/css/seopress-setup.css ADDED
@@ -0,0 +1 @@
 
1
+ @charset "UTF-8";body{margin:65px auto 24px;box-shadow:none;background:#f1f1f1;padding:0}.spinner{display: inline-block}.log {margin: 0;text-transform: uppercase;display: inline-block;vertical-align: middle;padding: 5px;color: rgba(19,191,17,1);font-style: italic}#seopress-logo{border:0;margin:0 0 24px;padding:0;text-align:center}#seopress-logo img{max-width:30%}.seopress-setup{text-align:center}.seopress-setup .select2-container{text-align:left;width:auto}.seopress-setup .hidden{display:none}.seopress-setup-content{box-shadow:0 1px 3px rgba(0,0,0,.13);padding:2em;margin:0 0 20px;background:#fff;overflow:hidden;zoom:1;text-align:left}.seopress-setup-content h1,.seopress-setup-content h2,.seopress-setup-content h3,.seopress-setup-content table{margin:0 0 20px;border:0;padding:0;color:#666;clear:none;font-weight:500}.seopress-setup-content p{margin:20px 0;font-size:1em;line-height:1.75em;color:#666}.seopress-setup-content table{font-size:1em;line-height:1.75em;color:#666}.seopress-setup-content a{color:#3842FF}.seopress-setup-content a:focus,.seopress-setup-content a:hover{color:#111}.seopress-setup-content .form-table th{width:35%;vertical-align:top;font-weight:400}.seopress-setup-content .form-table td{vertical-align:top}.seopress-setup-content .form-table td input,.seopress-setup-content .form-table td select{width:100%;box-sizing:border-box}.seopress-setup-content .form-table td input[size]{width:auto}.seopress-setup-content .form-table td .description{line-height:1.5em;display:block;margin-top:.25em;color:#999;font-style:italic}.seopress-setup-content .form-table td .input-checkbox,.seopress-setup-content .form-table td .input-radio{width:auto;box-sizing:inherit;padding:inherit;margin:0 .5em 0 0;box-shadow:none}.seopress-setup-content .form-table .section_title td{padding:0}.seopress-setup-content .form-table .section_title td h2,.seopress-setup-content .form-table .section_title td p{margin:12px 0 0}.seopress-setup-content .form-table td,.seopress-setup-content .form-table th{padding:12px 0;margin:0;border:0}.seopress-setup-content .form-table td:first-child,.seopress-setup-content .form-table th:first-child{padding-right:1em}.seopress-setup-content table.tax-rates{width:100%;font-size:.92em}.seopress-setup-content table.tax-rates th{padding:0;text-align:center;width:auto;vertical-align:middle}.seopress-setup-content table.tax-rates td{border:1px solid #f5f5f5;padding:6px;text-align:center;vertical-align:middle}.seopress-setup-content table.tax-rates td input{outline:0;border:0;padding:0;box-shadow:none;text-align:center;width:100%}.seopress-setup-content table.tax-rates td.sort{cursor:move;color:#ccc}.seopress-setup-content table.tax-rates td.sort::before{content:"\f333";font-family:dashicons}.seopress-setup-content table.tax-rates td.readonly{background:#f5f5f5}.seopress-setup-content table.tax-rates .add{padding:1em 0 0 1em;line-height:1em;font-size:1em;width:0;margin:6px 0 0;height:0;overflow:hidden;position:relative;display:inline-block}.seopress-setup-content table.tax-rates .add::before{content:"\f502";font-family:dashicons;position:absolute;left:0;top:0}.seopress-setup-content table.tax-rates .remove{padding:1em 0 0 1em;line-height:1em;font-size:1em;width:0;margin:0;height:0;overflow:hidden;position:relative;display:inline-block}.seopress-setup-content table.tax-rates .remove::before{content:"\f182";font-family:dashicons;position:absolute;left:0;top:0}.seopress-setup-content .seopress-setup-pages{width:100%;border-top:1px solid #eee}.seopress-setup-content .seopress-setup-pages thead th{display:none}.seopress-setup-content .seopress-setup-pages .page-name{width:30%;font-weight:700}.seopress-setup-content .seopress-setup-pages td,.seopress-setup-content .seopress-setup-pages th{padding:14px 0;border-bottom:1px solid #eee}.seopress-setup-content .seopress-setup-pages td:first-child,.seopress-setup-content .seopress-setup-pages th:first-child{padding-right:9px}.seopress-setup-content .seopress-setup-pages th{padding-top:0}.seopress-setup-content .seopress-setup-pages .page-options p{color:#777;margin:6px 0 0 24px;line-height:1.75em}.seopress-setup-content .seopress-setup-pages .page-options p input{vertical-align:middle;margin:1px 0 0;height:1.75em;width:1.75em;line-height:1.75em}.seopress-setup-content .seopress-setup-pages .page-options p label{line-height:1}@media screen and (max-width:782px){.seopress-setup-content .form-table tbody th{width:auto}}.seopress-setup-content .twitter-share-button{float:right}.seopress-setup-content .seopress-setup-next-steps{overflow:hidden;margin:0 0 24px;padding-bottom:2px}.seopress-setup-content .seopress-setup-next-steps h2{margin-bottom:12px}.seopress-setup-content .seopress-setup-next-steps .seopress-setup-next-steps-first{float:left;width:50%;box-sizing:border-box}.seopress-setup-content .seopress-setup-next-steps .seopress-setup-next-steps-last{float:right;width:50%;box-sizing:border-box}.seopress-setup-content .seopress-setup-next-steps ul{padding:0 2em 0 0;list-style:none outside;margin:0}.seopress-setup-content .seopress-setup-next-steps ul li a{display:block;padding:0 0 .75em}.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button{background-color:#f7f7f7;border-color:#ccc;color:#23282d;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #ccc;text-shadow:1px 0 1px #eee,0 1px 1px #eee;font-size:1em;height:auto;line-height:1.75em;margin:0 0 .75em;opacity:1;padding:1em;text-align:center}.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button:active,.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button:focus,.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button:hover{background:#f5f5f5;border-color:#aaa}.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button-primary{color:#fff;background-color:#bb77ae;border-color:#a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597}.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button-primary:active,.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button-primary:focus,.seopress-setup-content .seopress-setup-next-steps ul .setup-product a.button-primary:hover{color:#fff;background:#a36597;border-color:#a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.seopress-setup-content .seopress-setup-next-steps ul li a::before{color:#82878c;font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;top:1px;position:relative;text-decoration:none!important;vertical-align:top}.seopress-setup-content .seopress-setup-next-steps ul .learn-more a::before{content:"\f105"}.seopress-setup-content .seopress-setup-next-steps ul .video-walkthrough a::before{content:"\f126"}.seopress-setup-content .seopress-setup-next-steps ul .newsletter a::before{content:"\f465"}.seopress-setup-content .updated,.seopress-setup-content .seopress-newsletter{padding:24px;margin:0 0 24px;overflow:hidden;background:#f5f5f5}.seopress-setup-content .updated p,.seopress-setup-content .seopress-newsletter p{padding:0;margin:0 0 12px}.seopress-setup-content .updated form,.seopress-setup-content .updated p:last-child,.seopress-setup-content .seopress-newsletter form,.seopress-setup-content .seopress-tracker{margin:24px 0;border:1px solid #eee;padding:20px;border-radius:4px;overflow:hidden}.seopress-setup-content .seopress-tracker p{font-size:14px;line-height:1.5em}.seopress-setup-content .seopress-tracker .checkbox{line-height:24px;font-weight:500;font-size:1em;margin-top:0;margin-bottom:20px}.seopress-setup-content .checkbox input[type=checkbox]{opacity:0;position:absolute;left:-9999px}.seopress-setup-content .checkbox label{position:relative;display:inline-block;padding-left:28px}.seopress-setup-content .checkbox label::after,.seopress-setup-content .checkbox label::before{position:absolute;content:"";display:inline-block}.seopress-setup-content .checkbox label::before{height:16px;width:16px;left:0;top:3px;border:1px solid #aaa;background-color:#fff;border-radius:3px}.seopress-setup-content .checkbox label::after{height:5px;width:9px;border-left:2px solid;border-bottom:2px solid;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);left:4px;top:7px;color:#fff}.seopress-setup-content .checkbox input[type=checkbox]+label::after{content:none}.seopress-setup-content .checkbox input[type=checkbox]:checked+label::after{content:""}.seopress-setup-content .checkbox input[type=checkbox]:focus+label::before{outline:#3b99fc auto 5px}.seopress-setup-content .checkbox input[type=checkbox]:checked+label::before{background:#3842FF;border-color:#3842FF}.seopress-setup-steps{padding:0 0 24px;margin:0;list-style:none outside;overflow:hidden;color:#ccc;width:100%;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex}.seopress-setup-steps li{width:100%;float:left;padding:0 0 .8em;margin:0;text-align:center;position:relative;border-bottom:4px solid #ccc;line-height:1.4em}.seopress-setup-steps li a{color:#3742ff;text-decoration:none;padding:1.5em;margin:-1.5em;position:relative;z-index:1}.seopress-setup-steps li a:focus,.seopress-setup-steps li a:hover{color:#111;text-decoration:underline}.seopress-setup-steps li::before{content:"";border:4px solid #ccc;border-radius:100%;width:4px;height:4px;position:absolute;bottom:0;left:50%;margin-left:-6px;margin-bottom:-8px;background:#fff}.seopress-setup-steps li.active{border-color: #3842FF;color: #3842FF;font-weight: 700}.seopress-setup-steps li.active::before{border-color:#3842FF}.seopress-setup-steps li.done{border-color:#3742ff;color:#3742ff}.seopress-setup-steps li.done::before{border-color:#3742ff;background:#3742ff}.seopress-setup .seopress-setup-actions{overflow:hidden;margin:20px 0 0;position:relative}.seopress-setup .seopress-setup-actions .button{font-size:1.25em;padding:.5em 1em;line-height:1em;margin-right:.5em;margin-bottom:2px;height:auto;border-radius:4px}.seopress-setup .seopress-setup-actions .button-primary{background-color: #3842FF;border-color: #3842FF;margin: 0;opacity: 1;transition: all 300ms linear}.seopress-setup .seopress-setup-actions .button-primary:active,.seopress-setup .seopress-setup-actions .button-primary:focus,.seopress-setup .seopress-setup-actions .button-primary:hover{background:none;border-color:#3842FF;color:#3842FF}.seopress-setup-content p:last-child{margin-bottom:0}.seopress-setup-content p.store-setup{margin-top:0}.seopress-setup-footer-links{font-size:.85em;color:#7b7b7b;margin:1.18em auto;display:inline-block;text-align:center}.seopress-wizard-storefront .seopress-wizard-storefront-intro{padding:40px 40px 0;background:#f5f5f5;text-align:center}.seopress-wizard-storefront .seopress-wizard-storefront-intro img{margin:40px 0 0 0;width:100%;display:block}.seopress-wizard-storefront .seopress-wizard-storefront-features{list-style:none outside;margin:0 0 20px;padding:0 0 0 30px;overflow:hidden}.seopress-wizard-storefront .seopress-wizard-storefront-feature{margin:0;padding:20px 30px 20px 2em;width:50%;box-sizing:border-box}.seopress-wizard-storefront .seopress-wizard-storefront-feature::before{margin-left:-2em;position:absolute}.seopress-wizard-storefront .seopress-wizard-storefront-feature.first{clear:both;float:left}.seopress-wizard-storefront .seopress-wizard-storefront-feature.last{float:right}.seopress-wizard-storefront .seopress-wizard-storefront-feature__bulletproof::before{content:"ūüĒí"}.seopress-wizard-storefront .seopress-wizard-storefront-feature__mobile::before{content:"ūüďĪ"}.seopress-wizard-storefront .seopress-wizard-storefront-feature__accessibility::before{content:"ūüĎď"}.seopress-wizard-storefront .seopress-wizard-storefront-feature__search::before{content:"ūüĒć"}.seopress-wizard-storefront .seopress-wizard-storefront-feature__compatibility::before{content:"ūüĒß"}.seopress-wizard-storefront .seopress-wizard-storefront-feature__extendable::before{content:"ūüé®"}.seopress-wizard-services{border:1px solid #eee;padding:1em;margin:0 0 1em;list-style:none outside;border-radius:4px;overflow:hidden}.seopress-wizard-services p{margin:0 0 1em 0;padding:0;font-size:1em;line-height:1.5em}.seopress-wizard-service-item,.seopress-wizard-services-list-toggle{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;padding:0;border-bottom:1px solid #eee;color:#666;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.seopress-wizard-service-item:last-child,.seopress-wizard-services-list-toggle:last-child{border-bottom:0}.seopress-wizard-service-item .payment-gateway-fee,.seopress-wizard-services-list-toggle .payment-gateway-fee{color:#a6a6a6}.seopress-wizard-service-item .seopress-wizard-service-name,.seopress-wizard-services-list-toggle .seopress-wizard-service-name{-webkit-flex-basis:0;flex-basis:0;min-width:160px;text-align:center;font-weight:700;padding:2em 0;-webkit-align-self:stretch;align-self:stretch;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:baseline;-webkit-align-items:baseline;align-items:baseline}.seopress-wizard-payment-gateway-form .seopress-wizard-service-item .seopress-wizard-service-name,.seopress-wizard-payment-gateway-form .seopress-wizard-services-list-toggle .seopress-wizard-service-name{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.seopress-wizard-service-item .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle .seopress-wizard-service-name img{max-width:75px}.seopress-wizard-service-item.stripe-logo .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle.stripe-logo .seopress-wizard-service-name img{padding:8px 0}.seopress-wizard-service-item.paypal-logo .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle.paypal-logo .seopress-wizard-service-name img{max-width:87px;padding:2px 0}.seopress-wizard-service-item.klarna-logo .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle.klarna-logo .seopress-wizard-service-name img{max-width:87px;padding:12px 0}.seopress-wizard-service-item.square-logo .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle.square-logo .seopress-wizard-service-name img{max-width:95px;padding:12px 0}.seopress-wizard-service-item.eway-logo .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle.eway-logo .seopress-wizard-service-name img{max-width:87px}.seopress-wizard-service-item.payfast-logo .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle.payfast-logo .seopress-wizard-service-name img{max-width:140px}.seopress-wizard-service-item .seopress-wizard-service-description,.seopress-wizard-services-list-toggle .seopress-wizard-service-description{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;padding:20px}.seopress-wizard-service-item .seopress-wizard-service-description p,.seopress-wizard-services-list-toggle .seopress-wizard-service-description p{margin-bottom:1em}.seopress-wizard-service-item .seopress-wizard-service-description p:last-child,.seopress-wizard-services-list-toggle .seopress-wizard-service-description p:last-child{margin-bottom:0}.seopress-wizard-service-item .seopress-wizard-service-description .seopress-wizard-service-settings-description,.seopress-wizard-services-list-toggle .seopress-wizard-service-description .seopress-wizard-service-settings-description{display:block;font-style:italic;color:#999}.seopress-wizard-service-item .seopress-wizard-service-enable,.seopress-wizard-services-list-toggle .seopress-wizard-service-enable{-webkit-flex-basis:0;flex-basis:0;min-width:75px;text-align:center;cursor:pointer;padding:2em 0;position:relative;max-height:1.5em;-webkit-align-self:flex-start;align-self:flex-start;-webkit-box-ordinal-group:4;-webkit-order:3;order:3}.seopress-wizard-service-item .seopress-wizard-service-toggle,.seopress-wizard-services-list-toggle .seopress-wizard-service-toggle{height:16px;width:32px;border:2px solid #935687;background-color:#935687;display:inline-block;text-indent:-9999px;border-radius:10em;position:relative}.seopress-wizard-service-item .seopress-wizard-service-toggle input[type=checkbox],.seopress-wizard-services-list-toggle .seopress-wizard-service-toggle input[type=checkbox]{display:none}.seopress-wizard-service-item .seopress-wizard-service-toggle::before,.seopress-wizard-services-list-toggle .seopress-wizard-service-toggle::before{content:"";display:block;width:16px;height:16px;background:#fff;position:absolute;top:0;right:0;border-radius:100%}.seopress-wizard-service-item .seopress-wizard-service-toggle.disabled,.seopress-wizard-services-list-toggle .seopress-wizard-service-toggle.disabled{border-color:#999;background-color:#999}.seopress-wizard-service-item .seopress-wizard-service-toggle.disabled::before,.seopress-wizard-services-list-toggle .seopress-wizard-service-toggle.disabled::before{right:auto;left:0}.seopress-wizard-service-item .seopress-wizard-service-settings,.seopress-wizard-services-list-toggle .seopress-wizard-service-settings{display:none;margin-top:.75em;margin-bottom:0;cursor:default}.seopress-wizard-service-item .seopress-wizard-service-settings.hide,.seopress-wizard-services-list-toggle .seopress-wizard-service-settings.hide{display:none}.seopress-wizard-service-item.checked .seopress-wizard-service-settings,.seopress-wizard-services-list-toggle.checked .seopress-wizard-service-settings{display:inline-block}.seopress-wizard-service-item.checked .seopress-wizard-service-settings.hide,.seopress-wizard-services-list-toggle.checked .seopress-wizard-service-settings.hide{display:none}.seopress-wizard-service-item.closed,.seopress-wizard-services-list-toggle.closed{border-bottom:0}.seopress-wizard-services-list-toggle{cursor:pointer}.seopress-wizard-services-list-toggle .seopress-wizard-service-enable::before{content:"\f343";font-family:dashicons;visibility:initial;color:#666;font-size:25px;margin-top:-7px;margin-left:-5px;position:absolute;visibility:visible}.seopress-wizard-services-list-toggle.closed .seopress-wizard-service-enable::before{content:"\f347"}.seopress-wizard-services-list-toggle .seopress-wizard-service-enable input{visibility:hidden;position:relative}.seopress-wizard-services.manual .seopress-wizard-service-item{display:none}.seopress-wizard-services.shipping{margin:0}.seopress-wizard-services.shipping .seopress-wizard-service-name{font-weight:400;text-align:left;-webkit-box-align:center;-webkit-align-items:center;align-items:center;max-height:5em;padding:0}.seopress-wizard-services.shipping .seopress-wizard-service-item{padding-left:2em;padding-top:.67em}.seopress-wizard-services.shipping .seopress-wizard-service-item:first-child{border-bottom:0;padding-bottom:0;font-weight:700}.seopress-wizard-services.shipping .seopress-wizard-service-item:first-child .seopress-wizard-service-name{font-weight:700}.seopress-wizard-services.shipping .shipping-method-setting,.seopress-wizard-services.shipping .seopress-wizard-shipping-method-select{display:-webkit-box;display:-webkit-flex;display:flex}.seopress-wizard-services.shipping .shipping-method-setting.hide,.seopress-wizard-services.shipping .seopress-wizard-shipping-method-select.hide{display:none}.seopress-wizard-services.shipping .shipping-method-setting input,.seopress-wizard-services.shipping .seopress-wizard-shipping-method-dropdown{margin-right:2em;margin-bottom:1em}.seopress-wizard-services.shipping .shipping-method-setting input .select2,.seopress-wizard-services.shipping .seopress-wizard-shipping-method-dropdown .select2{min-width:130px}.seopress-wizard-services.shipping .seopress-wizard-service-description{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;color:#a6a6a6}.seopress-wizard-services.shipping .seopress-wizard-service-item:not(:first-child) .seopress-wizard-service-description{font-size:.92em;padding-bottom:10px}.seopress-wizard-services.shipping .shipping-method-setting input{width:95px;border:1px solid #aaa;border-color:#ddd;border-radius:4px;height:28px;padding-left:8px;padding-right:24px;font-size:14px;color:#444;background-color:#fff;display:inline-block}.seopress-wizard-services.shipping .shipping-method-description,.seopress-wizard-services.shipping .shipping-method-setting .description{color:#7e7e7e;font-size:.9em}.seopress-wizard-services.shipping .shipping-method-setting input::-webkit-input-placeholder{color:#e1e1e1}.seopress-wizard-services.shipping .shipping-method-setting input:-ms-input-placeholder{color:#e1e1e1}.seopress-wizard-services.shipping .shipping-method-setting input::-ms-input-placeholder{color:#e1e1e1}.seopress-wizard-services.shipping .shipping-method-setting input::placeholder{color:#e1e1e1}.seopress-setup-shipping-units p{line-height:1.5em;font-size:13px;margin-bottom:.25em;text-align:center}.seopress-setup-shipping-units .seopress-setup-shipping-unit{margin-bottom:1.75em}.seopress-setup-shipping-units .seopress-setup-shipping-unit .select2{min-width:125px;top:-5px}.hide{display:none}.seopress-wizard-features{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;list-style:none;padding:0}.seopress-wizard-features .seopress-wizard-feature-item{-webkit-flex-basis:calc(50% - 4em - 3px);flex-basis:calc(50% - 4em - 3px);border:1px solid #eee;padding:2em}.seopress-wizard-features .seopress-wizard-feature-item:nth-child(1){border-radius:4px 0 0 0}.seopress-wizard-features .seopress-wizard-feature-item:nth-child(2){border-left:0;border-radius:0 4px 0 0}.seopress-wizard-features .seopress-wizard-feature-item:nth-child(3){border-top:0;border-radius:0 0 0 4px}.seopress-wizard-features .seopress-wizard-feature-item:nth-child(4){border-top:0;border-left:0;border-radius:0 0 4px 0}.seopress-wizard-features p.seopress-wizard-feature-description,.seopress-wizard-features p.seopress-wizard-feature-name{margin:0;line-height:1.5em}h3.jetpack-reasons{text-align:center;margin:3em 0 1em 0;font-size:14px}.jetpack-logo,.wcs-notice{display:block;margin:1.75em auto 2em auto;max-height:175px}.activate-splash .jetpack-logo{width:170px;margin-bottom:0}.activate-splash .wcs-notice{margin-top:1em;padding-left:57px}.step{text-align:center}.seopress-setup .seopress-setup-actions .button{text-shadow:none;font-weight:300;font-size:16px;padding:1em 2em;box-shadow:none;min-width:12em;min-width:auto;margin-top:10px}.seopress-setup .seopress-setup-actions .button:active,.seopress-setup .seopress-setup-actions .button:focus,.seopress-setup .seopress-setup-actions .button:hover{box-shadow:none}.seopress-setup .seopress-setup-actions .plugin-install-info{display:block;font-style:italic;color:#999;font-size:14px;line-height:1.5em;margin:5px 0}.seopress-setup .seopress-setup-actions .plugin-install-info>*{display:block}.seopress-setup .seopress-setup-actions .plugin-install-info .plugin-install-info-list-item::after{content:", "}.seopress-setup .seopress-setup-actions .plugin-install-info .plugin-install-info-list-item:last-of-type::after{content:". "}.seopress-setup .seopress-setup-actions .plugin-install-info a{white-space:nowrap}.seopress-setup .seopress-setup-actions .plugin-install-info a:not(:hover):not(:focus){color:inherit}.plugin-install-source{background:rgba(187,119,174,.15)}.plugin-install-source:not(.seopress-wizard-service-item){box-shadow:0 0 0 10px rgba(187,119,174,.15)}.location-prompt{color:#666;font-size:13px;font-weight:500;margin-bottom:.5em;margin-top:.85em;display:inline-block}.location-input{border:1px solid #aaa;border-color:#ddd;border-radius:4px;height:30px;width:calc(100% - 8px - 24px - 2px);padding-left:8px;padding-right:24px;font-size:16px;color:#444;background-color:#fff;display:inline-block}.location-input.dropdown{width:100%}.address-step .select2{min-width:100%}.store-address-container .city-and-postcode{display:-webkit-box;display:-webkit-flex;display:flex}.store-address-container .city-and-postcode div{-webkit-flex-basis:50%;flex-basis:50%;margin-right:1em}.store-address-container .city-and-postcode div:last-of-type{margin-right:0}.store-address-container .select2-container,.store-address-container input[type=text],.store-address-container select{margin-bottom:10px}.product-type-container{margin-top:14px;margin-bottom:1px}#seopress_sell_in_person{margin-left:0}.seopress-wizard-service-settings .payment-email-input{border:1px solid #aaa;border-color:#ddd;border-radius:4px;height:30px;padding:0 8px;font-size:14px;color:#444;background-color:#fff;display:inline-block}.seopress-wizard-service-settings .payment-email-input[disabled]{color:#aaa}.newsletter-form-container{display:-webkit-box;display:-webkit-flex;display:flex}.newsletter-form-container .newsletter-form-email{border:1px solid #aaa;border-color:#ddd;border-radius:4px;height:42px;padding:0 8px;font-size:16px;color:#666;background-color:#fff;display:inline-block;margin-right:6px;-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1}.newsletter-form-container .newsletter-form-button-container{-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0}.seopress-setup .seopress-setup-actions .button.newsletter-form-button{height:42px;padding:0 1em;margin:0}.seopress-wizard-next-steps{border:1px solid #eee;border-radius:4px;list-style:none;padding:0}.seopress-wizard-next-steps li{padding:0}.seopress-wizard-next-steps .seopress-wizard-next-step-item{display:-webkit-box;display:-webkit-flex;display:flex;border-top:1px solid #eee}.seopress-wizard-next-steps .seopress-wizard-next-step-item:first-child{border-top:0}.seopress-wizard-next-steps .seopress-wizard-next-step-description{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;margin:1.5em}.seopress-wizard-next-steps .seopress-wizard-next-step-action{-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.seopress-wizard-next-steps .seopress-wizard-next-step-action .button{margin:1em 1.5em}.seopress-wizard-next-steps p.next-step-heading{margin:0;font-size:.95em;font-weight:400;font-variant:all-petite-caps}.seopress-wizard-next-steps p.next-step-extra-info{margin:0}.seopress-wizard-next-steps h3.next-step-description{margin:0;font-size:16px;font-weight:600}.seopress-wizard-next-steps .seopress-wizard-additional-steps{border-top:1px solid #eee}.seopress-wizard-next-steps .seopress-wizard-additional-steps .seopress-wizard-next-step-description{margin-bottom:0}.seopress-wizard-next-steps .seopress-wizard-additional-steps .seopress-setup-actions{margin:0 0 1.5em 0}.seopress-wizard-next-steps .seopress-wizard-additional-steps .seopress-setup-actions .button{font-size:15px;margin:1em 0 1em 1.5em}.seopress-wizard-next-steps .seopress-wizard-additional-steps .seopress-setup-actions .button::last-child{margin-right:1.5em}p.next-steps-help-text{color:#9f9f9f;padding:0 2em;text-align:center;font-size:.9em}p.jetpack-terms{font-size:.8em;text-align:center;max-width:480px;margin:0 auto;line-height:1.5em}.seopress-error{background:#ffe6e5;border-color:#ffc5c2;padding:1em;margin-bottom:1em}.seopress-error p{margin-top:0;margin-bottom:.5em;color:#444}.seopress-error a{color:#ff645c}.seopress-error .reconnect-reminder{font-size:.85em}.seopress-error .seopress-setup-actions .button{font-size:14px}.seopress-wizard-service-setting-ppec_paypal_reroute_requests,.seopress-wizard-service-setting-stripe_create_account{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.seopress-wizard-service-setting-ppec_paypal_reroute_requests .payment-checkbox-input,.seopress-wizard-service-setting-stripe_create_account .payment-checkbox-input{-webkit-box-ordinal-group:2;-webkit-order:1;order:1;margin-top:5px;margin-left:0;margin-right:0;width:1.5em}.seopress-wizard-service-setting-ppec_paypal_reroute_requests .ppec_paypal_reroute_requests,.seopress-wizard-service-setting-ppec_paypal_reroute_requests .stripe_create_account,.seopress-wizard-service-setting-stripe_create_account .ppec_paypal_reroute_requests,.seopress-wizard-service-setting-stripe_create_account .stripe_create_account{-webkit-box-ordinal-group:3;-webkit-order:2;order:2;margin-left:.3em}.seopress-wizard-service-setting-ppec_paypal_email,.seopress-wizard-service-setting-stripe_email{margin-top:.75em;margin-left:1.5em}.seopress-wizard-service-setting-ppec_paypal_email label.ppec_paypal_email,.seopress-wizard-service-setting-ppec_paypal_email label.stripe_email,.seopress-wizard-service-setting-stripe_email label.ppec_paypal_email,.seopress-wizard-service-setting-stripe_email label.stripe_email{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.seopress-wizard-service-setting-ppec_paypal_email input.payment-email-input,.seopress-wizard-service-setting-stripe_email input.payment-email-input{box-sizing:border-box;margin-bottom:.5em;width:100%;height:32px}.seopress-setup-content .recommended-step {padding: 0 2.5em;text-align: left;display: inline-block;width: 100%;}.seopress-setup-content .recommended-step a{text-decoration: none;}.seopress-setup-content .recommended-item{list-style:none;margin: 1rem 0}.seopress-setup-content .recommended-item:last-child label{margin-bottom:0}.seopress-setup-content .recommended-item label{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;margin-bottom:1.5em}.seopress-setup-content .recommended-item label::after,.seopress-setup-content .recommended-item label::before{top:auto}.seopress-setup-content .recommended-item label::after{margin-top:-1.5px}.seopress-setup-content .recommended-item .recommended-item-icon{border:1px solid #fff;border-radius:7px;height:3.5em;margin-right:1em;margin-left:4px}.seopress-setup-content .recommended-item .recommended-item-icon.recommended-item-icon-storefront_theme{background-color:#f4a224;max-height:3em;max-width:3em;padding:.25em}.seopress-setup-content .recommended-item .recommended-item-icon.recommended-item-icon-automated_taxes{background-color:#d0011b;max-height:1.75em;padding:.875em}.seopress-setup-content .recommended-item .recommended-item-icon.recommended-item-icon-mailchimp{background-color:#ffe01b;height:2em;padding:.75em}.seopress-setup-content .recommended-item .recommended-item-icon.recommended-item-icon-seopress_services{background-color:#f0f0f0;max-height:1.5em;padding:1.3em .7em}.seopress-setup-content .recommended-item .recommended-item-icon.recommended-item-icon-shipstation{background-color:#f0f0f0;padding:.3em}.seopress-setup-content .recommended-item .recommended-item-description-container h3{font-size:15px;font-weight:700;letter-spacing:.5px;margin-bottom:0}.seopress-setup-content .recommended-item .recommended-item-description-container p{margin-top:0;line-height:1.5em}.seopress-wizard-service-info{padding:1em 2em;background-color:#fafafa}.help_tip{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.seopress-setup #tiptip_content{background:#5f6973}.seopress-setup #tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:#5f6973}.seopress-setup-shipping-recommended{border-bottom:1px solid #eee;margin-top:0;padding:30px 0}@media only screen and (max-width:400px){#seopress-logo img{max-width:80%}.seopress-setup-steps{display:none}.store-address-container .city-and-postcode{display:block}.store-address-container .city-and-postcode div{margin-right:0}.seopress-wizard-service-item,.seopress-wizard-services-list-toggle{-webkit-flex-wrap:wrap;flex-wrap:wrap}.seopress-wizard-service-item .seopress-wizard-service-enable,.seopress-wizard-services-list-toggle .seopress-wizard-service-enable{-webkit-box-ordinal-group:3;-webkit-order:2;order:2;padding:20px 0 0}.seopress-wizard-service-item .seopress-wizard-service-description,.seopress-wizard-services-list-toggle .seopress-wizard-service-description{-webkit-box-ordinal-group:4;-webkit-order:3;order:3}.seopress-wizard-service-item .seopress-wizard-service-name,.seopress-wizard-services-list-toggle .seopress-wizard-service-name{padding:20px 20px 0;text-align:left;-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;justify-content:space-between!important}.seopress-wizard-service-item .seopress-wizard-service-name img,.seopress-wizard-services-list-toggle .seopress-wizard-service-name img{margin:0}.newsletter-form-container{display:block}.newsletter-form-container .newsletter-form-email{display:block;box-sizing:border-box;width:100%;margin-bottom:10px}.newsletter-form-container .button.newsletter-form-button{float:left}.seopress-wizard-next-steps .seopress-wizard-next-step-item{-webkit-flex-wrap:wrap;flex-wrap:wrap}.seopress-wizard-next-steps .seopress-wizard-next-step-item .seopress-wizard-next-step-description{margin-bottom:0}.seopress-wizard-next-steps .seopress-wizard-next-step-item .seopress-wizard-next-step-action p{margin:0}}
assets/js/seopress-dashboard.js CHANGED
@@ -5,6 +5,26 @@ jQuery(document).ready(function(){
5
  }
6
 
7
  //Hide notices
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  //**Divide comments
9
  jQuery('#notice-divide-comments').on('click', function() {
10
  jQuery('#notice-divide-comments').attr('data-notice', jQuery('#notice-divide-comments').attr('data-notice') == '1' ? '0' : '1');
5
  }
6
 
7
  //Hide notices
8
+ //**Wizard
9
+ jQuery('#notice-wizard').on('click', function() {
10
+ jQuery('#notice-wizard').attr('data-notice', jQuery('#notice-wizard').attr('data-notice') == '1' ? '0' : '1');
11
+ jQuery.ajax({
12
+ method : 'POST',
13
+ url : seopressAjaxHideNotices.seopress_hide_notices,
14
+ data : {
15
+ action: 'seopress_hide_notices',
16
+ notice: 'notice-wizard',
17
+ notice_value: jQuery('#notice-wizard').attr('data-notice'),
18
+ _ajax_nonce: seopressAjaxHideNotices.seopress_nonce,
19
+ },
20
+ success : function( data ) {
21
+ jQuery( '#seopress-notice-save' ).css('display', 'block');
22
+ jQuery( '#seopress-notice-save .html' ).html('Notice successfully removed');
23
+ jQuery( '#notice-wizard-alert' ).fadeOut();
24
+ jQuery( '#seopress-notice-save' ).delay(3500).fadeOut();
25
+ },
26
+ });
27
+ });
28
  //**Divide comments
29
  jQuery('#notice-divide-comments').on('click', function() {
30
  jQuery('#notice-divide-comments').attr('data-notice', jQuery('#notice-divide-comments').attr('data-notice') == '1' ? '0' : '1');
inc/admin/admin-wizard.php ADDED
@@ -0,0 +1,822 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Setup Wizard Class
4
+ *
5
+ * Takes new users through some basic steps to setup SEOPress.
6
+ *
7
+ * @package SEOPress/inc/admin
8
+ * @version 3.5.8
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ /**
16
+ * SEOPRESS_Admin_Setup_Wizard class.
17
+ */
18
+ class SEOPRESS_Admin_Setup_Wizard {
19
+
20
+ /**
21
+ * Current step
22
+ *
23
+ * @var string
24
+ */
25
+ private $step = '';
26
+
27
+ /**
28
+ * Steps for the setup wizard
29
+ *
30
+ * @var array
31
+ */
32
+ private $steps = array();
33
+
34
+ /**
35
+ * Hook in tabs.
36
+ */
37
+ public function __construct() {
38
+ if ( apply_filters( 'seopress_enable_setup_wizard', true ) && current_user_can( 'manage_options' ) ) {
39
+ add_action( 'admin_menu', array( $this, 'admin_menus' ) );
40
+ add_action( 'admin_init', array( $this, 'setup_wizard' ) );
41
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Add admin menus/screens.
47
+ */
48
+ public function admin_menus() {
49
+ add_dashboard_page( '', '', 'manage_options', 'seopress-setup', '' );
50
+ }
51
+
52
+ /**
53
+ * Register/enqueue scripts and styles for the Setup Wizard.
54
+ *
55
+ * Hooked onto 'admin_enqueue_scripts'.
56
+ */
57
+ public function enqueue_scripts() {
58
+ wp_enqueue_style( 'seopress-setup', plugins_url( 'assets/css/seopress-setup.css', dirname(dirname(__FILE__))), array( 'dashicons', 'install' ), SEOPRESS_VERSION );
59
+ wp_register_script( 'seopress-migrate-ajax', plugins_url( 'assets/js/seopress-yoast-migrate.js', dirname(dirname(__FILE__))), array( 'jquery' ), SEOPRESS_VERSION, true );
60
+
61
+ $seopress_migrate = array(
62
+ 'seopress_aio_migrate' => array(
63
+ 'seopress_nonce' => wp_create_nonce('seopress_aio_migrate_nonce'),
64
+ 'seopress_aio_migration' => admin_url( 'admin-ajax.php'),
65
+ ),
66
+ 'seopress_yoast_migrate' => array(
67
+ 'seopress_nonce' => wp_create_nonce('seopress_yoast_migrate_nonce'),
68
+ 'seopress_yoast_migration' => admin_url( 'admin-ajax.php'),
69
+ ),
70
+ 'seopress_seo_framework_migrate' => array(
71
+ 'seopress_nonce' => wp_create_nonce('seopress_seo_framework_migrate_nonce'),
72
+ 'seopress_seo_framework_migration' => admin_url( 'admin-ajax.php'),
73
+ ),
74
+ 'seopress_rk_migrate' => array(
75
+ 'seopress_nonce' => wp_create_nonce('seopress_rk_migrate_nonce'),
76
+ 'seopress_rk_migration' => admin_url( 'admin-ajax.php'),
77
+ ),
78
+ );
79
+ wp_localize_script( 'seopress-migrate-ajax', 'seopressAjaxMigrate', $seopress_migrate );
80
+ }
81
+
82
+ /**
83
+ * Show the setup wizard.
84
+ */
85
+ public function setup_wizard() {
86
+ if ( empty( $_GET['page'] ) || 'seopress-setup' !== $_GET['page'] ) {
87
+ return;
88
+ }
89
+ $default_steps = array(
90
+ 'import_settings' => array(
91
+ 'name' => __( 'Import SEO settings', 'wp-seopress' ),
92
+ 'view' => array( $this, 'seopress_setup_import_settings' ),
93
+ 'handler' => array( $this, 'seopress_setup_import_settings_save' ),
94
+ ),
95
+ 'site' => array(
96
+ 'name' => __( 'Your site', 'wp-seopress' ),
97
+ 'view' => array( $this, 'seopress_setup_site' ),
98
+ 'handler' => array( $this, 'seopress_setup_site_save' ),
99
+ ),
100
+ 'indexing' => array(
101
+ 'name' => __( 'Indexing', 'wp-seopress' ),
102
+ 'view' => array( $this, 'seopress_setup_indexing' ),
103
+ 'handler' => array( $this, 'seopress_setup_indexing_save' ),
104
+ ),
105
+ 'advanced' => array(
106
+ 'name' => __( 'Advanced options', 'wp-seopress' ),
107
+ 'view' => array( $this, 'seopress_setup_advanced' ),
108
+ 'handler' => array( $this, 'seopress_setup_advanced_save' ),
109
+ ),
110
+ 'ready' => array(
111
+ 'name' => __( 'Ready!', 'wp-seopress' ),
112
+ 'view' => array( $this, 'seopress_setup_ready' ),
113
+ 'handler' => '',
114
+ ),
115
+ );
116
+
117
+ $this->steps = apply_filters( 'seopress_setup_wizard_steps', $default_steps );
118
+ $this->step = isset( $_GET['step'] ) ? sanitize_key( $_GET['step'] ) : current( array_keys( $this->steps ) );
119
+
120
+ if ( ! empty( $_POST['save_step'] ) && isset( $this->steps[ $this->step ]['handler'] ) ) {
121
+ call_user_func( $this->steps[ $this->step ]['handler'], $this );
122
+ }
123
+
124
+ ob_start();
125
+ $this->setup_wizard_header();
126
+ $this->setup_wizard_steps();
127
+ $this->setup_wizard_content();
128
+ $this->setup_wizard_footer();
129
+ exit;
130
+ }
131
+
132
+ /**
133
+ * Get the URL for the next step's screen.
134
+ *
135
+ * @param string $step slug (default: current step).
136
+ * @return string URL for next step if a next step exists.
137
+ * Admin URL if it's the last step.
138
+ * Empty string on failure.
139
+ * @since 3.5.8
140
+ */
141
+ public function get_next_step_link( $step = '' ) {
142
+ if ( ! $step ) {
143
+ $step = $this->step;
144
+ }
145
+
146
+ $keys = array_keys( $this->steps );
147
+ if ( end( $keys ) === $step ) {
148
+ return admin_url();
149
+ }
150
+
151
+ $step_index = array_search( $step, $keys, true );
152
+ if ( false === $step_index ) {
153
+ return '';
154
+ }
155
+
156
+ return add_query_arg( 'step', $keys[ $step_index + 1 ], remove_query_arg( 'activate_error' ) );
157
+ }
158
+
159
+ /**
160
+ * Setup Wizard Header.
161
+ */
162
+ public function setup_wizard_header() {
163
+ set_current_screen();
164
+ ?>
165
+ <!DOCTYPE html>
166
+ <html <?php language_attributes(); ?>>
167
+ <head>
168
+ <meta name="viewport" content="width=device-width" />
169
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
170
+ <title><?php esc_html_e( 'SEOPress &rsaquo; Setup Wizard', 'wp-seopress' ); ?></title>
171
+ <?php do_action( 'admin_enqueue_scripts' ); ?>
172
+ <?php wp_print_scripts( 'seopress-migrate-ajax' ); ?>
173
+ <?php do_action( 'admin_print_styles' ); ?>
174
+ <?php do_action( 'admin_head' ); ?>
175
+ </head>
176
+ <body class="seopress-setup wp-core-ui">
177
+ <h1 id="seopress-logo"><a href="https://www.seopress.org/" target="_blank"><img src="<?php echo plugins_url('assets/img/logo-seopress.svg', dirname(dirname(__FILE__))); ?>" alt="SEOPress" /></a></h1>
178
+ <?php
179
+ }
180
+
181
+ /**
182
+ * Setup Wizard Footer.
183
+ */
184
+ public function setup_wizard_footer() {
185
+ ?>
186
+ <?php if ( 'import_settings' === $this->step ) : ?>
187
+ <a class="seopress-setup-footer-links" href="<?php echo esc_url( admin_url() ); ?>"><?php esc_html_e( 'Not right now', 'wp-seopress' ); ?></a>
188
+ <?php elseif ( 'site' === $this->step || 'indexing' === $this->step || 'advanced' === $this->step ) : ?>
189
+ <a class="seopress-setup-footer-links" href="<?php echo esc_url( $this->get_next_step_link() ); ?>"><?php esc_html_e( 'Skip this step', 'wp-seopress' ); ?></a>
190
+ <?php endif; ?>
191
+ <?php do_action( 'seopress_setup_footer' ); ?>
192
+ </body>
193
+ </html>
194
+ <?php
195
+ }
196
+
197
+ /**
198
+ * Output the steps.
199
+ */
200
+ public function setup_wizard_steps() {
201
+ $output_steps = $this->steps;
202
+ ?>
203
+ <ol class="seopress-setup-steps">
204
+ <?php
205
+ foreach ( $output_steps as $step_key => $step ) {
206
+ $is_completed = array_search( $this->step, array_keys( $this->steps ), true ) > array_search( $step_key, array_keys( $this->steps ), true );
207
+
208
+ if ( $step_key === $this->step ) {
209
+ ?>
210
+ <li class="active"><?php echo esc_html( $step['name'] ); ?></li>
211
+ <?php
212
+ } elseif ( $is_completed ) {
213
+ ?>
214
+ <li class="done">
215
+ <a href="<?php echo esc_url( add_query_arg( 'step', $step_key, remove_query_arg( 'activate_error' ) ) ); ?>"><?php echo esc_html( $step['name'] ); ?></a>
216
+ </li>
217
+ <?php
218
+ } else {
219
+ ?>
220
+ <li><?php echo esc_html( $step['name'] ); ?></li>
221
+ <?php
222
+ }
223
+ }
224
+ ?>
225
+ </ol>
226
+ <?php
227
+ }
228
+
229
+ /**
230
+ * Output the content for the current step.
231
+ */
232
+ public function setup_wizard_content() {
233
+ echo '<div class="seopress-setup-content">';
234
+ if ( ! empty( $this->steps[ $this->step ]['view'] ) ) {
235
+ call_user_func( $this->steps[ $this->step ]['view'], $this );
236
+ }
237
+ echo '</div>';
238
+ }
239
+
240
+ /**
241
+ * Init "Step 1: Import SEO settings".
242
+ */
243
+ public function seopress_setup_import_settings() {
244
+ ?>
245
+ <form method="post" class="address-step">
246
+ <?php wp_nonce_field( 'seopress-setup' ); ?>
247
+ <p class="store-setup"><?php esc_html_e( 'The following wizard will help you configure SEOPress and get you started quickly.', 'wp-seopress' ); ?></p>
248
+
249
+ <div class="store-address-container">
250
+ <!-- Yoast import tool -->
251
+ <div id="yoast-migration-tool" class="postbox section-tool seopress-wizard-services">
252
+ <h3><span><?php _e( 'Import posts and terms metadata from Yoast', 'wp-seopress' ); ?></span></h3>
253
+ <p><?php _e( 'By clicking Migrate, we\'ll import:', 'wp-seopress' ); ?></p>
254
+ <ul>
255
+ <li><?php _e('Title tags','wp-seopress'); ?></li>
256
+ <li><?php _e('Meta description','wp-seopress'); ?></li>
257
+ <li><?php _e('Facebook Open Graph tags (title, description and image thumbnail)','wp-seopress'); ?></li>
258
+ <li><?php _e('Twitter tags (title, description and image thumbnail)','wp-seopress'); ?></li>
259
+ <li><?php _e('Meta Robots (noindex, nofollow...)','wp-seopress'); ?></li>
260
+ <li><?php _e('Canonical URL','wp-seopress'); ?></li>
261
+ <li><?php _e('Focus keywords','wp-seopress'); ?></li>
262
+ </ul>
263
+ <p style="color:red"><span class="dashicons dashicons-warning"></span> <?php _e( '<strong>WARNING:</strong> Migration will delete / update all SEOPress posts and terms metadata. Some dynamic variables will not be interpreted. We do NOT delete any Yoast datas.', 'wp-seopress' ); ?></p>
264
+ <button id="seopress-yoast-migrate" class="button"><?php _e('Migrate now','wp-seopress'); ?></button>
265
+ <span class="spinner"></span>
266
+ <div class="log"></div>
267
+ </div><!-- .postbox -->
268
+
269
+ <!-- All In One import tool -->
270
+ <div id="aio-migration-tool" class="postbox section-tool seopress-wizard-services">
271
+ <h3><span><?php _e( 'Import posts and terms metadata from All In One SEO', 'wp-seopress' ); ?></span></h3>
272
+ <p><?php _e( 'By clicking Migrate, we\'ll import:', 'wp-seopress' ); ?></p>
273
+ <ul>
274
+ <li><?php _e('Title tags','wp-seopress'); ?></li>
275
+ <li><?php _e('Meta description','wp-seopress'); ?></li>
276
+ <li><?php _e('Facebook Open Graph tags (title, description and image thumbnail)','wp-seopress'); ?></li>
277
+ <li><?php _e('Twitter image thumbnail','wp-seopress'); ?></li>
278
+ <li><?php _e('Meta Robots (noindex, nofollow)','wp-seopress'); ?></li>
279
+ </ul>
280
+ <p style="color:red"><span class="dashicons dashicons-warning"></span> <?php _e( '<strong>WARNING:</strong> Migration will update / delete all SEOPress posts and terms metadata. Some dynamic variables will not be interpreted. We do NOT delete any AIO datas.', 'wp-seopress' ); ?></p>
281
+ <button id="seopress-aio-migrate" class="button"><?php _e('Migrate now','wp-seopress'); ?></button>
282
+ <span class="spinner"></span>
283
+ <div class="log"></div>
284
+ </div><!-- .postbox -->
285
+
286
+ <!-- SEO Framework import tool -->
287
+ <div id="seo-framework-migration-tool" class="postbox section-tool seopress-wizard-services">
288
+ <h3><span><?php _e( 'Import posts and terms metadata from The SEO Framework', 'wp-seopress' ); ?></span></h3>
289
+ <p><?php _e( 'By clicking Migrate, we\'ll import:', 'wp-seopress' ); ?></p>
290
+ <ul>
291
+ <li><?php _e('Title tags','wp-seopress'); ?></li>
292
+ <li><?php _e('Meta description','wp-seopress'); ?></li>
293
+ <li><?php _e('Facebook Open Graph tags (title, description and image thumbnail)','wp-seopress'); ?></li>
294
+ <li><?php _e('Twitter tags (title, description and image thumbnail)','wp-seopress'); ?></li>
295
+ <li><?php _e('Meta Robots (noindex, nofollow, noarchive)','wp-seopress'); ?></li>
296
+ <li><?php _e('Canonical URL','wp-seopress'); ?></li>
297
+ <li><?php _e('Redirect URL','wp-seopress'); ?></li>
298
+ </ul>
299
+ <p style="color:red"><span class="dashicons dashicons-warning"></span> <?php _e( '<strong>WARNING:</strong> Migration will update / delete all SEOPress posts and terms metadata. Some dynamic variables will not be interpreted. We do NOT delete any SEO Framework datas.', 'wp-seopress' ); ?></p>
300
+ <button id="seopress-seo-framework-migrate" class="button"><?php _e('Migrate now','wp-seopress'); ?></button>
301
+ <span class="spinner"></span>
302
+ <div class="log"></div>
303
+ </div><!-- .postbox -->
304
+
305
+ <!-- RK import tool -->
306
+ <div id="rk-migration-tool" class="postbox section-tool seopress-wizard-services">
307
+ <h3><span><?php _e( 'Import posts and terms metadata from Rank Math', 'wp-seopress' ); ?></span></h3>
308
+ <p><?php _e( 'By clicking Migrate, we\'ll import:', 'wp-seopress' ); ?></p>
309
+ <ul>
310
+ <li><?php _e('Title tags','wp-seopress'); ?></li>
311
+ <li><?php _e('Meta description','wp-seopress'); ?></li>
312
+ <li><?php _e('Facebook Open Graph tags (title, description and image thumbnail)','wp-seopress'); ?></li>
313
+ <li><?php _e('Twitter tags (title, description and image thumbnail)','wp-seopress'); ?></li>
314
+ <li><?php _e('Meta Robots (noindex, nofollow, noarchive, noimageindex)','wp-seopress'); ?></li>
315
+ <li><?php _e('Canonical URL','wp-seopress'); ?></li>
316
+ <li><?php _e('Focus keywords','wp-seopress'); ?></li>
317
+ </ul>
318
+ <p style="color:red"><span class="dashicons dashicons-warning"></span> <?php _e( '<strong>WARNING:</strong> Migration will update / delete all SEOPress posts and terms metadata. Some dynamic variables will not be interpreted. We do NOT delete any Rank Math datas.', 'wp-seopress' ); ?></p>
319
+ <button id="seopress-rk-migrate" class="button"><?php _e('Migrate now','wp-seopress'); ?></button>
320
+ <span class="spinner"></span>
321
+ <div class="log"></div>
322
+ </div><!-- .postbox -->
323
+ </div>
324
+
325
+ <p class="seopress-setup-actions step">
326
+ <button type="submit" class="button-primary button button-large button-next" value="<?php esc_attr_e( "Next step", 'wp-seopress' ); ?>" name="save_step"><?php esc_html_e( "Next step", 'wp-seopress' ); ?></button>
327
+ <?php wp_nonce_field( 'seopress-setup' ); ?>
328
+ </p>
329
+ </form>
330
+ <?php
331
+ }
332
+
333
+ /**
334
+ * Save step 1 settings.
335
+ */
336
+ public function seopress_setup_import_settings_save() {
337
+ check_admin_referer( 'seopress-setup' );
338
+ wp_safe_redirect( esc_url_raw( $this->get_next_step_link() ) );
339
+ exit;
340
+ }
341
+
342
+ /**
343
+ * Init "Step 2: Your site".
344
+ */
345
+ public function seopress_setup_site() {
346
+ $seopress_titles_option = get_option( 'seopress_titles_option_name' );
347
+ $seopress_social_option = get_option( 'seopress_social_option_name' );
348
+
349
+ $site_sep = isset($seopress_titles_option['seopress_titles_sep']) ? $seopress_titles_option['seopress_titles_sep'] : NULL;
350
+ $site_title = isset($seopress_titles_option['seopress_titles_home_site_title']) ? $seopress_titles_option['seopress_titles_home_site_title'] : NULL;
351
+ $knowledge_type = isset($seopress_social_option['seopress_social_knowledge_type']) ? $seopress_social_option['seopress_social_knowledge_type'] : NULL;
352
+ $knowledge_name = isset($seopress_social_option['seopress_social_knowledge_name']) ? $seopress_social_option['seopress_social_knowledge_name'] : NULL;
353
+ $knowledge_img = isset($seopress_social_option['seopress_social_knowledge_img']) ? $seopress_social_option['seopress_social_knowledge_img'] : NULL;
354
+ $knowledge_fb = isset($seopress_social_option['seopress_social_accounts_facebook']) ? $seopress_social_option['seopress_social_accounts_facebook'] : NULL;
355
+ $knowledge_tw = isset($seopress_social_option['seopress_social_accounts_twitter']) ? $seopress_social_option['seopress_social_accounts_twitter'] : NULL;
356
+ $knowledge_pin = isset($seopress_social_option['seopress_social_accounts_pinterest']) ? $seopress_social_option['seopress_social_accounts_pinterest'] : NULL;
357
+ $knowledge_insta = isset($seopress_social_option['seopress_social_accounts_instagram']) ? $seopress_social_option['seopress_social_accounts_instagram'] : NULL;
358
+ $knowledge_yt = isset($seopress_social_option['seopress_social_accounts_youtube']) ? $seopress_social_option['seopress_social_accounts_youtube'] : NULL;
359
+ $knowledge_li = isset($seopress_social_option['seopress_social_accounts_linkedin']) ? $seopress_social_option['seopress_social_accounts_linkedin'] : NULL;
360
+ $knowledge_mys = isset($seopress_social_option['seopress_social_accounts_myspace']) ? $seopress_social_option['seopress_social_accounts_myspace'] : NULL;
361
+ $knowledge_sound = isset($seopress_social_option['seopress_social_accounts_soundcloud']) ? $seopress_social_option['seopress_social_accounts_soundcloud'] : NULL;
362
+ $knowledge_tu = isset($seopress_social_option['seopress_social_accounts_tumblr']) ? $seopress_social_option['seopress_social_accounts_tumblr'] : NULL;
363
+ ?>
364
+
365
+ <h1><?php esc_html_e( 'Your site', 'wp-seopress' ); ?></h1>
366
+ <form method="post">
367
+ <p><?php esc_html_e( 'Fill out the fields below to configure general settings needed to build title tags and knowledge graph for Google.', 'wp-seopress' ); ?></p>
368
+
369
+ <label class="location-prompt" for="site_sep"><?php esc_html_e( 'Separator', 'wp-seopress' ); ?></label>
370
+ <input type="text" id="site_sep" class="location-input" name="site_sep" placeholder="<?php esc_html_e('eg: |', 'wp-seopress'); ?>" required value="<?php echo $site_sep; ?>" />
371
+
372
+ <label class="location-prompt" for="site_title"><?php esc_html_e( 'Site title', 'wp-seopress' ); ?></label>
373
+ <input type="text" id="site_title" class="location-input" name="site_title" placeholder="<?php esc_html_e('eg: My super website', 'wp-seopress'); ?>" required value="<?php echo $site_title; ?>" />
374
+
375
+ <label class="location-prompt" for="knowledge_type"><?php esc_html_e('Person or organization','wp-seopress'); ?></label>
376
+ <?php
377
+ echo '<select id="knowledge_type" name="knowledge_type" data-placeholder="'.esc_attr__( 'Choose a knowledge type', 'wp-seopress' ).'" class="location-input wc-enhanced-select dropdown">';
378
+ echo ' <option ';
379
+ if ('None' == $knowledge_type) echo 'selected="selected"';
380
+ echo ' value="none">'. __("None (will disable this feature)","wp-seopress") .'</option>';
381
+ echo ' <option ';
382
+ if ('Person' == $knowledge_type) echo 'selected="selected"';
383
+ echo ' value="Person">'. __("Person","wp-seopress") .'</option>';
384
+ echo '<option ';
385
+ if ('Organization' == $knowledge_type) echo 'selected="selected"';
386
+ echo ' value="Organization">'. __("Organization","wp-seopress") .'</option>';
387
+ echo '</select>';
388
+ ?>
389
+
390
+ <label class="location-prompt" for="knowledge_name"><?php esc_html_e( 'Your name/organization', 'wp-seopress' ); ?></label>
391
+ <input type="text" id="knowledge_name" class="location-input" name="knowledge_name" placeholder="<?php esc_html_e('eg: SEOPress', 'wp-seopress'); ?>" value="<?php echo $knowledge_name; ?>" />
392
+
393
+ <label class="location-prompt" for="knowledge_img"><?php esc_html_e( 'Your photo/organization logo', 'wp-seopress' ); ?></label>
394
+ <input type="text" id="knowledge_img" class="location-input" name="knowledge_img" placeholder="<?php esc_html_e('eg: https://www.example.com/logo.png', 'wp-seopress'); ?>" value="<?php echo $knowledge_img; ?>" />
395
+
396
+ <label class="location-prompt" for="knowledge_fb"><?php esc_html_e( 'Facebook page URL', 'wp-seopress' ); ?></label>
397
+ <input type="text" id="knowledge_fb" class="location-input" name="knowledge_fb" placeholder="<?php esc_html_e('eg: https://www.facebook.com/your-page','wp-seopress'); ?>" value="<?php echo $knowledge_fb; ?>" />
398
+
399
+ <label class="location-prompt" for="knowledge_tw"><?php esc_html_e( 'Twitter Username', 'wp-seopress' ); ?></label>
400
+ <input type="text" id="knowledge_tw" class="location-input" name="knowledge_tw" placeholder="<?php esc_html_e('eg: @wp_seopress', 'wp-seopress'); ?>" value="<?php echo $knowledge_tw; ?>" />
401
+
402
+ <label class="location-prompt" for="knowledge_pin"><?php esc_html_e( 'Pinterest URL', 'wp-seopress' ); ?></label>
403
+ <input type="text" id="knowledge_pin" class="location-input" name="knowledge_pin" placeholder="<?php esc_html_e('eg: https://pinterest.com/wpbuy/', 'wp-seopress'); ?>" value="<?php echo $knowledge_pin; ?>" />
404
+
405
+ <label class="location-prompt" for="knowledge_insta"><?php esc_html_e( 'Instagram URL', 'wp-seopress' ); ?></label>
406
+ <input type="text" id="knowledge_insta" class="location-input" name="knowledge_insta" placeholder="<?php esc_html_e('eg: https://www.instagram.com/wp_seopress/', 'wp-seopress'); ?>" value="<?php echo $knowledge_insta; ?>" />
407
+
408
+ <label class="location-prompt" for="knowledge_yt"><?php esc_html_e( 'YouTube URL', 'wp-seopress' ); ?></label>
409
+ <input type="text" id="knowledge_yt" class="location-input" name="knowledge_yt" placeholder="<?php esc_html_e('eg: https://www.youtube.com/SEOPress', 'wp-seopress'); ?>" value="<?php echo $knowledge_yt; ?>" />
410
+
411
+ <label class="location-prompt" for="knowledge_li"><?php esc_html_e( 'LinkedIn URL', 'wp-seopress' ); ?></label>
412
+ <input type="text" id="knowledge_li" class="location-input" name="knowledge_li" placeholder="<?php esc_html_e('eg: http://linkedin.com/company/seopress/', 'wp-seopress'); ?>" value="<?php echo $knowledge_li; ?>" />
413
+
414
+ <label class="location-prompt" for="knowledge_mys"><?php esc_html_e( 'MySpace URL', 'wp-seopress' ); ?></label>
415
+ <input type="text" id="knowledge_mys" class="location-input" name="knowledge_mys" placeholder="<?php esc_html_e('eg: https://myspace.com/your-page', 'wp-seopress'); ?>" value="<?php echo $knowledge_mys; ?>" />
416
+
417
+ <label class="location-prompt" for="knowledge_sound"><?php esc_html_e( 'Soundcloud URL', 'wp-seopress' ); ?></label>
418
+ <input type="text" id="knowledge_sound" class="location-input" name="knowledge_sound" placeholder="<?php esc_html_e('eg: https://soundcloud.com/michaelmccannmusic', 'wp-seopress'); ?>" value="<?php echo $knowledge_sound; ?>" />
419
+
420
+ <label class="location-prompt" for="knowledge_tu"><?php esc_html_e( 'Tumblr URL', 'wp-seopress' ); ?></label>
421
+ <input type="text" id="knowledge_tu" class="location-input" name="knowledge_tu" placeholder="<?php esc_html_e('eg: https://your-site.tumblr.com', 'wp-seopress'); ?>" value="<?php echo $knowledge_tu; ?>" />
422
+
423
+ <p class="seopress-setup-actions step">
424
+ <button type="submit" class="button-primary button button-large button-next" value="<?php esc_attr_e( 'Continue', 'wp-seopress' ); ?>" name="save_step"><?php esc_html_e( 'Continue', 'wp-seopress' ); ?></button>
425
+ <?php wp_nonce_field( 'seopress-setup' ); ?>
426
+ </p>
427
+ </form>
428
+ <?php
429
+ }
430
+
431
+ /**
432
+ * Save step 2 settings.
433
+ */
434
+ public function seopress_setup_site_save() {
435
+ check_admin_referer( 'seopress-setup' );
436
+
437
+ //Get options
438
+ $seopress_titles_option = get_option("seopress_titles_option_name");
439
+ $seopress_social_option = get_option("seopress_social_option_name");
440
+
441
+ //Titles
442
+ $seopress_titles_option['seopress_titles_sep'] = isset( $_POST['site_sep'] ) ? sanitize_text_field( wp_unslash( $_POST['site_sep'] ) ) : '';
443
+ $seopress_titles_option['seopress_titles_home_site_title'] = isset( $_POST['site_title'] ) ? sanitize_text_field( wp_unslash( $_POST['site_title'] ) ) : '';
444
+
445
+ //Social
446
+ $seopress_social_option['seopress_social_knowledge_type'] = isset( $_POST['knowledge_type'] ) ? esc_attr( wp_unslash( $_POST['knowledge_type'] ) ) : '';
447
+ $seopress_social_option['seopress_social_knowledge_name'] = isset( $_POST['knowledge_name'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_name'] ) ) : '';
448
+ $seopress_social_option['seopress_social_knowledge_img'] = isset( $_POST['knowledge_img'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_img'] ) ) : '';
449
+
450
+ //Social accounts
451
+ $seopress_social_option['seopress_social_accounts_facebook'] = isset( $_POST['knowledge_fb'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_fb'] ) ) : '';
452
+ $seopress_social_option['seopress_social_accounts_twitter'] = isset( $_POST['knowledge_tw'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_tw'] ) ) : '';
453
+ $seopress_social_option['seopress_social_accounts_pinterest'] = isset( $_POST['knowledge_pin'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_pin'] ) ) : '';
454
+ $seopress_social_option['seopress_social_accounts_instagram'] = isset( $_POST['knowledge_insta'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_insta'] ) ) : '';
455
+ $seopress_social_option['seopress_social_accounts_youtube'] = isset( $_POST['knowledge_yt'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_yt'] ) ) : '';
456
+ $seopress_social_option['seopress_social_accounts_linkedin'] = isset( $_POST['knowledge_li'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_li'] ) ) : '';
457
+ $seopress_social_option['seopress_social_accounts_myspace'] = isset( $_POST['knowledge_mys'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_mys'] ) ) : '';
458
+ $seopress_social_option['seopress_social_accounts_soundcloud'] = isset( $_POST['knowledge_sound'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_sound'] ) ) : '';
459
+ $seopress_social_option['seopress_social_accounts_tumblr'] = isset( $_POST['knowledge_tu'] ) ? sanitize_text_field( wp_unslash( $_POST['knowledge_tu'] ) ) : '';
460
+
461
+ //Save options
462
+ update_option( 'seopress_titles_option_name', $seopress_titles_option );
463
+ update_option( 'seopress_social_option_name', $seopress_social_option );
464
+
465
+ wp_safe_redirect( esc_url_raw( $this->get_next_step_link() ) );
466
+ exit;
467
+ }
468
+
469
+ /**
470
+ * Init "Step 3: Indexing Step".
471
+ */
472
+ public function seopress_setup_indexing() {
473
+ $seopress_titles_option = get_option( 'seopress_titles_option_name' );
474
+ ?>
475
+ <h1><?php esc_html_e( 'Indexing', 'wp-seopress' ); ?></h1>
476
+ <p><?php esc_html_e( 'Specify to the search engines what you want to index or not. Defaut: index', 'wp-seopress' ); ?></p>
477
+ <form method="post" class="seopress-wizard-indexing-form">
478
+ <?php if(!empty(seopress_get_post_types())) { ?>
479
+ <div class="seopress-wizard-services">
480
+ <p>
481
+ <?php _e('For which single post types, indexing should be disabled?','wp-seopress'); ?>
482
+ </p>
483
+
484
+ <ul>
485
+ <?php
486
+ //Post Types
487
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
488
+ $seopress_titles_single_titles = isset($seopress_titles_option['seopress_titles_single_titles'][$seopress_cpt_key]['noindex']);
489
+
490
+ echo '<h3>'.$seopress_cpt_value->labels->name.' <em><small>['.$seopress_cpt_value->name.']</small></em></h3>';
491
+
492
+ //Single No-Index CPT
493
+ echo '<li class="recommended-item checkbox">';
494
+ echo '<input id="seopress_titles_single_cpt_noindex['.$seopress_cpt_key.']" name="seopress_titles_option_name[seopress_titles_single_titles]['.$seopress_cpt_key.'][noindex]" type="checkbox"';
495
+ if ('1' == $seopress_titles_single_titles) echo 'checked="yes"';
496
+ echo ' value="1"/>';
497
+
498
+ echo '<label for="seopress_titles_single_cpt_noindex['.$seopress_cpt_key.']">'. __( 'Do not display this single post type in search engine results <strong>(noindex)</strong>', 'wp-seopress' ) .'</label>';
499
+ echo '</li>';
500
+ }
501
+ ?>
502
+ </ul>
503
+ </div>
504
+ <?php } ?>
505
+
506
+ <?php if(!empty(seopress_get_post_types())) { ?>
507
+ <div class="seopress-wizard-services">
508
+ <p>
509
+ <?php _e('For which post type archives, indexing should be disabled?','wp-seopress'); ?>
510
+ </p>
511
+
512
+ <ul>
513
+ <?php
514
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
515
+ if (!in_array($seopress_cpt_key, array('post','page'))) {
516
+
517
+ echo '<h3>'.$seopress_cpt_value->labels->name.' <em><small>['.$seopress_cpt_value->name.']</small></em></h2>';
518
+
519
+ //Archive No-Index CPT
520
+ $seopress_titles_archive_titles = isset($seopress_titles_option['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex']);
521
+
522
+ echo '<li class="recommended-item checkbox">';
523
+ 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"';
524
+ if ('1' == $seopress_titles_archive_titles) echo 'checked="yes"';
525
+ echo ' value="1"/>';
526
+
527
+ echo '<label for="seopress_titles_archive_cpt_noindex['.$seopress_cpt_key.']">'. __( 'Do not display this post type archive in search engine results <strong>(noindex)</strong>', 'wp-seopress' ) .'</label>';
528
+ echo '</li>';
529
+ }
530
+ }
531
+ ?>
532
+ </ul>
533
+ </div>
534
+ <?php } ?>
535
+
536
+ <?php if(!empty(seopress_get_taxonomies())) { ?>
537
+ <div class="seopress-wizard-services">
538
+ <p>
539
+ <?php _e('For which taxonomy archives, indexing should be disabled?','wp-seopress'); ?>
540
+ </p>
541
+
542
+ <ul>
543
+ <?php
544
+ //Archives
545
+ foreach (seopress_get_taxonomies() as $seopress_tax_key => $seopress_tax_value) {
546
+ $seopress_titles_tax_titles = isset($seopress_titles_option['seopress_titles_tax_titles'][$seopress_tax_key]['noindex']);
547
+
548
+ echo '<h3>'.$seopress_tax_value->labels->name.' <em><small>['.$seopress_tax_value->name.']</small></em></h2>';
549
+
550
+ //Tax No-Index
551
+ echo '<li class="recommended-item checkbox">';
552
+ echo '<input id="seopress_titles_tax_noindex['.$seopress_tax_key.']" name="seopress_titles_option_name[seopress_titles_tax_titles]['.$seopress_tax_key.'][noindex]" type="checkbox"';
553
+ if ('1' == $seopress_titles_tax_titles) echo 'checked="yes"';
554
+ echo ' value="1"/>';
555
+
556
+ echo '<label for="seopress_titles_tax_noindex['.$seopress_tax_key.']">'. __( 'Do not display this taxonomy archive in search engine results <strong>(noindex)</strong>', 'wp-seopress' ) .'</label>';
557
+ echo '</li>';
558
+ }
559
+ ?>
560
+ </ul>
561
+ </div>
562
+ <?php } ?>
563
+
564
+ <p class="seopress-setup-actions step">
565
+ <button type="submit" class="button-primary button button-large button-next" value="<?php esc_attr_e( 'Continue', 'wp-seopress' ); ?>" name="save_step"><?php esc_html_e( 'Continue', 'wp-seopress' ); ?></button>
566
+ <?php wp_nonce_field( 'seopress-setup' ); ?>
567
+ </p>
568
+ </form>
569
+ <?php
570
+ }
571
+
572
+ /**
573
+ * Save Step 3 settings.
574
+ */
575
+ public function seopress_setup_indexing_save() {
576
+ check_admin_referer( 'seopress-setup' );
577
+
578
+ //Get options
579
+ $seopress_titles_option = get_option("seopress_titles_option_name");
580
+
581
+ //Post Types noindex
582
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
583
+ if (isset($_POST['seopress_titles_option_name']['seopress_titles_single_titles'][$seopress_cpt_key]['noindex'])) {
584
+ $noindex = esc_attr(wp_unslash($_POST['seopress_titles_option_name']['seopress_titles_single_titles'][$seopress_cpt_key]['noindex']));
585
+ } else {
586
+ $noindex = NULL;
587
+ }
588
+ $seopress_titles_option['seopress_titles_single_titles'][$seopress_cpt_key]['noindex'] = $noindex;
589
+ }
590
+
591
+ //Post Type archives noindex
592
+ foreach (seopress_get_post_types() as $seopress_cpt_key => $seopress_cpt_value) {
593
+ if (isset($_POST['seopress_titles_option_name']['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex'])) {
594
+ $noindex = esc_attr(wp_unslash($_POST['seopress_titles_option_name']['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex']));
595
+ } else {
596
+ $noindex = NULL;
597
+ }
598
+ $seopress_titles_option['seopress_titles_archive_titles'][$seopress_cpt_key]['noindex'] = $noindex;
599
+ }
600
+
601
+ //Archives noindex
602
+ foreach (seopress_get_taxonomies() as $seopress_tax_key => $seopress_tax_value) {
603
+ if (isset($_POST['seopress_titles_option_name']['seopress_titles_tax_titles'][$seopress_tax_key]['noindex'])) {
604
+ $noindex = esc_attr(wp_unslash($_POST['seopress_titles_option_name']['seopress_titles_tax_titles'][$seopress_tax_key]['noindex']));
605
+ } else {
606
+ $noindex = NULL;
607
+ }
608
+ $seopress_titles_option['seopress_titles_tax_titles'][$seopress_tax_key]['noindex'] = $noindex;
609
+ }
610
+
611
+ //Save options
612
+ update_option( 'seopress_titles_option_name', $seopress_titles_option );
613
+
614
+ wp_redirect( esc_url_raw( $this->get_next_step_link() ) );
615
+ exit;
616
+ }
617
+
618
+ /**
619
+ * Init "Step 4: Advanced Step".
620
+ */
621
+ public function seopress_setup_advanced() {
622
+ $seopress_titles_option = get_option( 'seopress_titles_option_name' );
623
+ $author_noindex = isset($seopress_titles_option['seopress_titles_archives_author_noindex']);
624
+
625
+ $seopress_advanced_option = get_option( 'seopress_advanced_option_name' );
626
+ $attachments_file = isset($seopress_advanced_option['seopress_advanced_advanced_attachments_file']);
627
+ $category_url = isset($seopress_advanced_option['seopress_advanced_advanced_category_url']);
628
+ ?>
629
+ <h1><?php esc_html_e( 'Advanced options', 'wp-seopress' ); ?></h1>
630
+ <form method="post">
631
+ <ul class="seopress-wizard-services">
632
+ <?php
633
+ //Noindex on author archives
634
+ echo '<li class="seopress-wizard-service-item checkbox">';
635
+ echo '<input id="author_noindex" class="location-input" name="author_noindex" type="checkbox"';
636
+ if ('1' == $author_noindex) echo 'checked="yes"';
637
+ echo ' value="1"/>';
638
+
639
+ echo '<label for="author_noindex" class="location-prompt">'. __( 'Do not display author archives in search engine results <strong>(noindex)</strong>', 'wp-seopress' ) .'</label>';
640
+ echo '</li>';
641
+ echo '<li class="seopress-wizard-service-info">';
642
+ _e('You only have one author on your site? Check this option to avoid duplicate content.','wp-seopress');
643
+ echo '</li>';
644
+
645
+ //Redirect attachment pages to URL
646
+ echo '<li class="seopress-wizard-service-item checkbox">';
647
+ echo '<input id="attachments_file" class="location-input" name="attachments_file" type="checkbox"';
648
+ if ('1' == $attachments_file) echo 'checked="yes"';
649
+ echo ' value="1"/>';
650
+
651
+ echo '<label for="attachments_file" class="location-prompt">'. __( 'Redirect attachment pages to the file URL (https://www.example.com/my-image-file.jpg)', 'wp-seopress' ) .'</label>';
652
+ echo '</li>';
653
+ echo '<li class="seopress-wizard-service-info">';
654
+ _e('By default, SEOPress redirects your Attachment pages to the parent post. Optimize this by redirecting the user directly to the URL of the media file.','wp-seopress');
655
+ echo '</li>';
656
+
657
+ //Remove /category/ in URLs
658
+ echo '<li class="seopress-wizard-service-item checkbox">';
659
+ echo '<input id="category_url" name="category_url" type="checkbox" class="location-input"';
660
+ if ('1' == $category_url) echo 'checked="yes"';
661
+ echo ' value="1"/>';
662
+
663
+ echo '<label for="category_url" class="location-prompt">'. __( 'Remove /category/ in your permalinks', 'wp-seopress' ) .'</label>';
664
+ echo '</li>';
665
+ echo '<li class="seopress-wizard-service-info">';
666
+ _e('Shorten your URLs by removing /category/ and improve your SEO.','wp-seopress');
667
+ echo '</li>';
668
+ ?>
669
+ </ul>
670
+
671
+ <p class="seopress-setup-actions step">
672
+ <button type="submit" class="button-primary button button-large button-next" value="<?php esc_attr_e( 'Continue', 'wp-seopress' ); ?>" name="save_step"><?php esc_html_e( 'Continue', 'wp-seopress' ); ?></button>
673
+ <?php wp_nonce_field( 'seopress-setup' ); ?>
674
+ </p>
675
+ </form>
676
+ <?php
677
+ }
678
+
679
+ /**
680
+ * Save step 4 settings.
681
+ */
682
+ public function seopress_setup_advanced_save() {
683
+ check_admin_referer( 'seopress-setup' );
684
+
685
+ //Get options
686
+ $seopress_titles_option = get_option("seopress_titles_option_name");
687
+ $seopress_advanced_option = get_option("seopress_advanced_option_name");
688
+
689
+ //Author indexing
690
+ $seopress_titles_option['seopress_titles_archives_author_noindex'] = isset( $_POST['author_noindex'] ) ? esc_attr(wp_unslash($_POST['author_noindex'])) : NULL;
691
+
692
+ //Advanced
693
+ $seopress_advanced_option['seopress_advanced_advanced_attachments_file'] = isset( $_POST['attachments_file'] ) ? esc_attr(wp_unslash($_POST['attachments_file'])) : NULL;
694
+ $seopress_advanced_option['seopress_advanced_advanced_category_url'] = isset( $_POST['category_url'] ) ? esc_attr(wp_unslash($_POST['category_url'])) : NULL;
695
+
696
+ //Save options
697
+ update_option( 'seopress_titles_option_name', $seopress_titles_option );
698
+ update_option( 'seopress_advanced_option_name', $seopress_advanced_option );
699
+
700
+ wp_redirect( esc_url_raw( $this->get_next_step_link() ) );
701
+ exit;
702
+ }
703
+
704
+ /**
705
+ * Final step.
706
+ */
707
+ public function seopress_setup_ready() {
708
+ //Remove SEOPress notice
709
+ $seopress_notices = get_option('seopress_notices');
710
+ $seopress_notices['notice-wizard'] = "1";
711
+ update_option('seopress_notices',$seopress_notices);
712
+
713
+ //Flush permalinks
714
+ flush_rewrite_rules();
715
+ ?>
716
+ <h1><?php esc_html_e( "Your site is now ready for search engines!", 'wp-seopress' ); ?></h1>
717
+
718
+ <?php if (get_option( 'seopress_pro_license_status' ) !='valid' && is_plugin_active('wp-seopress-pro/seopress-pro.php') && !is_multisite()) { ?>
719
+ <div class="seopress-message seopress-newsletter">
720
+ <h3 class="seopress-setup-actions step">
721
+ <?php esc_html_e( "Welcome to SEOPress PRO!","wp-seopress"); ?>
722
+ </h3>
723
+ <p class="seopress-setup-actions step">
724
+ <?php esc_html_e( "Please activate your license to receive automatic updates and get premium support.", 'wp-seopress' ); ?>
725
+ </p>
726
+ <p class="seopress-setup-actions step">
727
+ <a class="button button-primary button-large" href="<?php echo admin_url( 'admin.php?page=seopress-license' ); ?>">
728
+ <span class="dashicons dashicons-admin-network"></span>
729
+ <?php _e('Activate License', 'wp-seopress'); ?>
730
+ </a>
731
+ </p>
732
+ </div>
733
+ <?php } else { ?>
734
+ <div class="seopress-message seopress-newsletter">
735
+ <h3 class="seopress-setup-actions step">
736
+ <?php esc_html_e( "Go PRO with SEOPress PRO!","wp-seopress"); ?>
737
+ </h3>
738
+ <p class="seopress-setup-actions step">
739
+ <?php esc_html_e( "Get a lot of additional features by upgrading PRO like automatic and manual schemas, Video Sitemap, WooCommerce enhancements, Analytics statistics in your Dashboard, breadcrumbs, redirections and more.", 'wp-seopress' ); ?>
740
+ </p>
741
+ <p class="seopress-setup-actions step">
742
+ <a class="button button-primary button-large" href="https://www.seopress.org/" target="_blank">
743
+ <span class="dashicons dashicons-cart"></span>
744
+ <?php _e('Buy SEOPress PRO - $39 / unlimited sites', 'wp-seopress'); ?>
745
+ </a>
746
+ </p>
747
+ </div>
748
+ <?php } ?>
749
+
750
+ <ul class="seopress-wizard-next-steps">
751
+ <li class="seopress-wizard-next-step-item">
752
+ <div class="seopress-wizard-next-step-description">
753
+ <p class="next-step-heading"><?php esc_html_e("Next step","wp-seopress"); ?></p>
754
+ <h3 class="next-step-description"><?php esc_html_e("Create your XML sitemaps","wp-seopress"); ?></h3>
755
+ <p class="next-step-extra-info"><?php esc_html_e("Build a custom XML sitemaps to improve Google crawling of your site.","wp-seopress"); ?></p>
756
+ </div>
757
+ <div class="seopress-wizard-next-step-action">
758
+ <p class="seopress-setup-actions step">
759
+ <a class="button button-primary button-large" href="<?php echo admin_url( 'admin.php?page=seopress-xml-sitemap' ); ?>">
760
+ <?php esc_html_e("Configure your XML sitemaps","wp-seopress"); ?>
761
+ </a>
762
+ </p>
763
+ </div>
764
+ </li>
765
+ <li class="seopress-wizard-additional-steps">
766
+ <div class="seopress-wizard-next-step-description">
767
+ <p class="next-step-heading"><?php esc_html_e( 'Follow us:', 'wp-seopress' ); ?></p>
768
+ </div>
769
+ <div class="seopress-wizard-next-step-action step">
770
+ <ul class="recommended-step">
771
+ <li class="recommended-item">
772
+ <a href="https://www.facebook.com/seopresspro/" target="_blank">
773
+ <span class="dashicons dashicons-facebook"></span>
774
+ <?php _e('Like our Facebook page','wp-seopress'); ?>
775
+ </a>
776
+ </li>
777
+ <li class="recommended-item">
778
+ <a href="https://twitter.com/wp_seopress" target="_blank">
779
+ <span class="dashicons dashicons-twitter"></span>
780
+ <?php _e('Follow us on Twitter','wp-seopress'); ?>
781
+ </a>
782
+ </li>
783
+ <li class="recommended-item">
784
+ <a href="https://www.youtube.com/seopress" target="_blank">
785
+ <span class="dashicons dashicons-video-alt3"></span>
786
+ <?php _e('Watch our guided tour videos to learn more about SEOPress','wp-seopress'); ?>
787
+ </a>
788
+ </li>
789
+ <li class="recommended-item">
790
+ <a href="https://www.instagram.com/wp_seopress/" target="_blank">
791
+ <span class="dashicons dashicons-instagram"></span>
792
+ <?php _e('The off side of SEOPress','wp-seopress'); ?>
793
+ </a>
794
+ </li>
795
+ </ul>
796
+ </div>
797
+ </li>
798
+ <li class="seopress-wizard-additional-steps">
799
+ <div class="seopress-wizard-next-step-description">
800
+ <p class="next-step-heading"><?php esc_html_e( 'You can also:', 'wp-seopress' ); ?></p>
801
+ </div>
802
+ <div class="seopress-wizard-next-step-action step">
803
+ <p class="seopress-setup-actions step">
804
+ <a class="button button-large" href="<?php echo esc_url( admin_url() ); ?>">
805
+ <?php esc_html_e( 'Visit Dashboard', 'wp-seopress' ); ?>
806
+ </a>
807
+ <a class="button button-large" href="<?php echo esc_url( admin_url( 'admin.php?page=seopress-option' ) ); ?>">
808
+ <?php esc_html_e( 'Review Settings', 'wp-seopress' ); ?>
809
+ </a>
810
+ <a class="button button-large" href="<?php echo esc_url('https://www.seopress.org/support/?utm_source=plugin&utm_medium=wizard&utm_campaign=seopress'); ?>" target="_blank">
811
+ <?php esc_html_e( 'Knowledge base', 'wp-seopress' ); ?>
812
+ </a>
813
+ </p>
814
+ </div>
815
+ </li>
816
+ </ul>
817
+ <p class="next-steps-help-text"><?php echo wp_kses_post( $help_text ); ?></p>
818
+ <?php
819
+ }
820
+ }
821
+
822
+ new SEOPRESS_Admin_Setup_Wizard();
inc/admin/admin.php CHANGED
@@ -690,7 +690,7 @@ class seopress_options
690
  <div id="section-import-redirects" class="postbox section-tool">
691
  <h3><span><?php _e( 'Import Redirections', 'wp-seopress' ); ?></span></h3>
692
  <div class="inside">
693
- <p><?php _e( 'Import your own redirections from a .csv file (separator ";"). You must have 4 columns in this order: url to match (without your domain name), url to redirect in absolute, type of redirection (301, 302 or 307) and the last one with the value yes to enable the redirect. Leave it empty to disable the redirect.', 'wp-seopress' ); ?></p>
694
  <p>
695
  <a href="https://www.seopress.org/wp-content/uploads/csv/seopress-redirections-example.csv" target="_blank">
696
  <?php _e('Download a CSV example','wp-seopress'); ?>
@@ -708,6 +708,22 @@ class seopress_options
708
  </form>
709
  </div><!-- .inside -->
710
  </div><!-- .postbox -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
711
  <div id="section-export-redirects" class="postbox section-tool">
712
  <h3><span><?php _e( 'Export Redirections', 'wp-seopress' ); ?></span></h3>
713
  <div class="inside">
@@ -924,6 +940,30 @@ class seopress_options
924
  <?php if(seopress_advanced_appearance_notifications_option() !='1') { ?>
925
  <div id="tab_seopress_notifications" class="seopress-tab <?php if ($current_tab == 'tab_seopress_notifications') { echo 'active'; } ?>">
926
  <div id="seopress-notifications-center">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
927
  <?php if (get_theme_support('title-tag') !='1') {
928
  function seopress_get_hidden_notices_title_tag_option() {
929
  $seopress_get_hidden_notices_title_tag_option = get_option("seopress_notices");
@@ -1291,7 +1331,7 @@ class seopress_options
1291
  if ($seopress_results_reverse_domain_array !='') {
1292
  echo '<ul>';
1293
  foreach ($seopress_results_reverse_domain_array as $key => $value) {
1294
- echo '<li><span class="dashicons dashicons-minus"></span><a href="'.$value[0].'" target="_blank">//'.$value[0].'</a><span class="dashicons dashicons-external"></span></li>';
1295
  }
1296
  echo '</ul>';
1297
  }
@@ -2702,6 +2742,14 @@ class seopress_options
2702
  array( $this, 'seopress_google_analytics_disable_callback' ), // Callback
2703
  'seopress-settings-admin-google-analytics-enable', // Page
2704
  'seopress_setting_section_google_analytics_enable' // Section
 
 
 
 
 
 
 
 
2705
  );
2706
 
2707
  add_settings_field(
@@ -4981,6 +5029,25 @@ class seopress_options
4981
  }
4982
  }
4983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4984
  public function seopress_google_analytics_opt_out_msg_callback()
4985
  {
4986
  $options = get_option( 'seopress_google_analytics_option_name' );
690
  <div id="section-import-redirects" class="postbox section-tool">
691
  <h3><span><?php _e( 'Import Redirections', 'wp-seopress' ); ?></span></h3>
692
  <div class="inside">
693
+ <p><?php _e( 'Import your own redirections from a .csv file (separator ";"). You must have 5 columns in this order: url to match (without your domain name), url to redirect in absolute, type of redirection (301, 302 or 307), yes to enable the redirect and the last one the query parameter ("exact_match" = Exact match with all parameters, "without_param" = Exclude all parameters or "with_ignored_param" = Exclude all parameters and passed them to the redirection). Leave it empty to disable the redirect.', 'wp-seopress' ); ?></p>
694
  <p>
695
  <a href="https://www.seopress.org/wp-content/uploads/csv/seopress-redirections-example.csv" target="_blank">
696
  <?php _e('Download a CSV example','wp-seopress'); ?>
708
  </form>
709
  </div><!-- .inside -->
710
  </div><!-- .postbox -->
711
+ <div id="section-import-redirects-plugin" class="postbox section-tool">
712
+ <h3><span><?php _e( 'Import Redirections from Redirections plugin', 'wp-seopress' ); ?></span></h3>
713
+ <div class="inside">
714
+ <p><?php _e( 'Import your own redirections from a .json file generated by the Redirections plugin. Note that we do not support certain options like regex. Make sure you don\'t have duplicates between your file and existing redirects to avoid conflicts.', 'wp-seopress' ); ?></p>
715
+ <form method="post" enctype="multipart/form-data">
716
+ <p>
717
+ <input type="file" name="import_file"/>
718
+ </p>
719
+ <p>
720
+ <input type="hidden" name="seopress_action" value="import_redirections_plugin_settings" />
721
+ <?php wp_nonce_field( 'seopress_import_redirections_plugin_nonce', 'seopress_import_redirections_plugin_nonce' ); ?>
722
+ <?php submit_button( __( 'Import', 'wp-seopress' ), 'secondary', 'submit', false ); ?>
723
+ </p>
724
+ </form>
725
+ </div><!-- .inside -->
726
+ </div><!-- .postbox -->
727
  <div id="section-export-redirects" class="postbox section-tool">
728
  <h3><span><?php _e( 'Export Redirections', 'wp-seopress' ); ?></span></h3>
729
  <div class="inside">
940
  <?php if(seopress_advanced_appearance_notifications_option() !='1') { ?>
941
  <div id="tab_seopress_notifications" class="seopress-tab <?php if ($current_tab == 'tab_seopress_notifications') { echo 'active'; } ?>">
942
  <div id="seopress-notifications-center">
943
+ <?php
944
+ function seopress_get_hidden_notices_wizard_option() {
945
+ $seopress_get_hidden_notices_wizard_option = get_option("seopress_notices");
946
+ if ( ! empty ( $seopress_get_hidden_notices_wizard_option ) ) {
947
+ foreach ($seopress_get_hidden_notices_wizard_option as $key => $seopress_get_hidden_notices_wizard_value)
948
+ $options[$key] = $seopress_get_hidden_notices_wizard_value;
949
+ if (isset($seopress_get_hidden_notices_wizard_option['notice-wizard'])) {
950
+ return $seopress_get_hidden_notices_wizard_option['notice-wizard'];
951
+ }
952
+ }
953
+ }
954
+ if(seopress_get_hidden_notices_wizard_option() =='1') {
955
+ //do nothing
956
+ } else { ?>
957
+ <div id="notice-wizard-alert" class="seopress-alert deleteable">
958
+ <p>
959
+ <span class="dashicons dashicons-warning"></span>
960
+ <strong><?php _e('Configure SEOPress in a few minutes thanks to our installation wizard','wp-seopress'); ?></strong>
961
+ </p>
962
+ <a class="button-primary" href="<?php echo admin_url( 'admin.php?page=seopress-setup' ); ?>"><?php _e('Start the wizard','wp-seopress'); ?></a>
963
+ <span name="notice-wizard" id="notice-wizard" class="dashicons dashicons-trash remove-notice" data-notice="notice-wizard"></span>
964
+ </div>
965
+ <?php }
966
+ ?>
967
  <?php if (get_theme_support('title-tag') !='1') {
968
  function seopress_get_hidden_notices_title_tag_option() {
969
  $seopress_get_hidden_notices_title_tag_option = get_option("seopress_notices");
1331
  if ($seopress_results_reverse_domain_array !='') {
1332
  echo '<ul>';
1333
  foreach ($seopress_results_reverse_domain_array as $key => $value) {
1334
+ echo '<li><span class="dashicons dashicons-minus"></span><a href="//'.preg_replace('#^https?://#', '', $value[0]).'" target="_blank">'.$value[0].'</a><span class="dashicons dashicons-external"></span></li>';
1335
  }
1336
  echo '</ul>';
1337
  }
2742
  array( $this, 'seopress_google_analytics_disable_callback' ), // Callback
2743
  'seopress-settings-admin-google-analytics-enable', // Page
2744
  'seopress_setting_section_google_analytics_enable' // Section
2745
+ );
2746
+
2747
+ add_settings_field(
2748
+ 'seopress_google_analytics_half_disable', // ID
2749
+ '', // Title
2750
+ array( $this, 'seopress_google_analytics_half_disable_callback' ), // Callback
2751
+ 'seopress-settings-admin-google-analytics-enable', // Page
2752
+ 'seopress_setting_section_google_analytics_enable' // Section
2753
  );
2754
 
2755
  add_settings_field(
5029
  }
5030
  }
5031
 
5032
+ public function seopress_google_analytics_half_disable_callback()
5033
+ {
5034
+ $options = get_option( 'seopress_google_analytics_option_name' );
5035
+
5036
+ $check = isset($options['seopress_google_analytics_half_disable']);
5037
+
5038
+ echo '<input id="seopress_google_analytics_half_disable" name="seopress_google_analytics_option_name[seopress_google_analytics_half_disable]" type="checkbox"';
5039
+ if ('1' == $check) echo 'checked="yes"';
5040
+ echo ' value="1"/>';
5041
+
5042
+ echo '<label for="seopress_google_analytics_half_disable">'. __( 'Display and automatically accept the user‚Äės consent on page load (not fully GDPR)', 'wp-seopress' ) .'</label>';
5043
+
5044
+ echo '<p class="description">'.__('The previous option must be checked to use this.','wp-seopress').'</p>';
5045
+
5046
+ if (isset($this->options['seopress_google_analytics_half_disable'])) {
5047
+ esc_attr( $this->options['seopress_google_analytics_half_disable']);
5048
+ }
5049
+ }
5050
+
5051
  public function seopress_google_analytics_opt_out_msg_callback()
5052
  {
5053
  $options = get_option( 'seopress_google_analytics_option_name' );
inc/admin/adminbar.php CHANGED
@@ -100,6 +100,12 @@ function seopress_admin_bar_links() {
100
  'href' => admin_url( 'edit.php?post_type=seopress_backlinks' ),
101
  ));
102
  }
 
 
 
 
 
 
103
  }
104
  }
105
  add_action( 'admin_bar_menu', 'seopress_admin_bar_links', 99 );
100
  'href' => admin_url( 'edit.php?post_type=seopress_backlinks' ),
101
  ));
102
  }
103
+ $wp_admin_bar->add_menu( array(
104
+ 'parent' => 'seopress_custom_top_level',
105
+ 'id' => 'seopress_custom_sub_menu_wizard',
106
+ 'title' => __( 'Configuration wizard', 'wp-seopress' ),
107
+ 'href' => admin_url( 'admin.php?page=seopress-setup' ),
108
+ ));
109
  }
110
  }
111
  add_action( 'admin_bar_menu', 'seopress_admin_bar_links', 99 );
inc/functions/options-google-analytics.php CHANGED
@@ -581,7 +581,7 @@ function seopress_custom_tracking_hook() {
581
  }
582
 
583
  if (seopress_google_analytics_enable_option() =='1' && seopress_google_analytics_ua_option() !='') {
584
- if (((isset($_COOKIE["seopress-user-consent-accept"]) && $_COOKIE["seopress-user-consent-accept"] =='1') && seopress_google_analytics_disable_option() =='1') || (seopress_google_analytics_disable_option() !='1')) { //User consent cookie OK
585
  if (is_user_logged_in()) {
586
  global $wp_roles;
587
 
581
  }
582
 
583
  if (seopress_google_analytics_enable_option() =='1' && seopress_google_analytics_ua_option() !='') {
584
+ if (seopress_google_analytics_half_disable_option() =='1' || (((isset($_COOKIE["seopress-user-consent-accept"]) && $_COOKIE["seopress-user-consent-accept"] =='1') && seopress_google_analytics_disable_option() =='1') || (seopress_google_analytics_disable_option() !='1'))) { //User consent cookie OK
585
  if (is_user_logged_in()) {
586
  global $wp_roles;
587
 
inc/functions/options-import-export.php CHANGED
@@ -110,8 +110,15 @@ function seopress_import_redirections_settings() {
110
  $csv_type_redirects[3] = '';
111
  }
112
 
 
 
 
 
 
 
 
113
  if (!empty($csv_line[0])) {
114
- $id = wp_insert_post(array('post_title' => urldecode($csv_line[0]), 'post_type' => 'seopress_404', 'post_status' => 'publish', 'meta_input' => array( '_seopress_redirections_value' => urldecode($csv_line[1]), '_seopress_redirections_type' => $csv_type_redirects[2], '_seopress_redirections_enabled' => $csv_line[3])));
115
  }
116
  }
117
  }
@@ -129,7 +136,7 @@ function seopress_export_redirections_settings() {
129
  if( ! current_user_can( 'manage_options' ) )
130
  return;
131
 
132
- //Init
133
  $redirects_html = '';
134
 
135
  $args = array(
@@ -148,14 +155,16 @@ function seopress_export_redirections_settings() {
148
  if ( $seopress_redirects_query->have_posts() ) {
149
  while ( $seopress_redirects_query->have_posts() ) {
150
  $seopress_redirects_query->the_post();
151
- $redirects_html .= urlencode(esc_attr(wp_filter_nohtml_kses(get_the_title())));
152
  $redirects_html .= ';';
153
- $redirects_html .= urlencode(esc_attr(wp_filter_nohtml_kses(get_post_meta(get_the_ID(),'_seopress_redirections_value',true))));
154
  $redirects_html .= ';';
155
  $redirects_html .= get_post_meta(get_the_ID(),'_seopress_redirections_type',true);
156
  $redirects_html .= ';';
157
  $redirects_html .= get_post_meta(get_the_ID(),'_seopress_redirections_enabled',true);
158
  $redirects_html .= ';';
 
 
159
  $redirects_html .= "\n";
160
  }
161
  wp_reset_postdata();
@@ -172,6 +181,57 @@ function seopress_export_redirections_settings() {
172
  }
173
  add_action( 'admin_init', 'seopress_export_redirections_settings' );
174
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  //Reset SEOPress Notices Settings
176
  function seopress_reset_notices_settings() {
177
  if( empty( $_POST['seopress_action'] ) || 'reset_notices_settings' != $_POST['seopress_action'] )
110
  $csv_type_redirects[3] = '';
111
  }
112
 
113
+ //Fifth column: redirections query param
114
+ if ($csv_line[4] =='exact_match' || $csv_line[4] =='with_ignored_param' || $csv_line[4] =='without_param') {
115
+ $csv_type_redirects[4] = $csv_line[4];
116
+ } else {
117
+ $csv_type_redirects[4] = 'exact_match';
118
+ }
119
+
120
  if (!empty($csv_line[0])) {
121
+ $id = wp_insert_post(array('post_title' => urldecode($csv_line[0]), 'post_type' => 'seopress_404', 'post_status' => 'publish', 'meta_input' => array( '_seopress_redirections_value' => urldecode($csv_line[1]), '_seopress_redirections_type' => $csv_type_redirects[2], '_seopress_redirections_enabled' => $csv_type_redirects[3], '_seopress_redirections_param' => $csv_type_redirects[4])));
122
  }
123
  }
124
  }
136
  if( ! current_user_can( 'manage_options' ) )
137
  return;
138
 
139
+ //Init
140
  $redirects_html = '';
141
 
142
  $args = array(
155
  if ( $seopress_redirects_query->have_posts() ) {
156
  while ( $seopress_redirects_query->have_posts() ) {
157
  $seopress_redirects_query->the_post();
158
+ $redirects_html .= '"'.urldecode(urlencode(esc_attr(wp_filter_nohtml_kses(get_the_title())))).'"';
159
  $redirects_html .= ';';
160
+ $redirects_html .= '"'.urldecode(urlencode(esc_attr(wp_filter_nohtml_kses(get_post_meta(get_the_ID(),'_seopress_redirections_value',true))))).'"';
161
  $redirects_html .= ';';
162
  $redirects_html .= get_post_meta(get_the_ID(),'_seopress_redirections_type',true);
163
  $redirects_html .= ';';
164
  $redirects_html .= get_post_meta(get_the_ID(),'_seopress_redirections_enabled',true);
165
  $redirects_html .= ';';
166
+ $redirects_html .= get_post_meta(get_the_ID(),'_seopress_redirections_param',true);
167
+ $redirects_html .= ';';
168
  $redirects_html .= "\n";
169
  }
170
  wp_reset_postdata();
181
  }
182
  add_action( 'admin_init', 'seopress_export_redirections_settings' );
183
 
184
+ //Import Redirections from Redirections plugin JSON file
185
+ function seopress_import_redirections_plugin_settings() {
186
+ if( empty( $_POST['seopress_action'] ) || 'import_redirections_plugin_settings' != $_POST['seopress_action'] )
187
+ return;
188
+ if( ! wp_verify_nonce( $_POST['seopress_import_redirections_plugin_nonce'], 'seopress_import_redirections_plugin_nonce' ) )
189
+ return;
190
+ if( ! current_user_can( 'manage_options' ) )
191
+ return;
192
+ $extension = end( explode( '.', $_FILES['import_file']['name'] ) );
193
+ if( $extension != 'json' ) {
194
+ wp_die( __( 'Please upload a valid .json file' ) );
195
+ }
196
+ $import_file = $_FILES['import_file']['tmp_name'];
197
+ if( empty( $import_file ) ) {
198
+ wp_die( __( 'Please upload a file to import' ) );
199
+ }
200
+
201
+ $settings = (array) json_decode( file_get_contents( $import_file ), true );
202
+
203
+ foreach ($settings['redirects'] as $redirect_key => $redirect_value) {
204
+ $type = '';
205
+ if (!empty($redirect_value['action_code'])) {
206
+ $type = $redirect_value['action_code'];
207
+ } else {
208
+ $type = '301';
209
+ }
210
+
211
+ $param = '';
212
+ if (!empty($redirect_value['match_data']['source']['flag_query'])) {
213
+ $flag_query = $redirect_value['match_data']['source']['flag_query'];
214
+ if ($flag_query =='pass') {
215
+ $param = 'with_ignored_param';
216
+ } elseif ($flag_query =='ignore') {
217
+ $param = 'without_param';
218
+ } else {
219
+ $param = 'exact_match';
220
+ }
221
+ }
222
+
223
+ $enabled ='';
224
+ if (!empty($redirect_value['enabled'] ==true)) {
225
+ $enabled ='yes';
226
+ }
227
+
228
+ wp_insert_post(array('post_title' => ltrim(urldecode($redirect_value['url']), '/'), 'post_type' => 'seopress_404', 'post_status' => 'publish', 'meta_input' => array( '_seopress_redirections_value' => urldecode($redirect_value['action_data']['url']), '_seopress_redirections_type' => $type, '_seopress_redirections_enabled' => $enabled, '_seopress_redirections_param' => $param)));
229
+ }
230
+
231
+ wp_safe_redirect( admin_url( 'edit.php?post_type=seopress_404' ) ); exit;
232
+ }
233
+ add_action( 'admin_init', 'seopress_import_redirections_plugin_settings' );
234
+
235
  //Reset SEOPress Notices Settings
236
  function seopress_reset_notices_settings() {
237
  if( empty( $_POST['seopress_action'] ) || 'reset_notices_settings' != $_POST['seopress_action'] )
inc/functions/options-sitemap.php CHANGED
@@ -132,7 +132,7 @@ if (seopress_xml_sitemap_html_enable_option() =='1') {
132
  );
133
  if ($cpt_key =='post') {
134
 
135
- if (get_post_type_archive_link($cpt_key)) {
136
  $content .= '<ul>';
137
  $content .= '<li><a href="'.get_post_type_archive_link($cpt_key).'">'.$obj->labels->name.'</a></li>';
138
  $content .= '</ul>';
132
  );
133
  if ($cpt_key =='post') {
134
 
135
+ if (get_post_type_archive_link($cpt_key) && get_option( 'page_for_posts' ) !=0) {
136
  $content .= '<ul>';
137
  $content .= '<li><a href="'.get_post_type_archive_link($cpt_key).'">'.$obj->labels->name.'</a></li>';
138
  $content .= '</ul>';
inc/functions/options.php CHANGED
@@ -143,6 +143,18 @@ if (seopress_get_toggle_google_analytics_option() =='1') {
143
  }
144
  }
145
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  //Disable Tracking - Message
147
  function seopress_google_analytics_opt_out_msg_option() {
148
  $seopress_google_analytics_opt_out_msg_option = get_option("seopress_google_analytics_option_name");
143
  }
144
  }
145
 
146
+ //Auto accept user consent
147
+ function seopress_google_analytics_half_disable_option() {
148
+ $seopress_google_analytics_half_disable_option = get_option("seopress_google_analytics_option_name");
149
+ if ( ! empty ( $seopress_google_analytics_half_disable_option ) ) {
150
+ foreach ($seopress_google_analytics_half_disable_option as $key => $seopress_google_analytics_half_disable_value)
151
+ $options[$key] = $seopress_google_analytics_half_disable_value;
152
+ if (isset($seopress_google_analytics_half_disable_option['seopress_google_analytics_half_disable'])) {
153
+ return $seopress_google_analytics_half_disable_option['seopress_google_analytics_half_disable'];
154
+ }
155
+ }
156
+ }
157
+
158
  //Disable Tracking - Message
159
  function seopress_google_analytics_opt_out_msg_option() {
160
  $seopress_google_analytics_opt_out_msg_option = get_option("seopress_google_analytics_option_name");
inc/functions/sitemap/template-xml-sitemaps-single.php CHANGED
@@ -131,7 +131,7 @@ function seopress_xml_sitemap_single() {
131
 
132
  //WooCommerce
133
  global $product;
134
- if ($product !='') {
135
  $product_img = $product->get_gallery_image_ids();
136
  }
137
 
131
 
132
  //WooCommerce
133
  global $product;
134
+ if ($product !='' && method_exists($product, 'get_gallery_image_ids')) {
135
  $product_img = $product->get_gallery_image_ids();
136
  }
137
 
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: 2019-06-07 16:16+0200\n"
6
- "PO-Revision-Date: 2019-06-07 16:17+0200\n"
7
  "Last-Translator: \n"
8
  "Language-Team: Benjamin DENIS <contact@seopress.org>\n"
9
  "Language: fr_FR\n"
@@ -36,34 +36,34 @@ msgid "XML / HTML Sitemap"
36
  msgstr "Sitemap XML / HTML"
37
 
38
  #: inc/admin/admin-header.php:48 inc/admin/admin.php:187
39
- #: inc/admin/admin.php:1460 inc/admin/adminbar.php:37
40
  msgid "Social Networks"
41
  msgstr "Réseaux Sociaux"
42
 
43
  #: inc/admin/admin-header.php:54 inc/admin/admin.php:188
44
- #: inc/admin/admin.php:1498 inc/admin/adminbar.php:43
45
  msgid "Google Analytics"
46
  msgstr "Google Analytics"
47
 
48
  #: inc/admin/admin-header.php:60 inc/admin/admin-metaboxes-form.php:58
49
  #: inc/admin/admin.php:189 inc/admin/admin.php:346 inc/admin/admin.php:622
50
- #: inc/admin/admin.php:1536 inc/admin/adminbar.php:49
51
  msgid "Advanced"
52
  msgstr "Avancé"
53
 
54
- #: inc/admin/admin-header.php:68 inc/admin/admin.php:1565
55
  msgid "WooCommerce"
56
  msgstr "WooCommerce"
57
 
58
- #: inc/admin/admin-header.php:74 inc/admin/admin.php:1593
59
  msgid "Easy Digital Downloads"
60
  msgstr "Easy Digital Downloads"
61
 
62
- #: inc/admin/admin-header.php:80 inc/admin/admin.php:1621
63
  msgid "Local Business"
64
  msgstr "Local Business"
65
 
66
- #: inc/admin/admin-header.php:86 inc/admin/admin.php:1649
67
  msgid "Dublin Core"
68
  msgstr "Dublin Core"
69
 
@@ -71,37 +71,37 @@ msgstr "Dublin Core"
71
  msgid "Structured Data Types (schema.org)"
72
  msgstr "Types de données structurées (schema.org)"
73
 
74
- #: inc/admin/admin-header.php:98 inc/admin/admin.php:1705
75
  msgid "Breadcrumbs"
76
  msgstr "Fil d'Ariane"
77
 
78
- #: inc/admin/admin-header.php:104 inc/admin/admin.php:1743
79
  msgid "Google Page Speed"
80
  msgstr "Google Page Speed"
81
 
82
- #: inc/admin/admin-header.php:111 inc/admin/admin.php:1764
83
  msgid "robots.txt"
84
  msgstr "robots.txt"
85
 
86
- #: inc/admin/admin-header.php:118 inc/admin/admin.php:1805
87
  msgid "Google News Sitemap"
88
  msgstr "Google News Sitemap"
89
 
90
- #: inc/admin/admin-header.php:124 inc/admin/admin.php:1844
91
  #: inc/admin/adminbar.php:87
92
  msgid "Redirections"
93
  msgstr "Redirections"
94
 
95
- #: inc/admin/admin-header.php:130 inc/admin/admin.php:1883
96
  msgid "Broken links"
97
  msgstr "Liens cassés"
98
 
99
- #: inc/admin/admin-header.php:136 inc/admin/admin.php:1894
100
  #: inc/admin/adminbar.php:99
101
  msgid "Backlinks"
102
  msgstr "Backlinks"
103
 
104
- #: inc/admin/admin-header.php:142 inc/admin/admin.php:1905
105
  msgid "URL Rewriting"
106
  msgstr "Réécriture d'URL"
107
 
@@ -109,21 +109,21 @@ msgstr "Réécriture d'URL"
109
  msgid "White Label"
110
  msgstr "Marque Blanche"
111
 
112
- #: inc/admin/admin-header.php:155 inc/admin/admin.php:1936
113
  msgid ".htaccess"
114
  msgstr ".htaccess"
115
 
116
- #: inc/admin/admin-header.php:162 inc/admin/admin.php:1948
117
  msgid "RSS"
118
  msgstr "RSS"
119
 
120
- #: inc/admin/admin-header.php:168 inc/admin/admin.php:1241
121
- #: inc/admin/admin.php:1981 inc/admin/adminbar.php:69
122
  msgid "License"
123
  msgstr "Licence"
124
 
125
  #: inc/admin/admin-header.php:175 inc/admin/admin.php:190
126
- #: inc/admin/admin.php:1960 inc/admin/adminbar.php:55
127
  msgid "Tools"
128
  msgstr "Outils"
129
 
@@ -143,7 +143,7 @@ msgstr "Envoyer un retour d'expérience"
143
  msgid "Follow us on Twitter (new window)"
144
  msgstr "Suivez-nous sur Twitter (nouvelle fenêtre)"
145
 
146
- #: inc/admin/admin-header.php:210
147
  msgid "Follow us on Twitter"
148
  msgstr "Suivez-nous sur Twitter"
149
 
@@ -350,9 +350,11 @@ msgstr "Aucune balise titre personnalisée définie pour cet article."
350
 
351
  #: inc/admin/admin-metaboxes-content-analysis-form.php:185
352
  #: inc/admin/admin-metaboxes-form.php:109
353
- #: inc/admin/admin-metaboxes-form.php:110 inc/admin/admin.php:733
354
- #: inc/admin/admin.php:754 inc/admin/admin.php:773 inc/admin/admin.php:794
355
- #: inc/admin/admin.php:2076 inc/admin/admin.php:3510
 
 
356
  #: inc/functions/options-advanced-admin.php:761
357
  msgid "Meta description"
358
  msgstr "Meta description"
@@ -568,20 +570,20 @@ msgstr "Entrez votre titre"
568
  msgid "(maximum recommended limit)"
569
  msgstr "(limite maximale recommandée)"
570
 
571
- #: inc/admin/admin-metaboxes-form.php:101 inc/admin/admin.php:3553
572
- #: inc/admin/admin.php:4488
573
  msgid "Post Title"
574
  msgstr "Titre du post"
575
 
576
  #: inc/admin/admin-metaboxes-form.php:103 inc/admin/admin.php:198
577
- #: inc/admin/admin.php:3502 inc/admin/admin.php:3555 inc/admin/admin.php:3674
578
- #: inc/admin/admin.php:3792 inc/admin/admin.php:3869 inc/admin/admin.php:3939
579
- #: inc/admin/admin.php:4008 inc/admin/admin.php:4058
580
  msgid "Site Title"
581
  msgstr "Titre du Site"
582
 
583
- #: inc/admin/admin-metaboxes-form.php:105 inc/admin/admin.php:2060
584
- #: inc/admin/admin.php:3489
585
  msgid "Separator"
586
  msgstr "Separateur"
587
 
@@ -656,8 +658,9 @@ msgstr ""
656
  "probablement défini dans les réglages globaux de l'extension."
657
 
658
  #: inc/admin/admin-metaboxes-form.php:186
659
- #: inc/admin/admin-metaboxes-form.php:187 inc/admin/admin.php:737
660
- #: inc/admin/admin.php:777 inc/admin/admin.php:798
 
661
  msgid "Canonical URL"
662
  msgstr "URL Canonique"
663
 
@@ -677,7 +680,8 @@ msgstr ""
677
  "Définissez la catégorie qui sera utilisée dans le permalien %category% si "
678
  "vous avez plusieurs catégories."
679
 
680
- #: inc/admin/admin-metaboxes-form.php:197 inc/admin/admin.php:4531
 
681
  msgid "None (will disable this feature)"
682
  msgstr "Aucun (désactivera cette fonctionnalité)"
683
 
@@ -718,19 +722,19 @@ msgid "Facebook Thumbnail"
718
  msgstr "Miniature Facebook"
719
 
720
  #: inc/admin/admin-metaboxes-form.php:228
721
- #: inc/admin/admin-metaboxes-form.php:246 inc/admin/admin.php:4800
722
- #: inc/admin/admin.php:4892
723
  msgid "Select your default thumbnail"
724
  msgstr "Sélectionnez votre miniature par défaut"
725
 
726
- #: inc/admin/admin-metaboxes-form.php:229 inc/admin/admin.php:4804
727
  msgid "Minimum size: 200x200px, ideal ratio 1.91:1, 8Mb max."
728
  msgstr "Taille minimum : 200x200px, ratio idéal 1.91:1, 8mo max."
729
 
730
  #: inc/admin/admin-metaboxes-form.php:230
731
  #: inc/admin/admin-metaboxes-form.php:248
732
- #: inc/admin/admin-metaboxes-form.php:391 inc/admin/admin.php:4565
733
- #: inc/admin/admin.php:4802 inc/admin/admin.php:4894
734
  msgid "Upload an Image"
735
  msgstr "Envoyer une image"
736
 
@@ -761,7 +765,7 @@ msgstr "Entrez votre description Twitter"
761
  msgid "Twitter Thumbnail"
762
  msgstr "Miniature Twitter"
763
 
764
- #: inc/admin/admin-metaboxes-form.php:247 inc/admin/admin.php:4896
765
  msgid ""
766
  "Minimum size: 144x144px (300x157px with large card enabled), ideal ratio 1:1 "
767
  "(2:1 with large card), 5Mb max."
@@ -1024,6 +1028,489 @@ msgstr "Ajouter une vidéo"
1024
  msgid "Content analysis"
1025
  msgstr "Analyse de contenu"
1026