Plugin Directory

Changeset 3412245


Ignore:
Timestamp:
12/05/2025 02:04:12 PM (9 days ago)
Author:
quentinldd
Message:

Update to version 2.1.0 from GitHub

Location:
zenpress
Files:
48 added
6 deleted
89 edited
1 copied

Legend:

Unmodified
Added
Removed
  • zenpress/tags/2.1.0/assets/build/index-rtl.css

    r3352459 r3412245  
    1 .zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}
     1.components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-left:1px solid #d6e2ed;flex-direction:column;padding-left:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:right;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;left:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-right:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;right:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-right:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;right:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""}
  • zenpress/tags/2.1.0/assets/build/index.asset.php

    r3372200 r3412245  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '64ce0d65ec54e96537a1');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '980bfa58281a120e84d0');
  • zenpress/tags/2.1.0/assets/build/index.css

    r3352459 r3412245  
    1 .zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}
     1.components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-right:1px solid #d6e2ed;flex-direction:column;padding-right:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:left;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;right:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-left:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;left:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-left:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;left:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""}
  • zenpress/tags/2.1.0/assets/build/index.js

    r3372200 r3412245  
    1 (()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element,i=window.wp.i18n,a=window.wp.components,r=window.wp.apiFetch;var c=e.n(r);const o=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:n})=>(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:n,__nextHasNoMarginBottom:!0}),h=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,i.__)("Save settings","zenpress")}),u=()=>{const{removeNotice:e}=(0,o.useDispatch)(l.store),s=(0,o.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},_=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:r}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:r,createErrorNotice:p}=(0,o.useDispatch)(l.store);return(0,n.useEffect)(()=>{c()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},i={};Object.keys(n).forEach(e=>{i[e]={...n[e],"enable-snippet":t.includes(e)}}),s(i)}).catch(()=>{p((0,i.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await c()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),r((0,i.__)("Settings saved.","zenpress"))}catch{p((0,i.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[_,w]=(0,n.useState)(new Set),v=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const i=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":i}}),t}),w(new Set(j))},x={};Object.keys(e).forEach(s=>{const t=e[s],n=t?.category||(0,i.__)("Uncategorized","zenpress");x[n]||(x[n]=[]),x[n].push({name:s,data:t})});const j=Object.keys(x).sort((e,s)=>e.localeCompare(s,void 0,{sensitivity:"base"}));return(0,p.jsx)("div",{className:"zenpress-row",children:(0,p.jsxs)("div",{className:"zenpress-col",children:[(0,p.jsxs)("div",{className:"zenpress-presets",children:[(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("p",{children:(0,i.__)("Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you.","zenpress")}),(0,p.jsx)("h2",{children:(0,i.__)("Pick a preset","zenpress")})]}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("showcase-website"),__next40pxDefaultSize:!0,children:(0,i.__)("Showcase website","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("blog"),__next40pxDefaultSize:!0,children:(0,i.__)("Blog","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("ecommerce"),__next40pxDefaultSize:!0,children:(0,i.__)("E-commerce","zenpress")}),(0,p.jsx)("div",{className:"zenpress-presets-description",children:(0,p.jsx)("h2",{children:(0,i.__)("Or just enable what you need","zenpress")})}),(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s}),w(new Set(j))},__next40pxDefaultSize:!0,children:(0,i.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,i.__)("Disable all actions","zenpress")})]})]}),j.map(e=>(0,p.jsx)(a.Panel,{children:(0,p.jsx)(a.PanelBody,{title:e,initialOpen:_.has(e),children:x[e].map(({name:e,data:t})=>(0,p.jsx)(a.PanelRow,{children:(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""})},e))})},e)),(0,p.jsx)("div",{className:"zenpress-actions",children:(0,p.jsx)(h,{onClick:t,isBusy:r})}),(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(u,{})})]})})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(_,{}))})})();
     1(()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element,r=window.wp.i18n,a=window.wp.components,i=window.wp.apiFetch;var o=e.n(i);const c=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:r})=>{const i=(0,n.useRef)(null);return(0,n.useEffect)(()=>((e,s)=>{if(!e)return;const t=t=>{if("Enter"===t.key){const n=e.querySelector('input[type="checkbox"]');n&&(document.activeElement===n||e.contains(document.activeElement))&&(t.preventDefault(),t.stopPropagation(),s())}};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}})(i.current,t),[t]),(0,p.jsx)("div",{ref:i,children:(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:r,__nextHasNoMarginBottom:!0})})},u=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,r.__)("Save settings","zenpress")}),b=()=>{const{removeNotice:e}=(0,c.useDispatch)(l.store),s=(0,c.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},h=(0,n.createContext)(),f=({selectedTabId:e,onSelect:s,orientation:t="horizontal",children:r})=>{const[a,i]=(0,n.useState)(),o=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,p.jsx)(h.Provider,{value:{selectedTabId:c,onSelect:t=>{void 0===e&&i(t),s?.(t)},orientation:t,getOrderedTabIds:()=>o.current?Array.from(o.current.querySelectorAll('[role="tab"]')).map(e=>{const s=e.getAttribute("id");return s?s.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:o},children:(0,p.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${t}`,children:r})})};f.TabList=({children:e})=>{const{orientation:s,tabListRef:t}=(0,n.useContext)(h);return(0,p.jsx)("div",{ref:t,className:`zenpress-tabs__list zenpress-tabs__list--${s}`,role:"tablist","aria-orientation":s,children:e})},f.Tab=({tabId:e,title:s,className:t="",children:r})=>{const{selectedTabId:a,onSelect:i,orientation:o,getOrderedTabIds:c}=(0,n.useContext)(h),l=a===e,d=(0,n.useRef)(null);return(0,p.jsx)("button",{ref:d,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${t}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>i(e),onKeyDown:s=>{const t=c();if(!t||0===t.length)return;const n=t.indexOf(e);if(-1===n)return;let r=n;if("vertical"===o?"ArrowDown"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowUp"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1):"ArrowRight"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowLeft"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1),"Home"===s.key?(s.preventDefault(),r=0):"End"===s.key&&(s.preventDefault(),r=t.length-1)," "===s.key||"Enter"===s.key)return s.preventDefault(),void i(e);if(r!==n&&r>=0&&r<t.length){const e=t[r],s=document.getElementById(`zenpress-tab-${e}`);s&&(s.focus(),i(e))}},onFocus:()=>{l||i(e)},children:s||r})},f.TabPanel=({tabId:e,children:s})=>{const{selectedTabId:t}=(0,n.useContext)(h),r=(0,n.useRef)(null),a=t===e;return(0,n.useEffect)(()=>{a&&r.current&&(0===r.current.querySelectorAll('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"]), input:not([disabled]), select:not([disabled]), textarea:not([disabled])').length?r.current.setAttribute("tabindex","0"):r.current.removeAttribute("tabindex"))},[a]),a?(0,p.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:s}):(0,p.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:s})};const x=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:i}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:i,createErrorNotice:p}=(0,c.useDispatch)(l.store);return(0,n.useEffect)(()=>{o()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},r={};Object.keys(n).forEach(e=>{r[e]={...n[e],"enable-snippet":t.includes(e)}}),s(r)}).catch(()=>{p((0,r.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await o()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),i((0,r.__)("Settings saved.","zenpress"))}catch{p((0,r.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[h,x]=(0,n.useState)(),_=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":r}}),t})},m=e=>e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e,v=["core","gutenberg","woocommerce","ads-blocker","tools"],y={};Object.keys(e).forEach(s=>{const t=e[s],n=(t?.category||(0,r.__)("Uncategorized","zenpress")).toLowerCase(),a=(t?.subcategory||(0,r.__)("uncategorized","zenpress")).toLowerCase();y[n]||(y[n]={}),y[n][a]||(y[n][a]=[]),y[n][a].push({name:s,data:t})});const z=Object.keys(y).sort((e,s)=>{const t=v.indexOf(e.toLowerCase()),n=v.indexOf(s.toLowerCase());return-1!==t&&-1!==n?t-n:-1!==t?-1:-1!==n?1:e.localeCompare(s,void 0,{sensitivity:"base"})});return(0,n.useEffect)(()=>{!h&&z.length>0&&x(z[0])},[h,z.length]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),i||t())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[t,i]),(0,p.jsxs)("article",{className:"zenpress-row",children:[(0,p.jsxs)("section",{className:"zenpress-main",children:[(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(b,{})}),(0,p.jsxs)("div",{className:"zenpress-panel",children:[(0,p.jsxs)(f,{orientation:"vertical",selectedTabId:h,onSelect:e=>{x(e),x(e)},children:[(0,p.jsx)(f.TabList,{children:z.map(e=>{const s=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,p.jsx)(f.Tab,{tabId:e,title:m(e),className:s,children:m(e)},e)})}),z.map(e=>{const t=Object.keys(y[e]).sort();return(0,p.jsxs)(f.TabPanel,{tabId:e,children:[(0,p.jsx)("h2",{children:m(e)}),t.map(t=>(0,p.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${t.toLowerCase().replace(/\s+/g,"-")}`,children:[(0,p.jsx)("hr",{}),(0,p.jsx)("h3",{children:m(t)}),y[e][t].map(({name:e,data:t})=>(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""},e))]},t))]},e)})]}),(0,p.jsxs)("div",{className:"zenpress-actions",children:[(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"tertiary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Disable all actions","zenpress")})]}),(0,p.jsx)(u,{onClick:t,isBusy:i})]})]})]}),(0,p.jsx)("aside",{className:"zenpress-sidebar",children:(0,p.jsx)("div",{className:"zenpress-presets",children:(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("h2",{children:(0,r.__)("Pick configuration preset","zenpress")}),(0,p.jsx)("p",{children:(0,r.__)("Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case.","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🖼️ ",(0,r.__)("Corporate website","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("corporate-website"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:[" 📰 ",(0,r.__)("Blog","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("blog"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🛒 ",(0,r.__)("E-commerce","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("ecommerce"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")})]})})})]})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(x,{}))})})();
  • zenpress/tags/2.1.0/assets/src/index.js

    r3372200 r3412245  
    22import { createRoot } from '@wordpress/element';
    33import './index.scss';
    4 import { SettingsPage } from './pages/SettingsPage';
     4import { SettingsPage } from './js/pages/SettingsPage';
    55
    66/**
     
    88 */
    99domReady(() => {
    10     const rootEl = document.getElementById('zenpress-settings');
    11     if (!rootEl) return;
     10    const rootEl = document.getElementById('zenpress-settings');
     11    if (!rootEl) return;
    1212
    13     const root = createRoot(rootEl);
    14     root.render(<SettingsPage />);
     13    const root = createRoot(rootEl);
     14    root.render(<SettingsPage />);
    1515});
  • zenpress/tags/2.1.0/assets/src/index.scss

    r3372200 r3412245  
    1 .zenpress {
    2     &-loading {
    3         width: 100%;
    4         max-width: 900px;
    5         margin: 20px auto;
    6     }
     1@use 'scss/abstracts/variables';
    72
    8     &-dashboard-wrap {
    9         a:not(.components-button) {
    10             color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
     3@use 'scss/base/typography';
    114
    12             &[target='_blank'] {
    13                 position: relative;
    14                 gap: 4px;
     5@use 'scss/components/button';
     6@use 'scss/components/notice';
     7@use 'scss/components/tabs';
     8@use 'scss/components/toggle-control';
    159
    16                 &::after {
    17                     content: ' ↗';
    18                 }
    19             }
    20         }
    21 
    22         .components-button {
    23             gap: 4px;
    24         }
    25 
    26         .components-panel {
    27             width: 100%;
    28             margin: 0 auto 20px auto;
    29             max-width: 100%;
    30 
    31             &__body {
    32                 &-title {
    33                     text-transform: capitalize;
    34                 }
    35 
    36                 &-toggle {
    37                     border-bottom: 1px solid #d6e2ed;
    38                     text-transform: capitalize;
    39                 }
    40             }
    41         }
    42 
    43         .components-toggle-control {
    44             &__help {
    45                 font-size: 1.1em;
    46             }
    47         }
    48 
    49         .components-notice-list {
    50             width: 100%;
    51             margin-bottom: 20px;
    52         }
    53     }
    54 
    55     &-row {
    56         display: grid;
    57         grid-template-columns: 1fr;
    58         gap: 40px;
    59         width: 100%;
    60         max-width: 920px;
    61         margin: 0 auto;
    62     }
    63 
    64     &-actions {
    65         display: flex;
    66         flex-wrap: wrap;
    67         gap: 20px;
    68         justify-content: space-between;
    69         align-items: center;
    70         margin-bottom: 20px;
    71 
    72         &-bulk {
    73             display: flex;
    74             flex-wrap: wrap;
    75             gap: 10px;
    76             justify-content: flex-start;
    77             align-items: center;
    78         }
    79     }
    80 
    81     &-presets {
    82         display: flex;
    83         flex-wrap: wrap;
    84         gap: 10px;
    85         justify-content: flex-start;
    86         align-items: center;
    87         margin-bottom: 20px;
    88 
    89         &-description {
    90             flex: 100%;
    91             width: 100%;
    92             max-width: 100%;
    93         }
    94     }
    95 
    96     &-header {
    97         align-items: center;
    98         display: flex;
    99         flex-wrap: wrap;
    100         justify-content: space-between;
    101         overflow-x: auto;
    102         padding: 16px;
    103         margin: 0 0 20px 0;
    104         gap: 40px;
    105         background: #fff;
    106         border: 1px solid #e0e0e0;
    107 
    108         &-navigation {
    109             display: flex;
    110             flex-wrap: wrap;
    111             gap: 20px;
    112             justify-content: space-between;
    113             align-items: center;
    114         }
    115 
    116         h1,
    117         p {
    118             margin: 0;
    119             padding: 0;
    120         }
    121     }
    122 
    123     &-footer {
    124         align-items: center;
    125         display: flex;
    126         flex-wrap: wrap;
    127         justify-content: space-between;
    128         overflow-x: auto;
    129         padding: 16px;
    130         margin: 0 0 20px 0;
    131         gap: 40px;
    132         border-top: 1px solid #e0e0e0;
    133         padding-top: 32px;
    134 
    135         &-navigation {
    136             display: flex;
    137             flex-wrap: wrap;
    138             gap: 20px;
    139             justify-content: space-between;
    140             align-items: center;
    141         }
    142 
    143         p {
    144             margin: 0;
    145             padding: 0;
    146         }
    147     }
    148 }
     10@use 'scss/pages/settings';
  • zenpress/tags/2.1.0/inc/admin/menu.php

    r3372200 r3412245  
    3131    ?>
    3232    <div class="wrap zenpress-dashboard-wrap">
    33         <div class="zenpress-header">
     33        <header class="zenpress-header">
    3434            <div class="zenpress-header-title">
    3535                <h1><?php echo esc_html__('ZenPress', 'zenpress'); ?></h1>
     
    6767                </a>
    6868            </div>
    69         </div>
    70         <div id="zenpress-settings" class="zenpress-settings">
     69        </header>
     70        <main id="zenpress-settings" class="zenpress-settings">
    7171            <div class="zenpress-loading card">
    7272                <div class="zenpress-loading-body">
     
    7676                </div>
    7777            </div>
    78         </div>
    79         <div class="zenpress-footer">
     78        </main>
     79        <footer class="zenpress-footer">
    8080            <div class="zenpress-footer-title">
    8181                <p>
     
    9999                </a>
    100100            </div>
    101         </div>
     101        </footer>
    102102    </div>
    103103    <?php
  • zenpress/tags/2.1.0/inc/core/metadata.php

    r3372200 r3412245  
    1616        'description' => '',
    1717        'category' => '',
     18        'subcategory' => '',
    1819        'weight' => 0,
    1920        'preset' => []
     
    2829        'description' => sanitize_text_field($metadata['description']),
    2930        'category' => sanitize_text_field($metadata['category']),
     31        'subcategory' => sanitize_text_field($metadata['subcategory']),
    3032        'weight' => (int) $metadata['weight'],
    3133        'preset' => array_map('sanitize_text_field', (array) $metadata['preset'])
  • zenpress/tags/2.1.0/inc/snippets/functions/disable-rest-api.php

    r3382662 r3412245  
    2323function zenpress_disable_wp_rest_api($access) {
    2424    if (!is_user_logged_in() && !zenpress_disable_wp_rest_api_allow_access()) {
    25         $message = apply_filters('disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress'));
     25        $message = apply_filters('zenpress_disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress'));
    2626
    2727        return new WP_Error('rest_login_required', $message, ['status' => rest_authorization_required_code()]);
     
    3232
    3333function zenpress_disable_wp_rest_api_allow_access() {
    34     $post_var = apply_filters('disable_wp_rest_api_post_var', false);
    35     $server_var = apply_filters('disable_wp_rest_api_server_var', false);
     34    $post_var = apply_filters('zenpress_disable_wp_rest_api_post_var', false);
     35    $server_var = apply_filters('zenpress_disable_wp_rest_api_server_var', false);
    3636
    3737    if (!empty($post_var)) {
    3838        if (is_array($post_var)) {
    3939            foreach($post_var as $var) {
     40                // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations
    4041                if (isset($_POST[$var]) && !empty($_POST[$var])) {
    4142                    return true;
     
    4344            }
    4445        } else {
     46            // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations
    4547            if (isset($_POST[$post_var]) && !empty($_POST[$post_var])) {
    4648                return true;
  • zenpress/tags/2.1.0/inc/snippets/functions/remove-woocommerce-patterns.php

    r3372200 r3412245  
    55}
    66
     7// Only proceed if WooCommerce is active
     8if (!class_exists('WooCommerce')) {
     9    return;
     10}
     11
    712use Automattic\WooCommerce\Blocks\Package;
    813
    914add_action('woocommerce_blocks_loaded', static function (): void {
    10     remove_action(
    11         'init',
    12         [
    13             Package::container()->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class),
    14             'register_block_patterns',
    15         ]
    16     );
     15    // Check if required classes exist before accessing them
     16    if (!class_exists(Package::class) || !class_exists(\Automattic\WooCommerce\Blocks\BlockPatterns::class)) {
     17        return;
     18    }
     19
     20    try {
     21        $container = Package::container();
     22        if (!$container) {
     23            return;
     24        }
     25
     26        $block_patterns = $container->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class);
     27        if ($block_patterns && method_exists($block_patterns, 'register_block_patterns')) {
     28            remove_action(
     29                'init',
     30                [$block_patterns, 'register_block_patterns']
     31            );
     32        }
     33    } catch (\Exception $e) {
     34        // Silently fail if container or class is not available
     35        return;
     36    }
    1737});
     38
     39add_action('init', static function() {
     40    if (!class_exists('WP_Block_Patterns_Registry')) {
     41        return;
     42    }
     43
     44    $all_patterns = WP_Block_Patterns_Registry::get_instance()->get_all_registered();
     45    foreach ($all_patterns as $pattern) {
     46        if (isset($pattern['name'])) {
     47            // Use str_starts_with() for PHP 8.0+, fallback to strpos() for older versions
     48            $is_woocommerce_pattern = function_exists('str_starts_with')
     49                ? str_starts_with($pattern['name'], 'woocommerce-blocks')
     50                : strpos($pattern['name'], 'woocommerce-blocks') === 0;
     51
     52            if ($is_woocommerce_pattern) {
     53                unregister_block_pattern($pattern['name']);
     54            }
     55        }
     56    }
     57}, 20);
     58
     59/**
     60 * Disables the WooCommerce Pattern Toolkit Full Composability feature.
     61 *
     62 * This feature is a flag for advanced block patterns functionality, which can
     63 * sometimes be tied to large transients/caching issues.
     64 */
     65add_filter('woocommerce_admin_features', static function($features) {
     66    // Ensure $features is an array
     67    if (!is_array($features)) {
     68        return $features;
     69    }
     70
     71    $feature_to_disable = 'pattern-toolkit-full-composability';
     72
     73    // Find the feature's identifier in the array and remove it.
     74    $key = array_search($feature_to_disable, $features, true);
     75    if ($key !== false) {
     76        unset($features[$key]);
     77    }
     78
     79    return $features;
     80});
  • zenpress/tags/2.1.0/inc/snippets/meta/block-user-enumeration.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Security 🔒️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('security', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/clean-admin-bar.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('User interface 💻️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('user-interface', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/clean-dashboard-items.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('User interface 💻️', 'zenpress'),
     18    'category' => __('ads-blocker', 'zenpress'),
     19    'subcategory' => __('user-interface', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-adjacent-posts.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'ecommerce'],
     21    'preset' => ['corporate-website', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-application-passwords.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Security 🔒️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('security', 'zenpress'),
    1920    'weight' => 0,
    2021    'preset' => [''],
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-author-archives.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Security 🔒️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('security', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'ecommerce'],
     21    'preset' => ['corporate-website', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-dashicons.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __(' core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-dns-prefetch.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-emoji-scripts.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __(' core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-jquery-migrate.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __(' core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-login-language-selector.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable the login language selector', 'zenpress'),
    1414    'description' => __('Removes the language dropdown from the WordPress login page. Simplifies login screen and reduces distractions.', 'zenpress'),
    15     'category' => __('User interface 💻️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('user-interface', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-oembed.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable oEmbed', 'zenpress'),
    1414    'description' => __('Removes WordPress oEmbed features such as auto-discovery, REST API routes, TinyMCE integration, and the wp-embed script. Reduces API calls, improves performance, and limits unnecessary external requests.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-pdf-thumbnails.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable PDF thumbnails', 'zenpress'),
    1414    'description' => __('Prevents WordPress from generating thumbnails for uploaded PDF files by removing fallback image sizes. saves storage space and improves performance by avoiding unnecessary image generation.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __(' core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-pingback-trackback.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable pingback and trackback', 'zenpress'),
    1414    'description' => __('Removes the X-Pingback header, disables pingbacks and trackbacks on new posts, and prevents self-pingbacks. reduces spam, blocks potential DDoS vectors, and slightly improves performance by avoiding useless requests.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-rest-api.meta.php

    r3382662 r3412245  
    1212
    1313return [
    14     'title' => __('Disable REST API', 'zenpress'),
     14    'title' => __('Disable REST API for visitors not logged into WordPress', 'zenpress'),
    1515    'description' => __(
    1616        'Disable the WP REST API for visitors not logged into WordPress.',
    1717        'zenpress'
    1818    ),
    19     'category' => __('Security 🔒️', 'zenpress'),
     19    'category' => __('core', 'zenpress'),
     20    'subcategory' => __('security', 'zenpress'),
    2021    'weight' => 0,
    2122    'preset' => [],
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-rss.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable all WordPress feeds (RDF, RSS, RSS2, Atom, and comments)', 'zenpress'),
    1414    'description' => __('Prevents access to all default feeds (RDF, RSS, RSS2, Atom, and comments). Also removes feed links from head, and redirects feed requests to the homepage. Reduces unnecessary requests and improves SEO consistency.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website'],
     18    'preset' => ['corporate-website'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-shortlink.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WordPress shortlink', 'zenpress'),
    1414    'description' => __('Removes shortlink functionality from both the HTML head and HTTP headers. Reduces unnecessary output, improves performance and SEO clarity.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-wlw-manifest.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WLW link', 'zenpress'),
    1414    'description' => __('Removes the WLW manifest link from the head, which was only used by the deprecated Windows Live Writer app. Reduces unnecessary metadata and improves performance.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WooCommerce cart fragments script', 'zenpress'),
    1414    'description' => __('Removes the WooCommerce cart fragments JavaScript (wc-cart-fragments), which is responsible for dynamically updating the cart contents without a page reload. Disabling this can improve performance on stores that do not require live cart updates.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WooCommerce scripts and styles on non-WooCommerce pages', 'zenpress'),
    1414    'description' => __('Dequeues WooCommerce assets on pages where WooCommerce functionality is not required, such as homepage, blog posts, or custom pages. Helps improve performance by preventing unnecessary asset loading.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable unnecessary Stripe scripts on WooCommerce pages', 'zenpress'),
    1414    'description' => __('Prevents loading of Stripe-related scripts on the product and cart pages when the "Payment Request Button Support" (PRBS) is disabled. Helps improve performance by avoiding unnecessary JavaScript loading.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-woocommerce-widgets.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WooCommerce widgets', 'zenpress'),
    1414    'description' => __('Unregisters default WooCommerce widgets to reduce bloat in the widget screen and improve performance by removing unused features.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/tags/2.1.0/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable XML-RPC and remove RSD link', 'zenpress'),
    1414    'description' => __('Disables XML-RPC (often targeted by brute force or DDoS attacks) and removes the RSD link from the HTML head to reduce exposure.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/hide-woocommerce-version.meta.php

    r3372200 r3412245  
    1313    'title' => __('Hide WooCommerce version', 'zenpress'),
    1414    'description' => __('Removes WooCommerce version info from HTTP headers and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WooCommerce versions.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/tags/2.1.0/inc/snippets/meta/hide-wordpress-version.meta.php

    r3372200 r3412245  
    1313    'title' => __('Hide WordPress version', 'zenpress'),
    1414    'description' => __('Removes WordPress version info from the head, generator, and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WordPress versions.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/protect-wp-login.meta.php

    r3372200 r3412245  
    1313    'title' => __('Protect the wp-login form from brute force attacks', 'zenpress'),
    1414    'description' => __('Removes detailed login error messages and limits failed login attempts per IP address. Blocks further attempts for a set duration after too many failures. Improves security by mitigating brute force attacks.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('tools', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php

    r3372200 r3412245  
    1313    'title' => __('Remove WordPress default remote block patterns', 'zenpress'),
    1414    'description' => __('Prevents WordPress from loading remote block patterns and removes the built-in core block patterns. Reduces editor clutter and improves performance by avoiding unnecessary data loading.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __(' gutenberg', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/remove-rest-api-link.meta.php

    r3372200 r3412245  
    1313    'title' => __('Remove REST API links', 'zenpress'),
    1414    'description' => __('Prevents WordPress from adding REST API discovery links to the head section of the site. reduces unnecessary HTML output and slightly improves performance while keeping REST API functionality available.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/inc/snippets/meta/remove-woocommerce-patterns.meta.php

    r3372200 r3412245  
    1111
    1212return [
    13     'title' => __('Remove WooCommerce default remote block patterns', 'zenpress'),
    14     'description' => __('Removes all WooCommerce remote block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     13    'title' => __('Remove WooCommerce default block patterns', 'zenpress'),
     14    'description' => __('Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/tags/2.1.0/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php

    r3372200 r3412245  
    1313    'title' => __('Separate loading of core block styles', 'zenpress'),
    1414    'description' => __('Forces WordPress to load core block styles separately, improving performance by only loading the styles required for the blocks used on a page.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('gutenberg', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/tags/2.1.0/languages/zenpress.pot

    r3382668 r3412245  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2.0.4.1\n"
     5"Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2.1.0\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/zenpress\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-10-22T14:03:43+00:00\n"
     12"POT-Creation-Date: 2025-12-05T13:56:04+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
     
    169169
    170170#: inc/snippets/meta/block-user-enumeration.meta.php:18
     171#: inc/snippets/meta/clean-admin-bar.meta.php:18
     172#: inc/snippets/meta/disable-adjacent-posts.meta.php:18
    171173#: inc/snippets/meta/disable-application-passwords.meta.php:18
    172174#: inc/snippets/meta/disable-author-archives.meta.php:18
     175#: inc/snippets/meta/disable-dns-prefetch.meta.php:18
     176#: inc/snippets/meta/disable-login-language-selector.meta.php:15
     177#: inc/snippets/meta/disable-oembed.meta.php:15
    173178#: inc/snippets/meta/disable-pingback-trackback.meta.php:15
    174179#: inc/snippets/meta/disable-rest-api.meta.php:19
    175 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15
    176 #: inc/snippets/meta/hide-wordpress-version.meta.php:15
    177 #: inc/snippets/meta/protect-wp-login.meta.php:15
    178 msgid "Security 🔒️"
    179 msgstr ""
    180 
    181 #: inc/snippets/meta/clean-admin-bar.meta.php:13
    182 msgid "Clean up the WordPress admin bar"
    183 msgstr ""
    184 
    185 #: inc/snippets/meta/clean-admin-bar.meta.php:14
    186 msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface."
    187 msgstr ""
    188 
    189 #: inc/snippets/meta/clean-admin-bar.meta.php:18
    190 #: inc/snippets/meta/clean-dashboard-items.meta.php:18
    191 #: inc/snippets/meta/disable-login-language-selector.meta.php:15
    192 msgid "User interface 💻️"
    193 msgstr ""
    194 
    195 #: inc/snippets/meta/clean-dashboard-items.meta.php:13
    196 msgid "Clean up the WordPress Dashboard"
    197 msgstr ""
    198 
    199 #: inc/snippets/meta/clean-dashboard-items.meta.php:14
    200 msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability."
    201 msgstr ""
    202 
    203 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13
    204 msgid "Disable adjacent posts link tags"
    205 msgstr ""
    206 
    207 #: inc/snippets/meta/disable-adjacent-posts.meta.php:14
    208 msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance."
    209 msgstr ""
    210 
    211 #: inc/snippets/meta/disable-adjacent-posts.meta.php:18
    212 #: inc/snippets/meta/disable-dashicons.meta.php:18
    213 #: inc/snippets/meta/disable-dns-prefetch.meta.php:18
    214 #: inc/snippets/meta/disable-emoji-scripts.meta.php:18
    215 #: inc/snippets/meta/disable-jquery-migrate.meta.php:18
    216 #: inc/snippets/meta/disable-oembed.meta.php:15
    217 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15
    218180#: inc/snippets/meta/disable-rss.meta.php:15
    219181#: inc/snippets/meta/disable-shortlink.meta.php:15
    220182#: inc/snippets/meta/disable-wlw-manifest.meta.php:15
    221 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15
     183#: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15
     184#: inc/snippets/meta/hide-wordpress-version.meta.php:15
    222185#: inc/snippets/meta/remove-rest-api-link.meta.php:15
    223 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15
    224 msgid "Performance 🚀"
     186msgid "core"
     187msgstr ""
     188
     189#: inc/snippets/meta/block-user-enumeration.meta.php:19
     190#: inc/snippets/meta/disable-application-passwords.meta.php:19
     191#: inc/snippets/meta/disable-author-archives.meta.php:19
     192#: inc/snippets/meta/disable-pingback-trackback.meta.php:16
     193#: inc/snippets/meta/disable-rest-api.meta.php:20
     194#: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:16
     195#: inc/snippets/meta/hide-woocommerce-version.meta.php:16
     196#: inc/snippets/meta/hide-wordpress-version.meta.php:16
     197#: inc/snippets/meta/protect-wp-login.meta.php:16
     198msgid "security"
     199msgstr ""
     200
     201#: inc/snippets/meta/clean-admin-bar.meta.php:13
     202msgid "Clean up the WordPress admin bar"
     203msgstr ""
     204
     205#: inc/snippets/meta/clean-admin-bar.meta.php:14
     206msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface."
     207msgstr ""
     208
     209#: inc/snippets/meta/clean-admin-bar.meta.php:19
     210#: inc/snippets/meta/clean-dashboard-items.meta.php:19
     211#: inc/snippets/meta/disable-default-pattern-categories.meta.php:16
     212#: inc/snippets/meta/disable-login-language-selector.meta.php:16
     213msgid "user-interface"
     214msgstr ""
     215
     216#: inc/snippets/meta/clean-dashboard-items.meta.php:13
     217msgid "Clean up the WordPress Dashboard"
     218msgstr ""
     219
     220#: inc/snippets/meta/clean-dashboard-items.meta.php:14
     221msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability."
     222msgstr ""
     223
     224#: inc/snippets/meta/clean-dashboard-items.meta.php:18
     225msgid "ads-blocker"
     226msgstr ""
     227
     228#: inc/snippets/meta/disable-adjacent-posts.meta.php:13
     229msgid "Disable adjacent posts link tags"
     230msgstr ""
     231
     232#: inc/snippets/meta/disable-adjacent-posts.meta.php:14
     233msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance."
     234msgstr ""
     235
     236#: inc/snippets/meta/disable-adjacent-posts.meta.php:19
     237#: inc/snippets/meta/disable-dashicons.meta.php:19
     238#: inc/snippets/meta/disable-dns-prefetch.meta.php:19
     239#: inc/snippets/meta/disable-emoji-scripts.meta.php:19
     240#: inc/snippets/meta/disable-jquery-migrate.meta.php:19
     241#: inc/snippets/meta/disable-oembed.meta.php:16
     242#: inc/snippets/meta/disable-pdf-thumbnails.meta.php:16
     243#: inc/snippets/meta/disable-rss.meta.php:16
     244#: inc/snippets/meta/disable-shortlink.meta.php:16
     245#: inc/snippets/meta/disable-wlw-manifest.meta.php:16
     246#: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:16
     247#: inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php:16
     248#: inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php:16
     249#: inc/snippets/meta/disable-woocommerce-widgets.meta.php:16
     250#: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:16
     251#: inc/snippets/meta/remove-rest-api-link.meta.php:16
     252#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:16
     253#: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:16
     254msgid "performance"
    225255msgstr ""
    226256
     
    249279msgstr ""
    250280
     281#: inc/snippets/meta/disable-dashicons.meta.php:18
     282#: inc/snippets/meta/disable-emoji-scripts.meta.php:18
     283#: inc/snippets/meta/disable-jquery-migrate.meta.php:18
     284#: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15
     285msgid " core"
     286msgstr ""
     287
     288#: inc/snippets/meta/disable-default-pattern-categories.meta.php:13
     289msgid "Disable default pattern categories in site editor"
     290msgstr ""
     291
     292#: inc/snippets/meta/disable-default-pattern-categories.meta.php:14
     293msgid "Removes default pattern categories from the block pattern inserter in the site editor. Disables default categories: featured, about, audio, banner, buttons, call-to-action, columns, contact, footer, gallery, header, media, portfolio, posts, query, services, team, testimonials, text, videos, and any custom categories. This simplifies the interface by hiding category navigation while patterns remain accessible."
     294msgstr ""
     295
     296#: inc/snippets/meta/disable-default-pattern-categories.meta.php:15
     297#: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15
     298msgid "gutenberg"
     299msgstr ""
     300
    251301#: inc/snippets/meta/disable-dns-prefetch.meta.php:13
    252302msgid "Disable DNS prefetch"
     
    306356
    307357#: inc/snippets/meta/disable-rest-api.meta.php:14
    308 msgid "Disable REST API"
     358msgid "Disable REST API for visitors not logged into WordPress"
    309359msgstr ""
    310360
     
    351401#: inc/snippets/meta/hide-woocommerce-version.meta.php:15
    352402#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:15
    353 msgid "WooCommerce 🛒"
     403msgid "woocommerce"
    354404msgstr ""
    355405
     
    410460msgstr ""
    411461
     462#: inc/snippets/meta/protect-wp-login.meta.php:15
     463msgid "tools"
     464msgstr ""
     465
    412466#: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:13
    413467msgid "Remove WordPress default remote block patterns"
     
    418472msgstr ""
    419473
     474#: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15
     475msgid " gutenberg"
     476msgstr ""
     477
    420478#: inc/snippets/meta/remove-rest-api-link.meta.php:13
    421479msgid "Remove REST API links"
     
    427485
    428486#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:13
    429 msgid "Remove WooCommerce default remote block patterns"
     487msgid "Remove WooCommerce default block patterns"
    430488msgstr ""
    431489
    432490#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:14
    433 msgid "Removes all WooCommerce remote block patterns to avoid unnecessary pattern registration in the editor."
     491msgid "Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor."
    434492msgstr ""
    435493
     
    443501
    444502#: assets/build/index.js:1
    445 #: assets/src/components/SaveButton.js:16
     503#: assets/src/js/components/SaveButton.js:15
    446504msgid "Save settings"
    447505msgstr ""
    448506
    449507#: assets/build/index.js:1
    450 #: assets/src/hooks/useSettings.js:41
     508#: assets/src/js/hooks/useSettings.js:41
    451509msgid "Failed to load settings."
    452510msgstr ""
    453511
    454512#: assets/build/index.js:1
    455 #: assets/src/hooks/useSettings.js:56
     513#: assets/src/js/hooks/useSettings.js:56
    456514msgid "Settings saved."
    457515msgstr ""
    458516
    459517#: assets/build/index.js:1
    460 #: assets/src/hooks/useSettings.js:58
     518#: assets/src/js/hooks/useSettings.js:58
    461519msgid "Failed to save settings."
    462520msgstr ""
    463521
    464522#: assets/build/index.js:1
    465 #: assets/src/pages/SettingsPage.js:66
     523#: assets/src/js/pages/SettingsPage.js:75
    466524msgid "Uncategorized"
    467525msgstr ""
    468526
    469527#: assets/build/index.js:1
    470 #: assets/src/pages/SettingsPage.js:83
    471 msgid "Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you."
    472 msgstr ""
    473 
    474 #: assets/build/index.js:1
    475 #: assets/src/pages/SettingsPage.js:88
    476 msgid "Pick a preset"
    477 msgstr ""
    478 
    479 #: assets/build/index.js:1
    480 #: assets/src/pages/SettingsPage.js:96
    481 msgid "Showcase website"
    482 msgstr ""
    483 
    484 #: assets/build/index.js:1
    485 #: assets/src/pages/SettingsPage.js:99
     528#: assets/src/js/pages/SettingsPage.js:76
     529msgid "uncategorized"
     530msgstr ""
     531
     532#: assets/build/index.js:1
     533#: assets/src/js/pages/SettingsPage.js:193
     534msgid "Enable all actions"
     535msgstr ""
     536
     537#: assets/build/index.js:1
     538#: assets/src/js/pages/SettingsPage.js:196
     539msgid "Disable all actions"
     540msgstr ""
     541
     542#: assets/build/index.js:1
     543#: assets/src/js/pages/SettingsPage.js:206
     544msgid "Pick configuration preset"
     545msgstr ""
     546
     547#: assets/build/index.js:1
     548#: assets/src/js/pages/SettingsPage.js:208
     549msgid "Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case."
     550msgstr ""
     551
     552#: assets/build/index.js:1
     553#: assets/src/js/pages/SettingsPage.js:214
     554msgid "Corporate website"
     555msgstr ""
     556
     557#: assets/build/index.js:1
     558#: assets/src/js/pages/SettingsPage.js:216
     559msgid "Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives."
     560msgstr ""
     561
     562#: assets/build/index.js:1
     563#: assets/src/js/pages/SettingsPage.js:226
     564#: assets/src/js/pages/SettingsPage.js:237
     565#: assets/src/js/pages/SettingsPage.js:248
     566msgid "Enable"
     567msgstr ""
     568
     569#: assets/build/index.js:1
     570#: assets/src/js/pages/SettingsPage.js:229
    486571msgid "Blog"
    487572msgstr ""
    488573
    489574#: assets/build/index.js:1
    490 #: assets/src/pages/SettingsPage.js:102
     575#: assets/src/js/pages/SettingsPage.js:231
     576msgid "Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds."
     577msgstr ""
     578
     579#: assets/build/index.js:1
     580#: assets/src/js/pages/SettingsPage.js:240
    491581msgid "E-commerce"
    492582msgstr ""
    493583
    494584#: assets/build/index.js:1
    495 #: assets/src/pages/SettingsPage.js:106
    496 msgid "Or just enable what you need"
    497 msgstr ""
    498 
    499 #: assets/build/index.js:1
    500 #: assets/src/pages/SettingsPage.js:111
    501 msgid "Enable all actions"
    502 msgstr ""
    503 
    504 #: assets/build/index.js:1
    505 #: assets/src/pages/SettingsPage.js:115
    506 msgid "Disable all actions"
    507 msgstr ""
     585#: assets/src/js/pages/SettingsPage.js:242
     586msgid "Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout."
     587msgstr ""
  • zenpress/tags/2.1.0/readme.txt

    r3386239 r3412245  
    44Tags: optimization, performance, security, bloat, woocommerce
    55Requires at least: 6.0
    6 Tested up to: 6.8
    7 Stable tag: 2.0.5
     6Tested up to: 6.9
     7Stable tag: 2.1.0
    88Requires PHP: 7.4
    99License: GPLv2 or later
     
    3434
    3535= Settings subpage 🧰 =
    36 * Find presets to help you configure your ZenPress.
    37 * Every action is documented so that you understand what you are doing and the benefits.
     36* Organized interface with vertical tabs for easy navigation between categories (Core, Gutenberg, WooCommerce, Tools).
     37* Features grouped by subcategories (Performance, Security, User Interface) with visual icons for quick identification.
     38* Three ready-to-use presets: Corporate website, Blog, and E-commerce - each optimized for specific site types.
     39* Every action is documented with descriptions so that you understand what you are doing and the benefits.
     40* Fully accessible interface with ARIA-compliant tabs and complete keyboard navigation support.
    3841* Native WordPress interface, benefits from Gutenberg's new features and the site editor.
    3942
    40 = Performance 🚀 =
     43= Core - Performance =
    4144
    4245* Disable adjacent posts link tags.
     
    5457* Separate loading of core block styles.
    5558
    56 = Security 🔒️ =
     59= Core - Security =
    5760
    5861* Block user enumeration.
     
    6568* Protect the wp-login form from brute force attacks.
    6669
    67 = User interface 💻️ =
     70= Core - User Interface =
    6871
    6972* Clean up the WordPress admin bar.
     
    7174* Disable the login language selector.
    7275
    73 = WooCommerce 🛒 =
     76= WooCommerce - Performance =
    7477* Disable WooCommerce cart fragments script.
    7578* Disable WooCommerce scripts and styles on non-WooCommerce pages.
    7679* Disable unnecessary Stripe scripts on WooCommerce pages.
    7780* Disable WooCommerce widgets.
     81* Remove WooCommerce default block patterns.
     82
     83= WooCommerce - Security =
    7884* Hide WooCommerce version.
    79 * Remove WooCommerce default remote block patterns.
     85
     86= Gutenberg - Performance =
     87* Remove WordPress default remote block patterns.
     88* Separate loading of core block styles.
     89
     90= Gutenberg - User Interface =
     91* Disable default pattern categories in site editor.
     92
     93= Presets =
     94* Corporate website / Portfolio: Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.
     95* Blog: Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.
     96* E-commerce: Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.
     97
     98= Accessibility =
     99* Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide.
     100* Complete keyboard navigation: Arrow keys, Home, End, Space, Enter, and Tab keys fully supported.
     101* Automatic tab activation on focus for improved user experience.
     102* Proper focus management with visible focus indicators.
     103* Screen reader friendly with proper ARIA labels and roles.
    80104
    81105== Roadmap ==
    82106
    83107= Global =
    84 * New presets.
    85 * Documentation pages.
    86 * More context in plugin UI for actionable function.
     108* Additional presets for specific use cases.
     109* Documentation pages with detailed guides.
    87110
    88111= Security =
     
    96119* Disable WordPress default lazy loading.
    97120
    98 = UI =
     121= User Interface =
    99122* Remove "howdy" from admin bar.
    100123* Remove WordPress logo.
     
    162185== Changelog ==
    163186
     187= 2.1.0 =
     188- Global: Tested with WordPress 6.9.
     189- Interface: Complete redesign with vertical tabbed interface for better organization.
     190- Interface: Features now organized by categories (Core, Gutenberg, WooCommerce, Tools) and subcategories (Performance, Security, User Interface).
     191- Interface: Visual icons added to categories and subcategories for quick identification.
     192- Presets: Three ready-to-use presets with detailed descriptions (Corporate website, Blog, E-commerce).
     193- Accessibility: Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide.
     194- Accessibility: Complete keyboard navigation support (Arrow keys, Home, End, Space, Enter, Tab).
     195- Accessibility: Automatic tab activation on focus for improved user experience.
     196- Accessibility: Proper focus management with visible focus indicators.
     197- Accessibility: Screen reader friendly with proper ARIA labels and roles.
     198- Keyboard: Toggle controls now fully keyboard accessible with Enter key support.
     199- Keyboard: Added Ctrl+S / Cmd+S shortcut to save settings.
     200- Gutenberg: New actionable function: Disable default pattern categories in site editor.
     201
    164202= 2.0.5 =
    165203- Global: Compatibility check.
  • zenpress/tags/2.1.0/zenpress.php

    r3386239 r3412245  
    1212 * Plugin Name: ZenPress - Cleaner, Lighter, Faster WP
    1313 * Description: Easily speed up and strengthen your WordPress site by cleaning out unnecessary features and protecting weak points.
    14  * Version: 2.0.5
     14 * Version: 2.1.0
    1515 * Plugin URI: https://wordpress.org/plugins/zenpress/
    1616 * Author: Quentin Le Duff
     
    1919 * Domain Path: /languages/
    2020 * Requires at least: 6.0
    21  * Tested up to: 6.8
     21 * Tested up to: 6.9
    2222 * Requires PHP: 7.4
    2323 * License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html/
  • zenpress/trunk/assets/build/index-rtl.css

    r3352459 r3412245  
    1 .zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}
     1.components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-left:1px solid #d6e2ed;flex-direction:column;padding-left:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:right;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;left:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-right:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;right:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-right:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;right:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""}
  • zenpress/trunk/assets/build/index.asset.php

    r3372200 r3412245  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '64ce0d65ec54e96537a1');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-notices'), 'version' => '980bfa58281a120e84d0');
  • zenpress/trunk/assets/build/index.css

    r3352459 r3412245  
    1 .zenpress-loading{margin:20px auto;max-width:900px;width:100%}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-dashboard-wrap .components-button{gap:4px}.zenpress-dashboard-wrap .components-panel{margin:0 auto 20px;max-width:100%;width:100%}.zenpress-dashboard-wrap .components-panel__body-title{text-transform:capitalize}.zenpress-dashboard-wrap .components-panel__body-toggle{border-bottom:1px solid #d6e2ed;text-transform:capitalize}.zenpress-dashboard-wrap .components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap .components-notice-list{margin-bottom:20px;width:100%}.zenpress-row{display:grid;gap:40px;grid-template-columns:1fr;margin:0 auto;max-width:920px;width:100%}.zenpress-actions{align-items:center;display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;margin-bottom:20px}.zenpress-actions-bulk,.zenpress-presets{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.zenpress-presets{margin-bottom:20px}.zenpress-presets-description{flex:100%;max-width:100%;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:20px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:40px;margin:0 0 20px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:20px}.zenpress-footer p{margin:0;padding:0}
     1.components-button{gap:4px}.components-notice-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;width:100%}.zenpress-tabs{display:grid;gap:0;width:100%}.zenpress-tabs--vertical{grid-template-columns:200px 1fr}@media screen and (max-width:768px){.zenpress-tabs--vertical{grid-template-columns:1fr}}.zenpress-tabs__list{display:flex;list-style:none;margin:0}.zenpress-tabs__list--vertical{border-right:1px solid #d6e2ed;flex-direction:column;padding-right:0}.zenpress-tabs__tab{align-items:center;background:transparent;border:none;border-radius:0;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:flex;font-size:13px;font-weight:400;gap:8px;line-height:1.2;margin:0;min-height:40px;padding:16px;position:relative;text-align:left;transition:all .1s ease}.zenpress-tabs__tab:before{display:inline-block;font-family:dashicons;font-size:20px;height:20px;line-height:1;text-align:center;width:20px}.zenpress-tabs__tab:hover{background:#f0f0f1;color:#1e1e1e}.zenpress-tabs__tab:focus,.zenpress-tabs__tab:hover{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__tab--is-active{background:transparent;background-color:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),transparent 96%);color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));fill:currentcolor;font-weight:400}.zenpress-tabs__tab--is-active:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))));bottom:0;content:"";position:absolute;right:0;top:0;width:3px}.zenpress-tabs__tab--category-core:before{content:""}.zenpress-tabs__tab--category-gutenberg:before{content:""}.zenpress-tabs__tab--category-woocommerce:before{content:""}.zenpress-tabs__tab--category-tools:before{content:""}.zenpress-tabs__tab--category-ads-blocker:before{content:""}.zenpress-tabs__list--vertical .zenpress-tabs__tab{justify-content:flex-start;width:100%}.zenpress-tabs__panel{flex:1;height:65vh;max-height:65vh;min-width:0;overflow:auto;padding:16px 16px 0;position:relative}@media screen and (max-width:1281px){.zenpress-tabs__panel{height:600px;max-height:600px}}@media screen and (max-width:960px){.zenpress-tabs__panel{height:unset;max-height:unset}}.zenpress-tabs__panel:focus{box-shadow:inset 0 0 0 2px #1e1e1e!important;outline:2px solid transparent}.zenpress-tabs__panel[hidden]{display:none}.components-toggle-control{margin:1em 0}.components-toggle-control__help{font-size:1.1em}.zenpress-dashboard-wrap *{box-sizing:border-box}.zenpress-dashboard-wrap a:not(.components-button){color:var(--wp-components-color-accent,var(--wp-admin-theme-color,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))))}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]{gap:4px;position:relative}.zenpress-dashboard-wrap a:not(.components-button)[target=_blank]:after{content:" ↗"}.zenpress-footer,.zenpress-header,.zenpress-loading,.zenpress-row,.zenpress-settings{margin:0 auto;max-width:1440px;width:100%}.zenpress-header{background:#fff;border:1px solid #e0e0e0;border-radius:4px;gap:40px;overflow-x:auto;padding:16px}.zenpress-header,.zenpress-header-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-header-navigation{gap:16px}.zenpress-header h1,.zenpress-header p{margin:0;padding:0}.zenpress-footer{border-top:1px solid #e0e0e0;gap:32px;overflow-x:auto;padding:32px 16px 16px}.zenpress-footer,.zenpress-footer-navigation{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.zenpress-footer-navigation{gap:16px}.zenpress-footer p{margin:0;padding:0}.zenpress-settings{border-radius:4px;margin-bottom:32px;margin-top:32px}@media screen and (max-width:1281px){.zenpress-settings{margin-bottom:16px;margin-top:16px}}.zenpress-row{display:grid;gap:32px;grid-template-columns:3fr 1fr}@media screen and (max-width:1281px){.zenpress-row{gap:16px}}@media screen and (max-width:960px){.zenpress-row{grid-template-columns:1fr}}.zenpress-panel{background:#fff;border:1px solid #e0e0e0;border-radius:4px}.zenpress-main,.zenpress-notices,.zenpress-panel{max-width:100%;width:100%}.zenpress-actions{border-top:1px solid #e0e0e0;gap:16px;justify-content:space-between;padding:16px}.zenpress-actions,.zenpress-actions-bulk{align-items:center;display:flex;flex-wrap:wrap}.zenpress-actions-bulk{gap:8px;justify-content:flex-start}.zenpress-sidebar{align-items:stretch;display:flex;flex-direction:column;gap:16px;justify-content:flex-start}.zenpress-sidebar hr{margin-top:2em}.zenpress-presets{background:#fff;border:1px solid #e0e0e0;border-radius:4px;max-width:100%;padding:16px;width:100%}.zenpress-subcategory h3{margin-bottom:1.5em;padding-left:32px;position:relative}.zenpress-subcategory h3:before{display:inline-block;font-size:20px;height:20px;left:0;line-height:1;position:absolute;top:50%;transform:translateY(-50%);width:20px}.zenpress-subcategory-performance h3:before{content:"🚀"}.zenpress-subcategory-security h3:before{content:"🛡️"}.zenpress-subcategory-user-interface h3:before{content:"💻️"}.zenpress-tabs__panel h2{font-size:1.5em;padding-left:36px;position:relative}.zenpress-tabs__panel h2:before{content:"";display:inline-block;font-family:dashicons;font-size:28px;height:28px;left:0;line-height:28px;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:28px}#zenpress-tab-panel-core h2:before{content:""}#zenpress-tab-panel-gutenberg h2:before{content:""}#zenpress-tab-panel-woocommerce h2:before{content:""}#zenpress-tab-panel-tools h2:before{content:""}#zenpress-tab-panel-ads-blocker h2:before{content:""}
  • zenpress/trunk/assets/build/index.js

    r3372200 r3412245  
    1 (()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element,i=window.wp.i18n,a=window.wp.components,r=window.wp.apiFetch;var c=e.n(r);const o=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:n})=>(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:n,__nextHasNoMarginBottom:!0}),h=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,i.__)("Save settings","zenpress")}),u=()=>{const{removeNotice:e}=(0,o.useDispatch)(l.store),s=(0,o.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},_=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:r}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:r,createErrorNotice:p}=(0,o.useDispatch)(l.store);return(0,n.useEffect)(()=>{c()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},i={};Object.keys(n).forEach(e=>{i[e]={...n[e],"enable-snippet":t.includes(e)}}),s(i)}).catch(()=>{p((0,i.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await c()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),r((0,i.__)("Settings saved.","zenpress"))}catch{p((0,i.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[_,w]=(0,n.useState)(new Set),v=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const i=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":i}}),t}),w(new Set(j))},x={};Object.keys(e).forEach(s=>{const t=e[s],n=t?.category||(0,i.__)("Uncategorized","zenpress");x[n]||(x[n]=[]),x[n].push({name:s,data:t})});const j=Object.keys(x).sort((e,s)=>e.localeCompare(s,void 0,{sensitivity:"base"}));return(0,p.jsx)("div",{className:"zenpress-row",children:(0,p.jsxs)("div",{className:"zenpress-col",children:[(0,p.jsxs)("div",{className:"zenpress-presets",children:[(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("p",{children:(0,i.__)("Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you.","zenpress")}),(0,p.jsx)("h2",{children:(0,i.__)("Pick a preset","zenpress")})]}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("showcase-website"),__next40pxDefaultSize:!0,children:(0,i.__)("Showcase website","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("blog"),__next40pxDefaultSize:!0,children:(0,i.__)("Blog","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>v("ecommerce"),__next40pxDefaultSize:!0,children:(0,i.__)("E-commerce","zenpress")}),(0,p.jsx)("div",{className:"zenpress-presets-description",children:(0,p.jsx)("h2",{children:(0,i.__)("Or just enable what you need","zenpress")})}),(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s}),w(new Set(j))},__next40pxDefaultSize:!0,children:(0,i.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,i.__)("Disable all actions","zenpress")})]})]}),j.map(e=>(0,p.jsx)(a.Panel,{children:(0,p.jsx)(a.PanelBody,{title:e,initialOpen:_.has(e),children:x[e].map(({name:e,data:t})=>(0,p.jsx)(a.PanelRow,{children:(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""})},e))})},e)),(0,p.jsx)("div",{className:"zenpress-actions",children:(0,p.jsx)(h,{onClick:t,isBusy:r})}),(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(u,{})})]})})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(_,{}))})})();
     1(()=>{"use strict";var e={n:s=>{var t=s&&s.__esModule?()=>s.default:()=>s;return e.d(t,{a:t}),t},d:(s,t)=>{for(var n in t)e.o(t,n)&&!e.o(s,n)&&Object.defineProperty(s,n,{enumerable:!0,get:t[n]})},o:(e,s)=>Object.prototype.hasOwnProperty.call(e,s)};const s=window.wp.domReady;var t=e.n(s);const n=window.wp.element,r=window.wp.i18n,a=window.wp.components,i=window.wp.apiFetch;var o=e.n(i);const c=window.wp.data,l=window.wp.notices,p=window.ReactJSXRuntime,d=({label:e,value:s,onChange:t,help:r})=>{const i=(0,n.useRef)(null);return(0,n.useEffect)(()=>((e,s)=>{if(!e)return;const t=t=>{if("Enter"===t.key){const n=e.querySelector('input[type="checkbox"]');n&&(document.activeElement===n||e.contains(document.activeElement))&&(t.preventDefault(),t.stopPropagation(),s())}};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}})(i.current,t),[t]),(0,p.jsx)("div",{ref:i,children:(0,p.jsx)(a.ToggleControl,{label:e,checked:s,onChange:t,help:r,__nextHasNoMarginBottom:!0})})},u=({onClick:e,isBusy:s})=>(0,p.jsx)(a.Button,{variant:"primary",onClick:e,isBusy:s,__next40pxDefaultSize:!0,children:(0,r.__)("Save settings","zenpress")}),b=()=>{const{removeNotice:e}=(0,c.useDispatch)(l.store),s=(0,c.useSelect)(e=>e(l.store).getNotices(),[]);return s&&0!==s.length?(0,p.jsx)(a.NoticeList,{notices:s,onRemove:e}):null},h=(0,n.createContext)(),f=({selectedTabId:e,onSelect:s,orientation:t="horizontal",children:r})=>{const[a,i]=(0,n.useState)(),o=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,p.jsx)(h.Provider,{value:{selectedTabId:c,onSelect:t=>{void 0===e&&i(t),s?.(t)},orientation:t,getOrderedTabIds:()=>o.current?Array.from(o.current.querySelectorAll('[role="tab"]')).map(e=>{const s=e.getAttribute("id");return s?s.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:o},children:(0,p.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${t}`,children:r})})};f.TabList=({children:e})=>{const{orientation:s,tabListRef:t}=(0,n.useContext)(h);return(0,p.jsx)("div",{ref:t,className:`zenpress-tabs__list zenpress-tabs__list--${s}`,role:"tablist","aria-orientation":s,children:e})},f.Tab=({tabId:e,title:s,className:t="",children:r})=>{const{selectedTabId:a,onSelect:i,orientation:o,getOrderedTabIds:c}=(0,n.useContext)(h),l=a===e,d=(0,n.useRef)(null);return(0,p.jsx)("button",{ref:d,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${t}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>i(e),onKeyDown:s=>{const t=c();if(!t||0===t.length)return;const n=t.indexOf(e);if(-1===n)return;let r=n;if("vertical"===o?"ArrowDown"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowUp"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1):"ArrowRight"===s.key?(s.preventDefault(),r=n<t.length-1?n+1:0):"ArrowLeft"===s.key&&(s.preventDefault(),r=n>0?n-1:t.length-1),"Home"===s.key?(s.preventDefault(),r=0):"End"===s.key&&(s.preventDefault(),r=t.length-1)," "===s.key||"Enter"===s.key)return s.preventDefault(),void i(e);if(r!==n&&r>=0&&r<t.length){const e=t[r],s=document.getElementById(`zenpress-tab-${e}`);s&&(s.focus(),i(e))}},onFocus:()=>{l||i(e)},children:s||r})},f.TabPanel=({tabId:e,children:s})=>{const{selectedTabId:t}=(0,n.useContext)(h),r=(0,n.useRef)(null),a=t===e;return(0,n.useEffect)(()=>{a&&r.current&&(0===r.current.querySelectorAll('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"]), input:not([disabled]), select:not([disabled]), textarea:not([disabled])').length?r.current.setAttribute("tabindex","0"):r.current.removeAttribute("tabindex"))},[a]),a?(0,p.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:s}):(0,p.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:s})};const x=()=>{const{snippets:e,setSnippets:s,saveSettings:t,isSaving:i}=(()=>{const[e,s]=(0,n.useState)({}),[t,a]=(0,n.useState)(!1),{createSuccessNotice:i,createErrorNotice:p}=(0,c.useDispatch)(l.store);return(0,n.useEffect)(()=>{o()({path:"/wp/v2/settings"}).then(e=>{const t=Array.isArray(e?.zenpress_active_snippets)?e.zenpress_active_snippets:[],n=window?.zenpressSnippetsMeta||{},r={};Object.keys(n).forEach(e=>{r[e]={...n[e],"enable-snippet":t.includes(e)}}),s(r)}).catch(()=>{p((0,r.__)("Failed to load settings.","zenpress"))})},[p]),{snippets:e,setSnippets:s,saveSettings:async()=>{a(!0);const s=Object.keys(e).filter(s=>e[s]?.["enable-snippet"]);try{await o()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:s}}),i((0,r.__)("Settings saved.","zenpress"))}catch{p((0,r.__)("Failed to save settings.","zenpress"))}finally{a(!1)}},isSaving:t}})(),[h,x]=(0,n.useState)(),_=e=>{s(s=>{const t={};return Object.entries(s).forEach(([s,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);t[s]={...n,"enable-snippet":r}}),t})},m=e=>e?e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():e,v=["core","gutenberg","woocommerce","ads-blocker","tools"],y={};Object.keys(e).forEach(s=>{const t=e[s],n=(t?.category||(0,r.__)("Uncategorized","zenpress")).toLowerCase(),a=(t?.subcategory||(0,r.__)("uncategorized","zenpress")).toLowerCase();y[n]||(y[n]={}),y[n][a]||(y[n][a]=[]),y[n][a].push({name:s,data:t})});const z=Object.keys(y).sort((e,s)=>{const t=v.indexOf(e.toLowerCase()),n=v.indexOf(s.toLowerCase());return-1!==t&&-1!==n?t-n:-1!==t?-1:-1!==n?1:e.localeCompare(s,void 0,{sensitivity:"base"})});return(0,n.useEffect)(()=>{!h&&z.length>0&&x(z[0])},[h,z.length]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),i||t())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[t,i]),(0,p.jsxs)("article",{className:"zenpress-row",children:[(0,p.jsxs)("section",{className:"zenpress-main",children:[(0,p.jsx)("div",{className:"zenpress-notices",children:(0,p.jsx)(b,{})}),(0,p.jsxs)("div",{className:"zenpress-panel",children:[(0,p.jsxs)(f,{orientation:"vertical",selectedTabId:h,onSelect:e=>{x(e),x(e)},children:[(0,p.jsx)(f.TabList,{children:z.map(e=>{const s=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,p.jsx)(f.Tab,{tabId:e,title:m(e),className:s,children:m(e)},e)})}),z.map(e=>{const t=Object.keys(y[e]).sort();return(0,p.jsxs)(f.TabPanel,{tabId:e,children:[(0,p.jsx)("h2",{children:m(e)}),t.map(t=>(0,p.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${t.toLowerCase().replace(/\s+/g,"-")}`,children:[(0,p.jsx)("hr",{}),(0,p.jsx)("h3",{children:m(t)}),y[e][t].map(({name:e,data:t})=>(0,p.jsx)(d,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>{return t=e,void s(e=>({...e,[t]:{...e[t],"enable-snippet":!e[t]?.["enable-snippet"]}}));var t},help:t.description||""},e))]},t))]},e)})]}),(0,p.jsxs)("div",{className:"zenpress-actions",children:[(0,p.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,p.jsx)(a.Button,{variant:"tertiary",onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!0}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Enable all actions","zenpress")}),(0,p.jsx)(a.Button,{isDestructive:!0,onClick:()=>{s(e=>{const s={};return Object.keys(e).forEach(t=>{s[t]={...e[t],"enable-snippet":!1}}),s})},__next40pxDefaultSize:!0,children:(0,r.__)("Disable all actions","zenpress")})]}),(0,p.jsx)(u,{onClick:t,isBusy:i})]})]})]}),(0,p.jsx)("aside",{className:"zenpress-sidebar",children:(0,p.jsx)("div",{className:"zenpress-presets",children:(0,p.jsxs)("div",{className:"zenpress-presets-description",children:[(0,p.jsx)("h2",{children:(0,r.__)("Pick configuration preset","zenpress")}),(0,p.jsx)("p",{children:(0,r.__)("Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case.","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🖼️ ",(0,r.__)("Corporate website","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("corporate-website"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:[" 📰 ",(0,r.__)("Blog","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("blog"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")}),(0,p.jsx)("hr",{}),(0,p.jsxs)("h3",{children:["🛒 ",(0,r.__)("E-commerce","zenpress")]}),(0,p.jsx)("p",{children:(0,r.__)("Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.","zenpress")}),(0,p.jsx)(a.Button,{variant:"secondary",onClick:()=>_("ecommerce"),__next40pxDefaultSize:!0,children:(0,r.__)("Enable","zenpress")})]})})})]})};t()(()=>{const e=document.getElementById("zenpress-settings");e&&(0,n.createRoot)(e).render((0,p.jsx)(x,{}))})})();
  • zenpress/trunk/assets/src/index.js

    r3372200 r3412245  
    22import { createRoot } from '@wordpress/element';
    33import './index.scss';
    4 import { SettingsPage } from './pages/SettingsPage';
     4import { SettingsPage } from './js/pages/SettingsPage';
    55
    66/**
     
    88 */
    99domReady(() => {
    10     const rootEl = document.getElementById('zenpress-settings');
    11     if (!rootEl) return;
     10    const rootEl = document.getElementById('zenpress-settings');
     11    if (!rootEl) return;
    1212
    13     const root = createRoot(rootEl);
    14     root.render(<SettingsPage />);
     13    const root = createRoot(rootEl);
     14    root.render(<SettingsPage />);
    1515});
  • zenpress/trunk/assets/src/index.scss

    r3372200 r3412245  
    1 .zenpress {
    2     &-loading {
    3         width: 100%;
    4         max-width: 900px;
    5         margin: 20px auto;
    6     }
     1@use 'scss/abstracts/variables';
    72
    8     &-dashboard-wrap {
    9         a:not(.components-button) {
    10             color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
     3@use 'scss/base/typography';
    114
    12             &[target='_blank'] {
    13                 position: relative;
    14                 gap: 4px;
     5@use 'scss/components/button';
     6@use 'scss/components/notice';
     7@use 'scss/components/tabs';
     8@use 'scss/components/toggle-control';
    159
    16                 &::after {
    17                     content: ' ↗';
    18                 }
    19             }
    20         }
    21 
    22         .components-button {
    23             gap: 4px;
    24         }
    25 
    26         .components-panel {
    27             width: 100%;
    28             margin: 0 auto 20px auto;
    29             max-width: 100%;
    30 
    31             &__body {
    32                 &-title {
    33                     text-transform: capitalize;
    34                 }
    35 
    36                 &-toggle {
    37                     border-bottom: 1px solid #d6e2ed;
    38                     text-transform: capitalize;
    39                 }
    40             }
    41         }
    42 
    43         .components-toggle-control {
    44             &__help {
    45                 font-size: 1.1em;
    46             }
    47         }
    48 
    49         .components-notice-list {
    50             width: 100%;
    51             margin-bottom: 20px;
    52         }
    53     }
    54 
    55     &-row {
    56         display: grid;
    57         grid-template-columns: 1fr;
    58         gap: 40px;
    59         width: 100%;
    60         max-width: 920px;
    61         margin: 0 auto;
    62     }
    63 
    64     &-actions {
    65         display: flex;
    66         flex-wrap: wrap;
    67         gap: 20px;
    68         justify-content: space-between;
    69         align-items: center;
    70         margin-bottom: 20px;
    71 
    72         &-bulk {
    73             display: flex;
    74             flex-wrap: wrap;
    75             gap: 10px;
    76             justify-content: flex-start;
    77             align-items: center;
    78         }
    79     }
    80 
    81     &-presets {
    82         display: flex;
    83         flex-wrap: wrap;
    84         gap: 10px;
    85         justify-content: flex-start;
    86         align-items: center;
    87         margin-bottom: 20px;
    88 
    89         &-description {
    90             flex: 100%;
    91             width: 100%;
    92             max-width: 100%;
    93         }
    94     }
    95 
    96     &-header {
    97         align-items: center;
    98         display: flex;
    99         flex-wrap: wrap;
    100         justify-content: space-between;
    101         overflow-x: auto;
    102         padding: 16px;
    103         margin: 0 0 20px 0;
    104         gap: 40px;
    105         background: #fff;
    106         border: 1px solid #e0e0e0;
    107 
    108         &-navigation {
    109             display: flex;
    110             flex-wrap: wrap;
    111             gap: 20px;
    112             justify-content: space-between;
    113             align-items: center;
    114         }
    115 
    116         h1,
    117         p {
    118             margin: 0;
    119             padding: 0;
    120         }
    121     }
    122 
    123     &-footer {
    124         align-items: center;
    125         display: flex;
    126         flex-wrap: wrap;
    127         justify-content: space-between;
    128         overflow-x: auto;
    129         padding: 16px;
    130         margin: 0 0 20px 0;
    131         gap: 40px;
    132         border-top: 1px solid #e0e0e0;
    133         padding-top: 32px;
    134 
    135         &-navigation {
    136             display: flex;
    137             flex-wrap: wrap;
    138             gap: 20px;
    139             justify-content: space-between;
    140             align-items: center;
    141         }
    142 
    143         p {
    144             margin: 0;
    145             padding: 0;
    146         }
    147     }
    148 }
     10@use 'scss/pages/settings';
  • zenpress/trunk/inc/admin/menu.php

    r3372200 r3412245  
    3131    ?>
    3232    <div class="wrap zenpress-dashboard-wrap">
    33         <div class="zenpress-header">
     33        <header class="zenpress-header">
    3434            <div class="zenpress-header-title">
    3535                <h1><?php echo esc_html__('ZenPress', 'zenpress'); ?></h1>
     
    6767                </a>
    6868            </div>
    69         </div>
    70         <div id="zenpress-settings" class="zenpress-settings">
     69        </header>
     70        <main id="zenpress-settings" class="zenpress-settings">
    7171            <div class="zenpress-loading card">
    7272                <div class="zenpress-loading-body">
     
    7676                </div>
    7777            </div>
    78         </div>
    79         <div class="zenpress-footer">
     78        </main>
     79        <footer class="zenpress-footer">
    8080            <div class="zenpress-footer-title">
    8181                <p>
     
    9999                </a>
    100100            </div>
    101         </div>
     101        </footer>
    102102    </div>
    103103    <?php
  • zenpress/trunk/inc/core/metadata.php

    r3372200 r3412245  
    1616        'description' => '',
    1717        'category' => '',
     18        'subcategory' => '',
    1819        'weight' => 0,
    1920        'preset' => []
     
    2829        'description' => sanitize_text_field($metadata['description']),
    2930        'category' => sanitize_text_field($metadata['category']),
     31        'subcategory' => sanitize_text_field($metadata['subcategory']),
    3032        'weight' => (int) $metadata['weight'],
    3133        'preset' => array_map('sanitize_text_field', (array) $metadata['preset'])
  • zenpress/trunk/inc/snippets/functions/disable-rest-api.php

    r3382662 r3412245  
    2323function zenpress_disable_wp_rest_api($access) {
    2424    if (!is_user_logged_in() && !zenpress_disable_wp_rest_api_allow_access()) {
    25         $message = apply_filters('disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress'));
     25        $message = apply_filters('zenpress_disable_wp_rest_api_error', __('REST API restricted to authenticated users.', 'zenpress'));
    2626
    2727        return new WP_Error('rest_login_required', $message, ['status' => rest_authorization_required_code()]);
     
    3232
    3333function zenpress_disable_wp_rest_api_allow_access() {
    34     $post_var = apply_filters('disable_wp_rest_api_post_var', false);
    35     $server_var = apply_filters('disable_wp_rest_api_server_var', false);
     34    $post_var = apply_filters('zenpress_disable_wp_rest_api_post_var', false);
     35    $server_var = apply_filters('zenpress_disable_wp_rest_api_server_var', false);
    3636
    3737    if (!empty($post_var)) {
    3838        if (is_array($post_var)) {
    3939            foreach($post_var as $var) {
     40                // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations
    4041                if (isset($_POST[$var]) && !empty($_POST[$var])) {
    4142                    return true;
     
    4344            }
    4445        } else {
     46            // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Intentional: Allows bypass via specific POST vars for webhooks/third-party integrations
    4547            if (isset($_POST[$post_var]) && !empty($_POST[$post_var])) {
    4648                return true;
  • zenpress/trunk/inc/snippets/functions/remove-woocommerce-patterns.php

    r3372200 r3412245  
    55}
    66
     7// Only proceed if WooCommerce is active
     8if (!class_exists('WooCommerce')) {
     9    return;
     10}
     11
    712use Automattic\WooCommerce\Blocks\Package;
    813
    914add_action('woocommerce_blocks_loaded', static function (): void {
    10     remove_action(
    11         'init',
    12         [
    13             Package::container()->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class),
    14             'register_block_patterns',
    15         ]
    16     );
     15    // Check if required classes exist before accessing them
     16    if (!class_exists(Package::class) || !class_exists(\Automattic\WooCommerce\Blocks\BlockPatterns::class)) {
     17        return;
     18    }
     19
     20    try {
     21        $container = Package::container();
     22        if (!$container) {
     23            return;
     24        }
     25
     26        $block_patterns = $container->get(\Automattic\WooCommerce\Blocks\BlockPatterns::class);
     27        if ($block_patterns && method_exists($block_patterns, 'register_block_patterns')) {
     28            remove_action(
     29                'init',
     30                [$block_patterns, 'register_block_patterns']
     31            );
     32        }
     33    } catch (\Exception $e) {
     34        // Silently fail if container or class is not available
     35        return;
     36    }
    1737});
     38
     39add_action('init', static function() {
     40    if (!class_exists('WP_Block_Patterns_Registry')) {
     41        return;
     42    }
     43
     44    $all_patterns = WP_Block_Patterns_Registry::get_instance()->get_all_registered();
     45    foreach ($all_patterns as $pattern) {
     46        if (isset($pattern['name'])) {
     47            // Use str_starts_with() for PHP 8.0+, fallback to strpos() for older versions
     48            $is_woocommerce_pattern = function_exists('str_starts_with')
     49                ? str_starts_with($pattern['name'], 'woocommerce-blocks')
     50                : strpos($pattern['name'], 'woocommerce-blocks') === 0;
     51
     52            if ($is_woocommerce_pattern) {
     53                unregister_block_pattern($pattern['name']);
     54            }
     55        }
     56    }
     57}, 20);
     58
     59/**
     60 * Disables the WooCommerce Pattern Toolkit Full Composability feature.
     61 *
     62 * This feature is a flag for advanced block patterns functionality, which can
     63 * sometimes be tied to large transients/caching issues.
     64 */
     65add_filter('woocommerce_admin_features', static function($features) {
     66    // Ensure $features is an array
     67    if (!is_array($features)) {
     68        return $features;
     69    }
     70
     71    $feature_to_disable = 'pattern-toolkit-full-composability';
     72
     73    // Find the feature's identifier in the array and remove it.
     74    $key = array_search($feature_to_disable, $features, true);
     75    if ($key !== false) {
     76        unset($features[$key]);
     77    }
     78
     79    return $features;
     80});
  • zenpress/trunk/inc/snippets/meta/block-user-enumeration.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Security 🔒️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('security', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/clean-admin-bar.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('User interface 💻️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('user-interface', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/clean-dashboard-items.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('User interface 💻️', 'zenpress'),
     18    'category' => __('ads-blocker', 'zenpress'),
     19    'subcategory' => __('user-interface', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-adjacent-posts.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'ecommerce'],
     21    'preset' => ['corporate-website', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-application-passwords.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Security 🔒️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('security', 'zenpress'),
    1920    'weight' => 0,
    2021    'preset' => [''],
  • zenpress/trunk/inc/snippets/meta/disable-author-archives.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Security 🔒️', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('security', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'ecommerce'],
     21    'preset' => ['corporate-website', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-dashicons.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __(' core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-dns-prefetch.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __('core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-emoji-scripts.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __(' core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-jquery-migrate.meta.php

    r3372200 r3412245  
    1616        'zenpress'
    1717    ),
    18     'category' => __('Performance 🚀', 'zenpress'),
     18    'category' => __(' core', 'zenpress'),
     19    'subcategory' => __('performance', 'zenpress'),
    1920    'weight' => 0,
    20     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     21    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    2122];
  • zenpress/trunk/inc/snippets/meta/disable-login-language-selector.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable the login language selector', 'zenpress'),
    1414    'description' => __('Removes the language dropdown from the WordPress login page. Simplifies login screen and reduces distractions.', 'zenpress'),
    15     'category' => __('User interface 💻️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('user-interface', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-oembed.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable oEmbed', 'zenpress'),
    1414    'description' => __('Removes WordPress oEmbed features such as auto-discovery, REST API routes, TinyMCE integration, and the wp-embed script. Reduces API calls, improves performance, and limits unnecessary external requests.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-pdf-thumbnails.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable PDF thumbnails', 'zenpress'),
    1414    'description' => __('Prevents WordPress from generating thumbnails for uploaded PDF files by removing fallback image sizes. saves storage space and improves performance by avoiding unnecessary image generation.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __(' core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-pingback-trackback.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable pingback and trackback', 'zenpress'),
    1414    'description' => __('Removes the X-Pingback header, disables pingbacks and trackbacks on new posts, and prevents self-pingbacks. reduces spam, blocks potential DDoS vectors, and slightly improves performance by avoiding useless requests.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-rest-api.meta.php

    r3382662 r3412245  
    1212
    1313return [
    14     'title' => __('Disable REST API', 'zenpress'),
     14    'title' => __('Disable REST API for visitors not logged into WordPress', 'zenpress'),
    1515    'description' => __(
    1616        'Disable the WP REST API for visitors not logged into WordPress.',
    1717        'zenpress'
    1818    ),
    19     'category' => __('Security 🔒️', 'zenpress'),
     19    'category' => __('core', 'zenpress'),
     20    'subcategory' => __('security', 'zenpress'),
    2021    'weight' => 0,
    2122    'preset' => [],
  • zenpress/trunk/inc/snippets/meta/disable-rss.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable all WordPress feeds (RDF, RSS, RSS2, Atom, and comments)', 'zenpress'),
    1414    'description' => __('Prevents access to all default feeds (RDF, RSS, RSS2, Atom, and comments). Also removes feed links from head, and redirects feed requests to the homepage. Reduces unnecessary requests and improves SEO consistency.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website'],
     18    'preset' => ['corporate-website'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-shortlink.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WordPress shortlink', 'zenpress'),
    1414    'description' => __('Removes shortlink functionality from both the HTML head and HTTP headers. Reduces unnecessary output, improves performance and SEO clarity.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-wlw-manifest.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WLW link', 'zenpress'),
    1414    'description' => __('Removes the WLW manifest link from the head, which was only used by the deprecated Windows Live Writer app. Reduces unnecessary metadata and improves performance.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WooCommerce cart fragments script', 'zenpress'),
    1414    'description' => __('Removes the WooCommerce cart fragments JavaScript (wc-cart-fragments), which is responsible for dynamically updating the cart contents without a page reload. Disabling this can improve performance on stores that do not require live cart updates.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/trunk/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WooCommerce scripts and styles on non-WooCommerce pages', 'zenpress'),
    1414    'description' => __('Dequeues WooCommerce assets on pages where WooCommerce functionality is not required, such as homepage, blog posts, or custom pages. Helps improve performance by preventing unnecessary asset loading.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/trunk/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable unnecessary Stripe scripts on WooCommerce pages', 'zenpress'),
    1414    'description' => __('Prevents loading of Stripe-related scripts on the product and cart pages when the "Payment Request Button Support" (PRBS) is disabled. Helps improve performance by avoiding unnecessary JavaScript loading.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/trunk/inc/snippets/meta/disable-woocommerce-widgets.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable WooCommerce widgets', 'zenpress'),
    1414    'description' => __('Unregisters default WooCommerce widgets to reduce bloat in the widget screen and improve performance by removing unused features.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/trunk/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php

    r3372200 r3412245  
    1313    'title' => __('Disable XML-RPC and remove RSD link', 'zenpress'),
    1414    'description' => __('Disables XML-RPC (often targeted by brute force or DDoS attacks) and removes the RSD link from the HTML head to reduce exposure.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/hide-woocommerce-version.meta.php

    r3372200 r3412245  
    1313    'title' => __('Hide WooCommerce version', 'zenpress'),
    1414    'description' => __('Removes WooCommerce version info from HTTP headers and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WooCommerce versions.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/trunk/inc/snippets/meta/hide-wordpress-version.meta.php

    r3372200 r3412245  
    1313    'title' => __('Hide WordPress version', 'zenpress'),
    1414    'description' => __('Removes WordPress version info from the head, generator, and asset URLs. Reduces exposure of version number and makes it harder for attackers to target specific WordPress versions.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/protect-wp-login.meta.php

    r3372200 r3412245  
    1313    'title' => __('Protect the wp-login form from brute force attacks', 'zenpress'),
    1414    'description' => __('Removes detailed login error messages and limits failed login attempts per IP address. Blocks further attempts for a set duration after too many failures. Improves security by mitigating brute force attacks.', 'zenpress'),
    15     'category' => __('Security 🔒️', 'zenpress'),
     15    'category' => __('tools', 'zenpress'),
     16    'subcategory' => __('security', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php

    r3372200 r3412245  
    1313    'title' => __('Remove WordPress default remote block patterns', 'zenpress'),
    1414    'description' => __('Prevents WordPress from loading remote block patterns and removes the built-in core block patterns. Reduces editor clutter and improves performance by avoiding unnecessary data loading.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __(' gutenberg', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/remove-rest-api-link.meta.php

    r3372200 r3412245  
    1313    'title' => __('Remove REST API links', 'zenpress'),
    1414    'description' => __('Prevents WordPress from adding REST API discovery links to the head section of the site. reduces unnecessary HTML output and slightly improves performance while keeping REST API functionality available.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('core', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/inc/snippets/meta/remove-woocommerce-patterns.meta.php

    r3372200 r3412245  
    1111
    1212return [
    13     'title' => __('Remove WooCommerce default remote block patterns', 'zenpress'),
    14     'description' => __('Removes all WooCommerce remote block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'),
    15     'category' => __('WooCommerce 🛒', 'zenpress'),
     13    'title' => __('Remove WooCommerce default block patterns', 'zenpress'),
     14    'description' => __('Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor.', 'zenpress'),
     15    'category' => __('woocommerce', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    1718    'preset' => ['ecommerce'],
  • zenpress/trunk/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php

    r3372200 r3412245  
    1313    'title' => __('Separate loading of core block styles', 'zenpress'),
    1414    'description' => __('Forces WordPress to load core block styles separately, improving performance by only loading the styles required for the blocks used on a page.', 'zenpress'),
    15     'category' => __('Performance 🚀', 'zenpress'),
     15    'category' => __('gutenberg', 'zenpress'),
     16    'subcategory' => __('performance', 'zenpress'),
    1617    'weight' => 0,
    17     'preset' => ['showcase-website', 'blog', 'ecommerce'],
     18    'preset' => ['corporate-website', 'blog', 'ecommerce'],
    1819];
  • zenpress/trunk/languages/zenpress.pot

    r3382668 r3412245  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2.0.4.1\n"
     5"Project-Id-Version: ZenPress - Cleaner, Lighter, Faster WP 2.1.0\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/zenpress\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-10-22T14:03:43+00:00\n"
     12"POT-Creation-Date: 2025-12-05T13:56:04+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
     
    169169
    170170#: inc/snippets/meta/block-user-enumeration.meta.php:18
     171#: inc/snippets/meta/clean-admin-bar.meta.php:18
     172#: inc/snippets/meta/disable-adjacent-posts.meta.php:18
    171173#: inc/snippets/meta/disable-application-passwords.meta.php:18
    172174#: inc/snippets/meta/disable-author-archives.meta.php:18
     175#: inc/snippets/meta/disable-dns-prefetch.meta.php:18
     176#: inc/snippets/meta/disable-login-language-selector.meta.php:15
     177#: inc/snippets/meta/disable-oembed.meta.php:15
    173178#: inc/snippets/meta/disable-pingback-trackback.meta.php:15
    174179#: inc/snippets/meta/disable-rest-api.meta.php:19
    175 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15
    176 #: inc/snippets/meta/hide-wordpress-version.meta.php:15
    177 #: inc/snippets/meta/protect-wp-login.meta.php:15
    178 msgid "Security 🔒️"
    179 msgstr ""
    180 
    181 #: inc/snippets/meta/clean-admin-bar.meta.php:13
    182 msgid "Clean up the WordPress admin bar"
    183 msgstr ""
    184 
    185 #: inc/snippets/meta/clean-admin-bar.meta.php:14
    186 msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface."
    187 msgstr ""
    188 
    189 #: inc/snippets/meta/clean-admin-bar.meta.php:18
    190 #: inc/snippets/meta/clean-dashboard-items.meta.php:18
    191 #: inc/snippets/meta/disable-login-language-selector.meta.php:15
    192 msgid "User interface 💻️"
    193 msgstr ""
    194 
    195 #: inc/snippets/meta/clean-dashboard-items.meta.php:13
    196 msgid "Clean up the WordPress Dashboard"
    197 msgstr ""
    198 
    199 #: inc/snippets/meta/clean-dashboard-items.meta.php:14
    200 msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability."
    201 msgstr ""
    202 
    203 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13
    204 msgid "Disable adjacent posts link tags"
    205 msgstr ""
    206 
    207 #: inc/snippets/meta/disable-adjacent-posts.meta.php:14
    208 msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance."
    209 msgstr ""
    210 
    211 #: inc/snippets/meta/disable-adjacent-posts.meta.php:18
    212 #: inc/snippets/meta/disable-dashicons.meta.php:18
    213 #: inc/snippets/meta/disable-dns-prefetch.meta.php:18
    214 #: inc/snippets/meta/disable-emoji-scripts.meta.php:18
    215 #: inc/snippets/meta/disable-jquery-migrate.meta.php:18
    216 #: inc/snippets/meta/disable-oembed.meta.php:15
    217 #: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15
    218180#: inc/snippets/meta/disable-rss.meta.php:15
    219181#: inc/snippets/meta/disable-shortlink.meta.php:15
    220182#: inc/snippets/meta/disable-wlw-manifest.meta.php:15
    221 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15
     183#: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:15
     184#: inc/snippets/meta/hide-wordpress-version.meta.php:15
    222185#: inc/snippets/meta/remove-rest-api-link.meta.php:15
    223 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15
    224 msgid "Performance 🚀"
     186msgid "core"
     187msgstr ""
     188
     189#: inc/snippets/meta/block-user-enumeration.meta.php:19
     190#: inc/snippets/meta/disable-application-passwords.meta.php:19
     191#: inc/snippets/meta/disable-author-archives.meta.php:19
     192#: inc/snippets/meta/disable-pingback-trackback.meta.php:16
     193#: inc/snippets/meta/disable-rest-api.meta.php:20
     194#: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:16
     195#: inc/snippets/meta/hide-woocommerce-version.meta.php:16
     196#: inc/snippets/meta/hide-wordpress-version.meta.php:16
     197#: inc/snippets/meta/protect-wp-login.meta.php:16
     198msgid "security"
     199msgstr ""
     200
     201#: inc/snippets/meta/clean-admin-bar.meta.php:13
     202msgid "Clean up the WordPress admin bar"
     203msgstr ""
     204
     205#: inc/snippets/meta/clean-admin-bar.meta.php:14
     206msgid "Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface."
     207msgstr ""
     208
     209#: inc/snippets/meta/clean-admin-bar.meta.php:19
     210#: inc/snippets/meta/clean-dashboard-items.meta.php:19
     211#: inc/snippets/meta/disable-default-pattern-categories.meta.php:16
     212#: inc/snippets/meta/disable-login-language-selector.meta.php:16
     213msgid "user-interface"
     214msgstr ""
     215
     216#: inc/snippets/meta/clean-dashboard-items.meta.php:13
     217msgid "Clean up the WordPress Dashboard"
     218msgstr ""
     219
     220#: inc/snippets/meta/clean-dashboard-items.meta.php:14
     221msgid "Removes unnecessary widgets and ads widgets from the dashboard. Declutters the admin area and improves usability."
     222msgstr ""
     223
     224#: inc/snippets/meta/clean-dashboard-items.meta.php:18
     225msgid "ads-blocker"
     226msgstr ""
     227
     228#: inc/snippets/meta/disable-adjacent-posts.meta.php:13
     229msgid "Disable adjacent posts link tags"
     230msgstr ""
     231
     232#: inc/snippets/meta/disable-adjacent-posts.meta.php:14
     233msgid "Removes rel=\"prev\" and rel=\"next\" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance."
     234msgstr ""
     235
     236#: inc/snippets/meta/disable-adjacent-posts.meta.php:19
     237#: inc/snippets/meta/disable-dashicons.meta.php:19
     238#: inc/snippets/meta/disable-dns-prefetch.meta.php:19
     239#: inc/snippets/meta/disable-emoji-scripts.meta.php:19
     240#: inc/snippets/meta/disable-jquery-migrate.meta.php:19
     241#: inc/snippets/meta/disable-oembed.meta.php:16
     242#: inc/snippets/meta/disable-pdf-thumbnails.meta.php:16
     243#: inc/snippets/meta/disable-rss.meta.php:16
     244#: inc/snippets/meta/disable-shortlink.meta.php:16
     245#: inc/snippets/meta/disable-wlw-manifest.meta.php:16
     246#: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:16
     247#: inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php:16
     248#: inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php:16
     249#: inc/snippets/meta/disable-woocommerce-widgets.meta.php:16
     250#: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:16
     251#: inc/snippets/meta/remove-rest-api-link.meta.php:16
     252#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:16
     253#: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:16
     254msgid "performance"
    225255msgstr ""
    226256
     
    249279msgstr ""
    250280
     281#: inc/snippets/meta/disable-dashicons.meta.php:18
     282#: inc/snippets/meta/disable-emoji-scripts.meta.php:18
     283#: inc/snippets/meta/disable-jquery-migrate.meta.php:18
     284#: inc/snippets/meta/disable-pdf-thumbnails.meta.php:15
     285msgid " core"
     286msgstr ""
     287
     288#: inc/snippets/meta/disable-default-pattern-categories.meta.php:13
     289msgid "Disable default pattern categories in site editor"
     290msgstr ""
     291
     292#: inc/snippets/meta/disable-default-pattern-categories.meta.php:14
     293msgid "Removes default pattern categories from the block pattern inserter in the site editor. Disables default categories: featured, about, audio, banner, buttons, call-to-action, columns, contact, footer, gallery, header, media, portfolio, posts, query, services, team, testimonials, text, videos, and any custom categories. This simplifies the interface by hiding category navigation while patterns remain accessible."
     294msgstr ""
     295
     296#: inc/snippets/meta/disable-default-pattern-categories.meta.php:15
     297#: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:15
     298msgid "gutenberg"
     299msgstr ""
     300
    251301#: inc/snippets/meta/disable-dns-prefetch.meta.php:13
    252302msgid "Disable DNS prefetch"
     
    306356
    307357#: inc/snippets/meta/disable-rest-api.meta.php:14
    308 msgid "Disable REST API"
     358msgid "Disable REST API for visitors not logged into WordPress"
    309359msgstr ""
    310360
     
    351401#: inc/snippets/meta/hide-woocommerce-version.meta.php:15
    352402#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:15
    353 msgid "WooCommerce 🛒"
     403msgid "woocommerce"
    354404msgstr ""
    355405
     
    410460msgstr ""
    411461
     462#: inc/snippets/meta/protect-wp-login.meta.php:15
     463msgid "tools"
     464msgstr ""
     465
    412466#: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:13
    413467msgid "Remove WordPress default remote block patterns"
     
    418472msgstr ""
    419473
     474#: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:15
     475msgid " gutenberg"
     476msgstr ""
     477
    420478#: inc/snippets/meta/remove-rest-api-link.meta.php:13
    421479msgid "Remove REST API links"
     
    427485
    428486#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:13
    429 msgid "Remove WooCommerce default remote block patterns"
     487msgid "Remove WooCommerce default block patterns"
    430488msgstr ""
    431489
    432490#: inc/snippets/meta/remove-woocommerce-patterns.meta.php:14
    433 msgid "Removes all WooCommerce remote block patterns to avoid unnecessary pattern registration in the editor."
     491msgid "Removes all WooCommerce block patterns to avoid unnecessary pattern registration in the editor."
    434492msgstr ""
    435493
     
    443501
    444502#: assets/build/index.js:1
    445 #: assets/src/components/SaveButton.js:16
     503#: assets/src/js/components/SaveButton.js:15
    446504msgid "Save settings"
    447505msgstr ""
    448506
    449507#: assets/build/index.js:1
    450 #: assets/src/hooks/useSettings.js:41
     508#: assets/src/js/hooks/useSettings.js:41
    451509msgid "Failed to load settings."
    452510msgstr ""
    453511
    454512#: assets/build/index.js:1
    455 #: assets/src/hooks/useSettings.js:56
     513#: assets/src/js/hooks/useSettings.js:56
    456514msgid "Settings saved."
    457515msgstr ""
    458516
    459517#: assets/build/index.js:1
    460 #: assets/src/hooks/useSettings.js:58
     518#: assets/src/js/hooks/useSettings.js:58
    461519msgid "Failed to save settings."
    462520msgstr ""
    463521
    464522#: assets/build/index.js:1
    465 #: assets/src/pages/SettingsPage.js:66
     523#: assets/src/js/pages/SettingsPage.js:75
    466524msgid "Uncategorized"
    467525msgstr ""
    468526
    469527#: assets/build/index.js:1
    470 #: assets/src/pages/SettingsPage.js:83
    471 msgid "Select the features that suit your needs. If you don't know which ones to choose, just select your site's type and it will set the right features for you."
    472 msgstr ""
    473 
    474 #: assets/build/index.js:1
    475 #: assets/src/pages/SettingsPage.js:88
    476 msgid "Pick a preset"
    477 msgstr ""
    478 
    479 #: assets/build/index.js:1
    480 #: assets/src/pages/SettingsPage.js:96
    481 msgid "Showcase website"
    482 msgstr ""
    483 
    484 #: assets/build/index.js:1
    485 #: assets/src/pages/SettingsPage.js:99
     528#: assets/src/js/pages/SettingsPage.js:76
     529msgid "uncategorized"
     530msgstr ""
     531
     532#: assets/build/index.js:1
     533#: assets/src/js/pages/SettingsPage.js:193
     534msgid "Enable all actions"
     535msgstr ""
     536
     537#: assets/build/index.js:1
     538#: assets/src/js/pages/SettingsPage.js:196
     539msgid "Disable all actions"
     540msgstr ""
     541
     542#: assets/build/index.js:1
     543#: assets/src/js/pages/SettingsPage.js:206
     544msgid "Pick configuration preset"
     545msgstr ""
     546
     547#: assets/build/index.js:1
     548#: assets/src/js/pages/SettingsPage.js:208
     549msgid "Don't know which features to enable? Quickly configure ZenPress by selecting a preset that matches your site type. Each preset enables optimized features for your specific use case."
     550msgstr ""
     551
     552#: assets/build/index.js:1
     553#: assets/src/js/pages/SettingsPage.js:214
     554msgid "Corporate website"
     555msgstr ""
     556
     557#: assets/build/index.js:1
     558#: assets/src/js/pages/SettingsPage.js:216
     559msgid "Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives."
     560msgstr ""
     561
     562#: assets/build/index.js:1
     563#: assets/src/js/pages/SettingsPage.js:226
     564#: assets/src/js/pages/SettingsPage.js:237
     565#: assets/src/js/pages/SettingsPage.js:248
     566msgid "Enable"
     567msgstr ""
     568
     569#: assets/build/index.js:1
     570#: assets/src/js/pages/SettingsPage.js:229
    486571msgid "Blog"
    487572msgstr ""
    488573
    489574#: assets/build/index.js:1
    490 #: assets/src/pages/SettingsPage.js:102
     575#: assets/src/js/pages/SettingsPage.js:231
     576msgid "Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds."
     577msgstr ""
     578
     579#: assets/build/index.js:1
     580#: assets/src/js/pages/SettingsPage.js:240
    491581msgid "E-commerce"
    492582msgstr ""
    493583
    494584#: assets/build/index.js:1
    495 #: assets/src/pages/SettingsPage.js:106
    496 msgid "Or just enable what you need"
    497 msgstr ""
    498 
    499 #: assets/build/index.js:1
    500 #: assets/src/pages/SettingsPage.js:111
    501 msgid "Enable all actions"
    502 msgstr ""
    503 
    504 #: assets/build/index.js:1
    505 #: assets/src/pages/SettingsPage.js:115
    506 msgid "Disable all actions"
    507 msgstr ""
     585#: assets/src/js/pages/SettingsPage.js:242
     586msgid "Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout."
     587msgstr ""
  • zenpress/trunk/readme.txt

    r3386239 r3412245  
    44Tags: optimization, performance, security, bloat, woocommerce
    55Requires at least: 6.0
    6 Tested up to: 6.8
    7 Stable tag: 2.0.5
     6Tested up to: 6.9
     7Stable tag: 2.1.0
    88Requires PHP: 7.4
    99License: GPLv2 or later
     
    3434
    3535= Settings subpage 🧰 =
    36 * Find presets to help you configure your ZenPress.
    37 * Every action is documented so that you understand what you are doing and the benefits.
     36* Organized interface with vertical tabs for easy navigation between categories (Core, Gutenberg, WooCommerce, Tools).
     37* Features grouped by subcategories (Performance, Security, User Interface) with visual icons for quick identification.
     38* Three ready-to-use presets: Corporate website, Blog, and E-commerce - each optimized for specific site types.
     39* Every action is documented with descriptions so that you understand what you are doing and the benefits.
     40* Fully accessible interface with ARIA-compliant tabs and complete keyboard navigation support.
    3841* Native WordPress interface, benefits from Gutenberg's new features and the site editor.
    3942
    40 = Performance 🚀 =
     43= Core - Performance =
    4144
    4245* Disable adjacent posts link tags.
     
    5457* Separate loading of core block styles.
    5558
    56 = Security 🔒️ =
     59= Core - Security =
    5760
    5861* Block user enumeration.
     
    6568* Protect the wp-login form from brute force attacks.
    6669
    67 = User interface 💻️ =
     70= Core - User Interface =
    6871
    6972* Clean up the WordPress admin bar.
     
    7174* Disable the login language selector.
    7275
    73 = WooCommerce 🛒 =
     76= WooCommerce - Performance =
    7477* Disable WooCommerce cart fragments script.
    7578* Disable WooCommerce scripts and styles on non-WooCommerce pages.
    7679* Disable unnecessary Stripe scripts on WooCommerce pages.
    7780* Disable WooCommerce widgets.
     81* Remove WooCommerce default block patterns.
     82
     83= WooCommerce - Security =
    7884* Hide WooCommerce version.
    79 * Remove WooCommerce default remote block patterns.
     85
     86= Gutenberg - Performance =
     87* Remove WordPress default remote block patterns.
     88* Separate loading of core block styles.
     89
     90= Gutenberg - User Interface =
     91* Disable default pattern categories in site editor.
     92
     93= Presets =
     94* Corporate website / Portfolio: Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.
     95* Blog: Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.
     96* E-commerce: Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.
     97
     98= Accessibility =
     99* Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide.
     100* Complete keyboard navigation: Arrow keys, Home, End, Space, Enter, and Tab keys fully supported.
     101* Automatic tab activation on focus for improved user experience.
     102* Proper focus management with visible focus indicators.
     103* Screen reader friendly with proper ARIA labels and roles.
    80104
    81105== Roadmap ==
    82106
    83107= Global =
    84 * New presets.
    85 * Documentation pages.
    86 * More context in plugin UI for actionable function.
     108* Additional presets for specific use cases.
     109* Documentation pages with detailed guides.
    87110
    88111= Security =
     
    96119* Disable WordPress default lazy loading.
    97120
    98 = UI =
     121= User Interface =
    99122* Remove "howdy" from admin bar.
    100123* Remove WordPress logo.
     
    162185== Changelog ==
    163186
     187= 2.1.0 =
     188- Global: Tested with WordPress 6.9.
     189- Interface: Complete redesign with vertical tabbed interface for better organization.
     190- Interface: Features now organized by categories (Core, Gutenberg, WooCommerce, Tools) and subcategories (Performance, Security, User Interface).
     191- Interface: Visual icons added to categories and subcategories for quick identification.
     192- Presets: Three ready-to-use presets with detailed descriptions (Corporate website, Blog, E-commerce).
     193- Accessibility: Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide.
     194- Accessibility: Complete keyboard navigation support (Arrow keys, Home, End, Space, Enter, Tab).
     195- Accessibility: Automatic tab activation on focus for improved user experience.
     196- Accessibility: Proper focus management with visible focus indicators.
     197- Accessibility: Screen reader friendly with proper ARIA labels and roles.
     198- Keyboard: Toggle controls now fully keyboard accessible with Enter key support.
     199- Keyboard: Added Ctrl+S / Cmd+S shortcut to save settings.
     200- Gutenberg: New actionable function: Disable default pattern categories in site editor.
     201
    164202= 2.0.5 =
    165203- Global: Compatibility check.
  • zenpress/trunk/zenpress.php

    r3386239 r3412245  
    1212 * Plugin Name: ZenPress - Cleaner, Lighter, Faster WP
    1313 * Description: Easily speed up and strengthen your WordPress site by cleaning out unnecessary features and protecting weak points.
    14  * Version: 2.0.5
     14 * Version: 2.1.0
    1515 * Plugin URI: https://wordpress.org/plugins/zenpress/
    1616 * Author: Quentin Le Duff
     
    1919 * Domain Path: /languages/
    2020 * Requires at least: 6.0
    21  * Tested up to: 6.8
     21 * Tested up to: 6.9
    2222 * Requires PHP: 7.4
    2323 * License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html/
Note: See TracChangeset for help on using the changeset viewer.