Changeset 3470504
- Timestamp:
- 02/26/2026 04:30:18 PM (4 weeks ago)
- Location:
- zenpress
- Files:
-
- 100 edited
- 1 copied
-
tags/2.2.5 (copied) (copied from zenpress/trunk)
-
tags/2.2.5/assets/build/index.asset.php (modified) (1 diff)
-
tags/2.2.5/assets/build/index.js (modified) (1 diff)
-
tags/2.2.5/assets/src/js/components/BulkSnippetActions.js (modified) (2 diffs)
-
tags/2.2.5/assets/src/js/components/IntegrationsBlock.js (modified) (1 diff)
-
tags/2.2.5/assets/src/js/components/PresetCard.js (modified) (1 diff)
-
tags/2.2.5/assets/src/js/components/PresetsSidebar.js (modified) (4 diffs)
-
tags/2.2.5/assets/src/js/components/SaveButton.js (modified) (1 diff)
-
tags/2.2.5/assets/src/js/config/integrations.js (modified) (3 diffs)
-
tags/2.2.5/assets/src/js/hooks/useSettings.js (modified) (2 diffs)
-
tags/2.2.5/assets/src/js/utils/snippets.js (modified) (1 diff)
-
tags/2.2.5/inc/admin/links.php (modified) (3 diffs)
-
tags/2.2.5/inc/admin/menu.php (modified) (8 diffs)
-
tags/2.2.5/inc/classes/integrations.php (modified) (12 diffs)
-
tags/2.2.5/inc/snippets/functions/block-user-enumeration.php (modified) (2 diffs)
-
tags/2.2.5/inc/snippets/functions/disable-rest-api.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/functions/protect-wp-login.php (modified) (3 diffs)
-
tags/2.2.5/inc/snippets/meta/block-user-enumeration.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/clean-admin-bar.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/clean-dashboard-items.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-adjacent-posts.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-application-passwords.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-author-archives.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-autosave.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-capital-p-dangit.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-dashicons.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-default-pattern-categories.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-jquery-migrate.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-login-language-selector.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-password-strength-meter.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-pingback-trackback.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-rest-api.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-rss.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-shortlink.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-wlw-manifest.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-wordpress-default-lazy-loading.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/limit-post-revisions.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/protect-wp-login.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/remove-help-button.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/remove-rest-api-link.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/remove-wordpress-logo.meta.php (modified) (1 diff)
-
tags/2.2.5/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php (modified) (1 diff)
-
tags/2.2.5/languages/zenpress.pot (modified) (40 diffs)
-
tags/2.2.5/readme.txt (modified) (5 diffs)
-
tags/2.2.5/zenpress.php (modified) (1 diff)
-
trunk/assets/build/index.asset.php (modified) (1 diff)
-
trunk/assets/build/index.js (modified) (1 diff)
-
trunk/assets/src/js/components/BulkSnippetActions.js (modified) (2 diffs)
-
trunk/assets/src/js/components/IntegrationsBlock.js (modified) (1 diff)
-
trunk/assets/src/js/components/PresetCard.js (modified) (1 diff)
-
trunk/assets/src/js/components/PresetsSidebar.js (modified) (4 diffs)
-
trunk/assets/src/js/components/SaveButton.js (modified) (1 diff)
-
trunk/assets/src/js/config/integrations.js (modified) (3 diffs)
-
trunk/assets/src/js/hooks/useSettings.js (modified) (2 diffs)
-
trunk/assets/src/js/utils/snippets.js (modified) (1 diff)
-
trunk/inc/admin/links.php (modified) (3 diffs)
-
trunk/inc/admin/menu.php (modified) (8 diffs)
-
trunk/inc/classes/integrations.php (modified) (12 diffs)
-
trunk/inc/snippets/functions/block-user-enumeration.php (modified) (2 diffs)
-
trunk/inc/snippets/functions/disable-rest-api.php (modified) (1 diff)
-
trunk/inc/snippets/functions/protect-wp-login.php (modified) (3 diffs)
-
trunk/inc/snippets/meta/block-user-enumeration.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/clean-admin-bar.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/clean-dashboard-items.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-adjacent-posts.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-application-passwords.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-author-archives.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-autosave.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-capital-p-dangit.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-dashicons.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-default-pattern-categories.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-jquery-migrate.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-login-language-selector.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-password-strength-meter.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-pingback-trackback.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-rest-api.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-rss.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-shortlink.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-wlw-manifest.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-wordpress-default-lazy-loading.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/limit-post-revisions.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/protect-wp-login.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-help-button.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-rest-api-link.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/remove-wordpress-logo.meta.php (modified) (1 diff)
-
trunk/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php (modified) (1 diff)
-
trunk/languages/zenpress.pot (modified) (40 diffs)
-
trunk/readme.txt (modified) (5 diffs)
-
trunk/zenpress.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
zenpress/tags/2.2.5/assets/build/index.asset.php
r3452689 r3470504 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' => ' f3427795ee306bf33669');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' => 'e5c7f5bde89d8094a538'); -
zenpress/tags/2.2.5/assets/build/index.js
r3452689 r3470504 1 (()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var s=e.n(t);const n=window.wp.element,r=window.wp.apiFetch;var a=e.n(r);const i=window.wp.data,o=window.wp.notices,c=window.wp.i18n,l=[{key:"autoptimize",path:"/zenpress/v1/autoconfig/autoptimize",successMessage:(0,c.__)("Autoptimize has been configured.","zenpress"),errorMessage:(0,c.__)("Autoptimize autoconfig failed. Is Autoptimize installed and active?","zenpress"),buttonLabel:(0,c.__)("Setup Autoptimize","zenpress"),helpText:(0,c.__)("Apply recommended Autoptimize settings: Minify JS & CSS, aggregate CSS, static files, 404 fallbacks.","zenpress")},{key:"cache_enabler",path:"/zenpress/v1/autoconfig/cache-enabler",successMessage:(0,c.__)("Cache Enabler has been configured.","zenpress"),errorMessage:(0,c.__)("Cache Enabler autoconfig failed. Is Cache Enabler installed and active?","zenpress"),buttonLabel:(0,c.__)("Setup Cache Enabler","zenpress"),helpText:(0,c.__)("Apply recommended Cache Enabler settings: Clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS).","zenpress")},{key:"sqlite_object_cache",path:"/zenpress/v1/autoconfig/sqlite-object-cache",successMessage:(0,c.__)("SQLite Object Cache has been configured.","zenpress"),errorMessage:(0,c.__)("SQLite Object Cache autoconfig failed. Is SQLite Object Cache installed and active?","zenpress"),buttonLabel:(0,c.__)("Setup SQLite Object Cache","zenpress"),helpText:(0,c.__)('Apply recommended SQLite Object Cache settings. Enable "Use APCu" if APCu is available.',"zenpress")}],d=["core","gutenberg","woocommerce","ads-blocker","tools"];function p(e){return null==e||"string"!=typeof e?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}const u=window.wp.components,b=window.ReactJSXRuntime,h=()=>{const{removeNotice:e}=(0,i.useDispatch)(o.store),t=(0,i.useSelect)(e=>e(o.store).getNotices(),[]);return t&&0!==t.length?(0,b.jsx)(u.NoticeList,{notices:t,onRemove:e}):null},g=(0,n.createContext)(),f=({selectedTabId:e,onSelect:t,orientation:s="horizontal",children:r})=>{const[a,i]=(0,n.useState)(),o=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,b.jsx)(g.Provider,{value:{selectedTabId:c,onSelect:s=>{void 0===e&&i(s),t?.(s)},orientation:s,getOrderedTabIds:()=>o.current?Array.from(o.current.querySelectorAll('[role="tab"]')).map(e=>{const t=e.getAttribute("id");return t?t.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:o},children:(0,b.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${s}`,children:r})})};f.TabList=({children:e})=>{const{orientation:t,tabListRef:s}=(0,n.useContext)(g);return(0,b.jsx)("div",{ref:s,className:`zenpress-tabs__list zenpress-tabs__list--${t}`,role:"tablist","aria-orientation":t,children:e})},f.Tab=({tabId:e,title:t,className:s="",children:r})=>{const{selectedTabId:a,onSelect:i,orientation:o,getOrderedTabIds:c}=(0,n.useContext)(g),l=a===e,d=(0,n.useRef)(null);return(0,b.jsx)("button",{ref:d,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${s}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>i(e),onKeyDown:t=>{const s=c();if(!s||0===s.length)return;const n=s.indexOf(e);if(-1===n)return;let r=n;if("vertical"===o?"ArrowDown"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowUp"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1):"ArrowRight"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowLeft"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1),"Home"===t.key?(t.preventDefault(),r=0):"End"===t.key&&(t.preventDefault(),r=s.length-1)," "===t.key||"Enter"===t.key)return t.preventDefault(),void i(e);if(r!==n&&r>=0&&r<s.length){const e=s[r],t=document.getElementById(`zenpress-tab-${e}`);t&&(t.focus(),i(e))}},onFocus:()=>{l||i(e)},children:t||r})},f.TabPanel=({tabId:e,children:t})=>{const{selectedTabId:s}=(0,n.useContext)(g),r=(0,n.useRef)(null),a=s===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,b.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:t}):(0,b.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:t})};const m=({onClick:e,isBusy:t})=>(0,b.jsx)(u.Button,{variant:"primary",onClick:e,isBusy:t,__next40pxDefaultSize:!0,children:(0,c.__)("Save settings","zenpress")});function y({onEnableAll:e,onDisableAll:t,onSave:s,isSaving:n}){return(0,b.jsxs)("div",{className:"zenpress-actions",children:[(0,b.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,b.jsx)(u.Button,{variant:"tertiary",onClick:e,__next40pxDefaultSize:!0,children:(0,c.__)("Enable all actions","zenpress")}),(0,b.jsx)(u.Button,{isDestructive:!0,onClick:t,__next40pxDefaultSize:!0,children:(0,c.__)("Disable all actions","zenpress")})]}),(0,b.jsx)(m,{onClick:s,isBusy:n})]})}function _(){const e="undefined"!=typeof window?window.zenpressIntegrationsActive:null;return!e||"object"!=typeof e||Array.isArray(e)?{}:e}const z=({label:e,value:t,onChange:s,help:r})=>{const a=(0,n.useRef)(null);return(0,n.useLayoutEffect)(()=>((e,t)=>{if(!e)return;const s=s=>{if("Enter"===s.key){const n=e.querySelector('input[type="checkbox"]'),r=e.ownerDocument||document;n&&(r.activeElement===n||e.contains(r.activeElement))&&(s.preventDefault(),s.stopPropagation(),t())}};return e.addEventListener("keydown",s),()=>{e.removeEventListener("keydown",s)}})(a.current,s),[s]),(0,b.jsx)("div",{ref:a,children:(0,b.jsx)(u.ToggleControl,{label:e,checked:t,onChange:s,help:r,__nextHasNoMarginBottom:!0})})};function v({subcategory:e,items:t,onToggle:s}){const n=e.toLowerCase().replace(/\s+/g,"-");return(0,b.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${n}`,children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:p(e)}),t.map(({name:e,data:t})=>(0,b.jsx)(z,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>s(e),help:t.description||""},e))]},e)}function x({integrationKey:e,buttonLabel:t,helpText:s,onClick:n,busyKey:r}){const a=r===e;return(0,b.jsxs)("div",{className:"zenpress-autoconfig-actions",children:[(0,b.jsx)(u.Button,{variant:"secondary",onClick:n,disabled:null!==r,__next40pxDefaultSize:!0,children:a?(0,c.__)("Applying…","zenpress"):t}),(0,b.jsx)("p",{className:"zenpress-autoconfig-help",children:s})]})}function j({adminBarEnabled:e,setAdminBarEnabled:t,autoconfigBusy:s,getAutoconfigHandler:n}){return(0,b.jsxs)("div",{className:"zenpress-subcategory zenpress-subcategory-integrations",children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:(0,c.__)("Integrations","zenpress")}),(0,b.jsx)(z,{label:(0,c.__)("Show ZenPress admin bar button","zenpress"),value:e,onChange:()=>t(!e),help:(0,c.__)('Show a ZenPress item in the admin bar with "Clear all caches" and sub-items for each active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, AutOptimize, or SQLite Object Cache is active. When enabled, those plugins\' own admin bar buttons are hidden.',"zenpress")}),l.filter(e=>_()[e.key]).map(e=>(0,b.jsx)(x,{integrationKey:e.key,buttonLabel:e.buttonLabel,helpText:e.helpText,onClick:n(e.key),busyKey:s},e.key))]})}function w({category:e,groupedSnippets:t,onToggle:s,showIntegrations:n=!1,adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:i,getAutoconfigHandler:o}){const c=Object.keys(t[e]||{}).sort();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{children:p(e)}),c.map(n=>(0,b.jsx)(v,{subcategory:n,items:t[e]?.[n]??[],onToggle:s},n)),n&&Object.values(_()).some(Boolean)&&(0,b.jsx)(j,{adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:i,getAutoconfigHandler:o})]})}function S({icon:e,title:t,description:s,presetId:n,onEnable:r}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("hr",{}),(0,b.jsxs)("h3",{children:[e," ",t]}),(0,b.jsx)("p",{children:s}),(0,b.jsx)(u.Button,{variant:"secondary",onClick:()=>r(n),__next40pxDefaultSize:!0,children:(0,c.__)("Enable","zenpress")})]})}const C=[{id:"corporate-website",icon:"🖼️",title:(0,c.__)("Corporate website","zenpress"),description:(0,c.__)("Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.","zenpress")},{id:"blog",icon:"📰",title:(0,c.__)("Blog","zenpress"),description:(0,c.__)("Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.","zenpress")},{id:"ecommerce",icon:"🛒",title:(0,c.__)("E-commerce","zenpress"),description:(0,c.__)("Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.","zenpress")}];function E({onEnablePreset:e}){return(0,b.jsx)("div",{className:"zenpress-presets",children:(0,b.jsxs)("div",{className:"zenpress-presets-description",children:[(0,b.jsx)("h2",{children:(0,c.__)("Pick configuration preset","zenpress")}),(0,b.jsx)("p",{children:(0,c.__)("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")}),C.map(t=>(0,b.jsx)(S,{icon:t.icon,title:t.title,description:t.description,presetId:t.id,onEnable:e},t.id))]})})}const k=()=>{const{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:u,isSaving:g}=(()=>{const[e,t]=(0,n.useState)({}),[s,r]=(0,n.useState)(!1),[l,d]=(0,n.useState)(!1),{createSuccessNotice:p,createErrorNotice:u}=(0,i.useDispatch)(o.store);return(0,n.useEffect)(()=>{let e=!1;return(async()=>{try{const s=await a()({path:"/wp/v2/settings"});if(e)return;const n=Array.isArray(s?.zenpress_active_snippets)?s.zenpress_active_snippets:[],i=window?.zenpressSnippetsMeta,o=i&&"object"==typeof i&&!Array.isArray(i)?i:{},c={};Object.keys(o).forEach(e=>{c[e]={...o[e],"enable-snippet":n.includes(e)}}),t(c),r(!0===s?.zenpress_admin_bar_enabled)}catch{e||u((0,c.__)("Failed to load settings.","zenpress"))}})(),()=>{e=!0}},[u]),{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:async()=>{d(!0);const t=Object.keys(e).filter(t=>e[t]?.["enable-snippet"]);try{await a()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:t,zenpress_admin_bar_enabled:s}}),p((0,c.__)("Settings saved.","zenpress"))}catch{u((0,c.__)("Failed to save settings.","zenpress"))}finally{d(!1)}},isSaving:l}})(),{autoconfigBusy:m,getHandler:_}=function(){const[e,t]=(0,n.useState)(null),{createSuccessNotice:s,createErrorNotice:r}=(0,i.useDispatch)(o.store),c=async(e,n,i,o)=>{if("string"==typeof n&&n.startsWith("/")){t(e);try{const e=await a()({path:n,method:"POST"});s(e?.message||i)}catch{r(o)}finally{t(null)}}else r(o)};return{autoconfigBusy:e,runAutoconfig:c,getHandler:e=>{const t=l.find(t=>t.key===e);return t?()=>c(t.key,t.path,t.successMessage,t.errorMessage):()=>{}}}}(),[z,v]=(0,n.useState)(),{grouped:x,sortedCategories:j}=(0,n.useMemo)(()=>function(e){const t={};if(!e||"object"!=typeof e||Array.isArray(e))return{grouped:t,sortedCategories:[]};Object.keys(e).forEach(s=>{const n=e[s],r=(n?.category||(0,c.__)("Uncategorized","zenpress")).toLowerCase(),a=(n?.subcategory||(0,c.__)("uncategorized","zenpress")).toLowerCase();t[r]||(t[r]={}),t[r][a]||(t[r][a]=[]),t[r][a].push({name:s,data:n})});const s=Object.keys(t).sort((e,t)=>{const s=d.indexOf(e.toLowerCase()),n=d.indexOf(t.toLowerCase());return-1!==s&&-1!==n?s-n:-1!==s?-1:-1!==n?1:e.localeCompare(t,void 0,{sensitivity:"base"})});return{grouped:t,sortedCategories:s}}(e),[e]),S=e=>{t(t=>({...t,[e]:{...t[e],"enable-snippet":!t[e]?.["enable-snippet"]}}))};return(0,n.useEffect)(()=>{!z&&j.length>0&&v(j[0])},[z,j]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),g||u())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u,g]),(0,b.jsxs)("article",{className:"zenpress-row",children:[(0,b.jsxs)("section",{className:"zenpress-main",children:[(0,b.jsx)("div",{className:"zenpress-notices",children:(0,b.jsx)(h,{})}),(0,b.jsxs)("div",{className:"zenpress-panel",children:[(0,b.jsxs)(f,{orientation:"vertical",selectedTabId:z,onSelect:v,children:[(0,b.jsx)(f.TabList,{children:j.map(e=>{const t=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,b.jsx)(f.Tab,{tabId:e,title:p(e),className:t,children:p(e)},e)})}),j.map(e=>(0,b.jsx)(f.TabPanel,{tabId:e,children:(0,b.jsx)(w,{category:e,groupedSnippets:x,onToggle:S,showIntegrations:"tools"===e,adminBarEnabled:s,setAdminBarEnabled:r,autoconfigBusy:m,getAutoconfigHandler:_})},e))]}),(0,b.jsx)(y,{onEnableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!0}}),t})},onDisableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!1}}),t})},onSave:u,isSaving:g})]})]}),(0,b.jsx)("aside",{className:"zenpress-sidebar",children:(0,b.jsx)(E,{onEnablePreset:e=>{t(t=>{const s={};return Object.entries(t).forEach(([t,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);s[t]={...n,"enable-snippet":r}}),s})}})})]})};s()(()=>{const e=document.getElementById("zenpress-settings");e&&e instanceof HTMLElement&&(0,n.createRoot)(e).render((0,b.jsx)(k,{}))})})();1 (()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var s=e.n(t);const n=window.wp.element,r=window.wp.apiFetch;var a=e.n(r);const o=window.wp.data,i=window.wp.notices,c=window.wp.i18n,l=[{key:"autoptimize",path:"/zenpress/v1/autoconfig/autoptimize",successMessage:(0,c.__)("Autoptimize configured.","zenpress"),errorMessage:(0,c.__)("Autoptimize setup failed. Is Autoptimize installed and active?","zenpress"),buttonLabel:(0,c.__)("Set up Autoptimize","zenpress"),helpText:(0,c.__)("Apply recommended settings: minify JS and CSS, combine CSS, static file caching, 404 fallbacks.","zenpress")},{key:"cache_enabler",path:"/zenpress/v1/autoconfig/cache-enabler",successMessage:(0,c.__)("Cache Enabler configured.","zenpress"),errorMessage:(0,c.__)("Cache Enabler setup failed. Is Cache Enabler installed and active?","zenpress"),buttonLabel:(0,c.__)("Set up Cache Enabler","zenpress"),helpText:(0,c.__)("Apply recommended settings: clear cache on content changes, WebP, compression, minify HTML.","zenpress")},{key:"sqlite_object_cache",path:"/zenpress/v1/autoconfig/sqlite-object-cache",successMessage:(0,c.__)("SQLite Object Cache configured.","zenpress"),errorMessage:(0,c.__)("SQLite Object Cache setup failed. Is it installed and active?","zenpress"),buttonLabel:(0,c.__)("Set up SQLite Object Cache","zenpress"),helpText:(0,c.__)('Apply recommended settings. Enable "Use APCu" in the plugin if available.',"zenpress")}],p=["core","gutenberg","woocommerce","ads-blocker","tools"];function d(e){return null==e||"string"!=typeof e?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}const u=window.wp.components,b=window.ReactJSXRuntime,h=()=>{const{removeNotice:e}=(0,o.useDispatch)(i.store),t=(0,o.useSelect)(e=>e(i.store).getNotices(),[]);return t&&0!==t.length?(0,b.jsx)(u.NoticeList,{notices:t,onRemove:e}):null},g=(0,n.createContext)(),f=({selectedTabId:e,onSelect:t,orientation:s="horizontal",children:r})=>{const[a,o]=(0,n.useState)(),i=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,b.jsx)(g.Provider,{value:{selectedTabId:c,onSelect:s=>{void 0===e&&o(s),t?.(s)},orientation:s,getOrderedTabIds:()=>i.current?Array.from(i.current.querySelectorAll('[role="tab"]')).map(e=>{const t=e.getAttribute("id");return t?t.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:i},children:(0,b.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${s}`,children:r})})};f.TabList=({children:e})=>{const{orientation:t,tabListRef:s}=(0,n.useContext)(g);return(0,b.jsx)("div",{ref:s,className:`zenpress-tabs__list zenpress-tabs__list--${t}`,role:"tablist","aria-orientation":t,children:e})},f.Tab=({tabId:e,title:t,className:s="",children:r})=>{const{selectedTabId:a,onSelect:o,orientation:i,getOrderedTabIds:c}=(0,n.useContext)(g),l=a===e,p=(0,n.useRef)(null);return(0,b.jsx)("button",{ref:p,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${s}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>o(e),onKeyDown:t=>{const s=c();if(!s||0===s.length)return;const n=s.indexOf(e);if(-1===n)return;let r=n;if("vertical"===i?"ArrowDown"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowUp"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1):"ArrowRight"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowLeft"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1),"Home"===t.key?(t.preventDefault(),r=0):"End"===t.key&&(t.preventDefault(),r=s.length-1)," "===t.key||"Enter"===t.key)return t.preventDefault(),void o(e);if(r!==n&&r>=0&&r<s.length){const e=s[r],t=document.getElementById(`zenpress-tab-${e}`);t&&(t.focus(),o(e))}},onFocus:()=>{l||o(e)},children:t||r})},f.TabPanel=({tabId:e,children:t})=>{const{selectedTabId:s}=(0,n.useContext)(g),r=(0,n.useRef)(null),a=s===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,b.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:t}):(0,b.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:t})};const m=({onClick:e,isBusy:t})=>(0,b.jsx)(u.Button,{variant:"primary",onClick:e,isBusy:t,__next40pxDefaultSize:!0,children:(0,c.__)("Save","zenpress")});function y({onEnableAll:e,onDisableAll:t,onSave:s,isSaving:n}){return(0,b.jsxs)("div",{className:"zenpress-actions",children:[(0,b.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,b.jsx)(u.Button,{variant:"tertiary",onClick:e,__next40pxDefaultSize:!0,children:(0,c.__)("Enable all","zenpress")}),(0,b.jsx)(u.Button,{isDestructive:!0,onClick:t,__next40pxDefaultSize:!0,children:(0,c.__)("Disable all","zenpress")})]}),(0,b.jsx)(m,{onClick:s,isBusy:n})]})}function _(){const e="undefined"!=typeof window?window.zenpressIntegrationsActive:null;return!e||"object"!=typeof e||Array.isArray(e)?{}:e}const z=({label:e,value:t,onChange:s,help:r})=>{const a=(0,n.useRef)(null);return(0,n.useLayoutEffect)(()=>((e,t)=>{if(!e)return;const s=s=>{if("Enter"===s.key){const n=e.querySelector('input[type="checkbox"]'),r=e.ownerDocument||document;n&&(r.activeElement===n||e.contains(r.activeElement))&&(s.preventDefault(),s.stopPropagation(),t())}};return e.addEventListener("keydown",s),()=>{e.removeEventListener("keydown",s)}})(a.current,s),[s]),(0,b.jsx)("div",{ref:a,children:(0,b.jsx)(u.ToggleControl,{label:e,checked:t,onChange:s,help:r,__nextHasNoMarginBottom:!0})})};function v({subcategory:e,items:t,onToggle:s}){const n=e.toLowerCase().replace(/\s+/g,"-");return(0,b.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${n}`,children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:d(e)}),t.map(({name:e,data:t})=>(0,b.jsx)(z,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>s(e),help:t.description||""},e))]},e)}function x({integrationKey:e,buttonLabel:t,helpText:s,onClick:n,busyKey:r}){const a=r===e;return(0,b.jsxs)("div",{className:"zenpress-autoconfig-actions",children:[(0,b.jsx)(u.Button,{variant:"secondary",onClick:n,disabled:null!==r,__next40pxDefaultSize:!0,children:a?(0,c.__)("Applying…","zenpress"):t}),(0,b.jsx)("p",{className:"zenpress-autoconfig-help",children:s})]})}function j({adminBarEnabled:e,setAdminBarEnabled:t,autoconfigBusy:s,getAutoconfigHandler:n}){return(0,b.jsxs)("div",{className:"zenpress-subcategory zenpress-subcategory-integrations",children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:(0,c.__)("Integrations","zenpress")}),(0,b.jsx)(z,{label:(0,c.__)("Show cache actions in admin bar","zenpress"),value:e,onChange:()=>t(!e),help:(0,c.__)('Adds a ZenPress menu to the admin bar with "Clear all caches" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins\' own admin bar buttons.',"zenpress")}),l.filter(e=>_()[e.key]).map(e=>(0,b.jsx)(x,{integrationKey:e.key,buttonLabel:e.buttonLabel,helpText:e.helpText,onClick:n(e.key),busyKey:s},e.key))]})}function w({category:e,groupedSnippets:t,onToggle:s,showIntegrations:n=!1,adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:o,getAutoconfigHandler:i}){const c=Object.keys(t[e]||{}).sort();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{children:d(e)}),c.map(n=>(0,b.jsx)(v,{subcategory:n,items:t[e]?.[n]??[],onToggle:s},n)),n&&Object.values(_()).some(Boolean)&&(0,b.jsx)(j,{adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:o,getAutoconfigHandler:i})]})}function S({icon:e,title:t,description:s,presetId:n,onEnable:r}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("hr",{}),(0,b.jsxs)("h3",{children:[e," ",t]}),(0,b.jsx)("p",{children:s}),(0,b.jsx)(u.Button,{variant:"secondary",onClick:()=>r(n),__next40pxDefaultSize:!0,children:(0,c.__)("Apply preset","zenpress")})]})}const E=[{id:"corporate-website",icon:"🖼️",title:(0,c.__)("Corporate website","zenpress"),description:(0,c.__)("For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives.","zenpress")},{id:"blog",icon:"📰",title:(0,c.__)("Blog","zenpress"),description:(0,c.__)("For content-focused blogs. Keeps RSS and other blog features while improving performance and security.","zenpress")},{id:"ecommerce",icon:"🛒",title:(0,c.__)("E-commerce","zenpress"),description:(0,c.__)("For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout.","zenpress")}];function A({onEnablePreset:e}){return(0,b.jsx)("div",{className:"zenpress-presets",children:(0,b.jsxs)("div",{className:"zenpress-presets-description",children:[(0,b.jsx)("h2",{children:(0,c.__)("Choose a preset","zenpress")}),(0,b.jsx)("p",{children:(0,c.__)("Not sure what to enable? Choose a preset that matches your site. Each preset turns on a set of features for that type of site.","zenpress")}),E.map(t=>(0,b.jsx)(S,{icon:t.icon,title:t.title,description:t.description,presetId:t.id,onEnable:e},t.id))]})})}const C=()=>{const{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:u,isSaving:g}=(()=>{const[e,t]=(0,n.useState)({}),[s,r]=(0,n.useState)(!1),[l,p]=(0,n.useState)(!1),{createSuccessNotice:d,createErrorNotice:u}=(0,o.useDispatch)(i.store);return(0,n.useEffect)(()=>{let e=!1;return(async()=>{try{const s=await a()({path:"/wp/v2/settings"});if(e)return;const n=Array.isArray(s?.zenpress_active_snippets)?s.zenpress_active_snippets:[],o=window?.zenpressSnippetsMeta,i=o&&"object"==typeof o&&!Array.isArray(o)?o:{},c={};Object.keys(i).forEach(e=>{c[e]={...i[e],"enable-snippet":n.includes(e)}}),t(c),r(!0===s?.zenpress_admin_bar_enabled)}catch{e||u((0,c.__)("Settings could not be loaded. Refresh the page.","zenpress"))}})(),()=>{e=!0}},[u]),{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:async()=>{p(!0);const t=Object.keys(e).filter(t=>e[t]?.["enable-snippet"]);try{await a()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:t,zenpress_admin_bar_enabled:s}}),d((0,c.__)("Settings saved.","zenpress"))}catch{u((0,c.__)("Settings could not be saved. Try again.","zenpress"))}finally{p(!1)}},isSaving:l}})(),{autoconfigBusy:m,getHandler:_}=function(){const[e,t]=(0,n.useState)(null),{createSuccessNotice:s,createErrorNotice:r}=(0,o.useDispatch)(i.store),c=async(e,n,o,i)=>{if("string"==typeof n&&n.startsWith("/")){t(e);try{const e=await a()({path:n,method:"POST"});s(e?.message||o)}catch{r(i)}finally{t(null)}}else r(i)};return{autoconfigBusy:e,runAutoconfig:c,getHandler:e=>{const t=l.find(t=>t.key===e);return t?()=>c(t.key,t.path,t.successMessage,t.errorMessage):()=>{}}}}(),[z,v]=(0,n.useState)(),{grouped:x,sortedCategories:j}=(0,n.useMemo)(()=>function(e){const t={};if(!e||"object"!=typeof e||Array.isArray(e))return{grouped:t,sortedCategories:[]};Object.keys(e).forEach(s=>{const n=e[s],r=(n?.category||(0,c.__)("Uncategorized","zenpress")).toLowerCase(),a=(n?.subcategory||(0,c.__)("Uncategorized","zenpress")).toLowerCase();t[r]||(t[r]={}),t[r][a]||(t[r][a]=[]),t[r][a].push({name:s,data:n})});const s=Object.keys(t).sort((e,t)=>{const s=p.indexOf(e.toLowerCase()),n=p.indexOf(t.toLowerCase());return-1!==s&&-1!==n?s-n:-1!==s?-1:-1!==n?1:e.localeCompare(t,void 0,{sensitivity:"base"})});return{grouped:t,sortedCategories:s}}(e),[e]),S=e=>{t(t=>({...t,[e]:{...t[e],"enable-snippet":!t[e]?.["enable-snippet"]}}))};return(0,n.useEffect)(()=>{!z&&j.length>0&&v(j[0])},[z,j]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),g||u())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u,g]),(0,b.jsxs)("article",{className:"zenpress-row",children:[(0,b.jsxs)("section",{className:"zenpress-main",children:[(0,b.jsx)("div",{className:"zenpress-notices",children:(0,b.jsx)(h,{})}),(0,b.jsxs)("div",{className:"zenpress-panel",children:[(0,b.jsxs)(f,{orientation:"vertical",selectedTabId:z,onSelect:v,children:[(0,b.jsx)(f.TabList,{children:j.map(e=>{const t=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,b.jsx)(f.Tab,{tabId:e,title:d(e),className:t,children:d(e)},e)})}),j.map(e=>(0,b.jsx)(f.TabPanel,{tabId:e,children:(0,b.jsx)(w,{category:e,groupedSnippets:x,onToggle:S,showIntegrations:"tools"===e,adminBarEnabled:s,setAdminBarEnabled:r,autoconfigBusy:m,getAutoconfigHandler:_})},e))]}),(0,b.jsx)(y,{onEnableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!0}}),t})},onDisableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!1}}),t})},onSave:u,isSaving:g})]})]}),(0,b.jsx)("aside",{className:"zenpress-sidebar",children:(0,b.jsx)(A,{onEnablePreset:e=>{t(t=>{const s={};return Object.entries(t).forEach(([t,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);s[t]={...n,"enable-snippet":r}}),s})}})})]})};s()(()=>{const e=document.getElementById("zenpress-settings");e&&e instanceof HTMLElement&&(0,n.createRoot)(e).render((0,b.jsx)(C,{}))})})(); -
zenpress/tags/2.2.5/assets/src/js/components/BulkSnippetActions.js
r3452689 r3470504 27 27 __next40pxDefaultSize 28 28 > 29 {__('Enable all actions', 'zenpress')}29 {__('Enable all', 'zenpress')} 30 30 </Button> 31 31 <Button … … 34 34 __next40pxDefaultSize 35 35 > 36 {__('Disable all actions', 'zenpress')}36 {__('Disable all', 'zenpress')} 37 37 </Button> 38 38 </div> -
zenpress/tags/2.2.5/assets/src/js/components/IntegrationsBlock.js
r3452689 r3470504 26 26 <h3>{__('Integrations', 'zenpress')}</h3> 27 27 <SnippetToggleControl 28 label={__('Show ZenPress admin bar button', 'zenpress')}28 label={__('Show cache actions in admin bar', 'zenpress')} 29 29 value={adminBarEnabled} 30 30 onChange={() => setAdminBarEnabled(!adminBarEnabled)} 31 31 help={__( 32 ' Show a ZenPress item in the admin bar with "Clear all caches" and sub-items for each active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, AutOptimize, or SQLite Object Cache is active. When enabled, those plugins\' own admin bar buttons are hidden.',32 'Adds a ZenPress menu to the admin bar with "Clear all caches" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins\' own admin bar buttons.', 33 33 'zenpress' 34 34 )} -
zenpress/tags/2.2.5/assets/src/js/components/PresetCard.js
r3452689 r3470504 26 26 __next40pxDefaultSize 27 27 > 28 {__(' Enable', 'zenpress')}28 {__('Apply preset', 'zenpress')} 29 29 </Button> 30 30 </> -
zenpress/tags/2.2.5/assets/src/js/components/PresetsSidebar.js
r3452689 r3470504 8 8 title: __('Corporate website', 'zenpress'), 9 9 description: __( 10 ' Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feedsand author archives.',10 'For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives.', 11 11 'zenpress' 12 12 ), … … 17 17 title: __('Blog', 'zenpress'), 18 18 description: __( 19 ' Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.',19 'For content-focused blogs. Keeps RSS and other blog features while improving performance and security.', 20 20 'zenpress' 21 21 ), … … 26 26 title: __('E-commerce', 'zenpress'), 27 27 description: __( 28 ' Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specificoptimizations for faster checkout.',28 'For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout.', 29 29 'zenpress' 30 30 ), … … 43 43 <div className="zenpress-presets"> 44 44 <div className="zenpress-presets-description"> 45 <h2>{__(' Pick configurationpreset', 'zenpress')}</h2>45 <h2>{__('Choose a preset', 'zenpress')}</h2> 46 46 <p> 47 47 {__( 48 "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.",48 'Not sure what to enable? Choose a preset that matches your site. Each preset turns on a set of features for that type of site.', 49 49 'zenpress' 50 50 )} -
zenpress/tags/2.2.5/assets/src/js/components/SaveButton.js
r3448585 r3470504 18 18 __next40pxDefaultSize 19 19 > 20 {__('Save settings', 'zenpress')}20 {__('Save', 'zenpress')} 21 21 </Button> 22 22 ); -
zenpress/tags/2.2.5/assets/src/js/config/integrations.js
r3452689 r3470504 9 9 key: 'autoptimize', 10 10 path: '/zenpress/v1/autoconfig/autoptimize', 11 successMessage: __('Autoptimize has beenconfigured.', 'zenpress'),11 successMessage: __('Autoptimize configured.', 'zenpress'), 12 12 errorMessage: __( 13 'Autoptimize autoconfigfailed. Is Autoptimize installed and active?',13 'Autoptimize setup failed. Is Autoptimize installed and active?', 14 14 'zenpress' 15 15 ), 16 buttonLabel: __('Set up Autoptimize', 'zenpress'),16 buttonLabel: __('Set up Autoptimize', 'zenpress'), 17 17 helpText: __( 18 'Apply recommended Autoptimize settings: Minify JS & CSS, aggregate CSS, static files, 404 fallbacks.',18 'Apply recommended settings: minify JS and CSS, combine CSS, static file caching, 404 fallbacks.', 19 19 'zenpress' 20 20 ), … … 23 23 key: 'cache_enabler', 24 24 path: '/zenpress/v1/autoconfig/cache-enabler', 25 successMessage: __('Cache Enabler has beenconfigured.', 'zenpress'),25 successMessage: __('Cache Enabler configured.', 'zenpress'), 26 26 errorMessage: __( 27 'Cache Enabler autoconfigfailed. Is Cache Enabler installed and active?',27 'Cache Enabler setup failed. Is Cache Enabler installed and active?', 28 28 'zenpress' 29 29 ), 30 buttonLabel: __('Set up Cache Enabler', 'zenpress'),30 buttonLabel: __('Set up Cache Enabler', 'zenpress'), 31 31 helpText: __( 32 'Apply recommended Cache Enabler settings: Clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS).',32 'Apply recommended settings: clear cache on content changes, WebP, compression, minify HTML.', 33 33 'zenpress' 34 34 ), … … 37 37 key: 'sqlite_object_cache', 38 38 path: '/zenpress/v1/autoconfig/sqlite-object-cache', 39 successMessage: __( 40 'SQLite Object Cache has been configured.', 39 successMessage: __('SQLite Object Cache configured.', 'zenpress'), 40 errorMessage: __( 41 'SQLite Object Cache setup failed. Is it installed and active?', 41 42 'zenpress' 42 43 ), 43 errorMessage: __( 44 'SQLite Object Cache autoconfig failed. Is SQLite Object Cache installed and active?', 45 'zenpress' 46 ), 47 buttonLabel: __('Setup SQLite Object Cache', 'zenpress'), 44 buttonLabel: __('Set up SQLite Object Cache', 'zenpress'), 48 45 helpText: __( 49 'Apply recommended SQLite Object Cache settings. Enable "Use APCu" if APCu isavailable.',46 'Apply recommended settings. Enable "Use APCu" in the plugin if available.', 50 47 'zenpress' 51 48 ), -
zenpress/tags/2.2.5/assets/src/js/hooks/useSettings.js
r3452689 r3470504 56 56 if (!cancelled) { 57 57 createErrorNotice( 58 __('Failed to load settings.', 'zenpress') 58 __( 59 'Settings could not be loaded. Refresh the page.', 60 'zenpress' 61 ) 59 62 ); 60 63 } … … 85 88 createSuccessNotice(__('Settings saved.', 'zenpress')); 86 89 } catch { 87 createErrorNotice(__('Failed to save settings.', 'zenpress')); 90 createErrorNotice( 91 __('Settings could not be saved. Try again.', 'zenpress') 92 ); 88 93 } finally { 89 94 setIsSaving(false); -
zenpress/tags/2.2.5/assets/src/js/utils/snippets.js
r3452689 r3470504 44 44 ).toLowerCase(); 45 45 const subcategory = ( 46 snippet?.subcategory || __(' uncategorized', 'zenpress')46 snippet?.subcategory || __('Uncategorized', 'zenpress') 47 47 ).toLowerCase(); 48 48 -
zenpress/tags/2.2.5/inc/admin/links.php
r3452689 r3470504 17 17 '<a href="%s" aria-label="%s">%s</a>', 18 18 esc_url($url), 19 esc_attr__('Go to ZenPress settings page', 'zenpress'),19 esc_attr__('Go to ZenPress settings', 'zenpress'), 20 20 esc_html__('Settings', 'zenpress') 21 21 ); … … 38 38 '<a href="%s" target="_blank" rel="noopener noreferrer" aria-label="%s">%s</a>', 39 39 esc_url('https://wordpress.org/plugins/zenpress/#developers'), 40 esc_attr__('View ZenPress changelog on WordPress.org (opens in anew tab)', 'zenpress'),40 esc_attr__('View ZenPress changelog on WordPress.org (opens in new tab)', 'zenpress'), 41 41 esc_html__('Changelog', 'zenpress') 42 42 ), … … 44 44 '<a href="%s" target="_blank" rel="noopener noreferrer" aria-label="%s">%s</a>', 45 45 esc_url('https://holdmywp.com/zenpress/'), 46 esc_attr__('Read ZenPress documentation (opens in anew tab)', 'zenpress'),47 esc_html__('Doc s', 'zenpress')46 esc_attr__('Read ZenPress documentation (opens in new tab)', 'zenpress'), 47 esc_html__('Documentation', 'zenpress') 48 48 ), 49 49 sprintf( 50 50 '<a href="%s" target="_blank" rel="noopener noreferrer" aria-label="%s">%s</a>', 51 51 esc_url('https://buymeacoffee.com/quentinld'), 52 esc_attr__('Support ZenPress by buying a coffee (opens in anew tab)', 'zenpress'),53 esc_html__('Support ☕', 'zenpress')52 esc_attr__('Support ZenPress: Buy me a coffee (opens in new tab)', 'zenpress'), 53 esc_html__('Support', 'zenpress') 54 54 ) 55 55 ]; -
zenpress/tags/2.2.5/inc/admin/menu.php
r3451904 r3470504 11 11 function zenpress_add_option_page(): void { 12 12 add_options_page( 13 __(' ZenPress options', 'zenpress'),13 __('Settings', 'zenpress'), 14 14 __('ZenPress', 'zenpress'), 15 15 'manage_options', … … 36 36 target="_blank" 37 37 rel="noopener noreferrer" 38 aria-label="<?php echo esc_attr__('View ZenPress changelog on WordPress.org (opens in anew tab)', 'zenpress'); ?>">39 <?php echo esc_html__('What\'s new ?', 'zenpress'); ?>38 aria-label="<?php echo esc_attr__('View ZenPress changelog on WordPress.org (opens in new tab)', 'zenpress'); ?>"> 39 <?php echo esc_html__('What\'s new', 'zenpress'); ?> 40 40 </a> 41 41 </p> … … 46 46 target="_blank" 47 47 rel="noopener noreferrer" 48 aria-label="<?php echo esc_attr__('Read the ZenPress documentation (opens in anew tab)', 'zenpress'); ?>">48 aria-label="<?php echo esc_attr__('Read ZenPress documentation (opens in new tab)', 'zenpress'); ?>"> 49 49 <?php echo esc_html__('Documentation', 'zenpress'); ?> 50 50 </a> … … 52 52 target="_blank" 53 53 rel="noopener noreferrer" 54 aria-label="<?php echo esc_attr__('Leave a review for ZenPress on WordPress.org (opens in anew tab)', 'zenpress'); ?>">55 <?php echo esc_html__('Leave a review (helps a lot)', 'zenpress'); ?>54 aria-label="<?php echo esc_attr__('Leave a review for ZenPress on WordPress.org (opens in new tab)', 'zenpress'); ?>"> 55 <?php echo esc_html__('Leave a review', 'zenpress'); ?> 56 56 </a> 57 57 <a href="https://buymeacoffee.com/quentinld" … … 59 59 rel="noopener noreferrer" 60 60 class="components-button is-next-40px-default-size is-tertiary" 61 aria-label="<?php echo esc_attr__('Support development: Buy me a coffee (opens in anew tab)', 'zenpress'); ?>">61 aria-label="<?php echo esc_attr__('Support development: Buy me a coffee (opens in new tab)', 'zenpress'); ?>"> 62 62 <?php echo esc_html__('Buy me a coffee', 'zenpress'); ?> <span aria-hidden="true">☕</span> 63 63 </a> … … 68 68 <div class="zenpress-loading-body"> 69 69 <p class="zenpress-loading-text"> 70 <?php echo esc_html__('Loading your ZenPresssettings…', 'zenpress'); ?>70 <?php echo esc_html__('Loading settings…', 'zenpress'); ?> 71 71 </p> 72 72 </div> … … 75 75 <footer class="zenpress-footer"> 76 76 <div class="zenpress-footer-title"> 77 <p> 78 <?php echo esc_html__('Made ', 'zenpress'); ?> 79 <span aria-hidden="true"> x ❤️ </span> 80 <?php echo esc_html__(' by Quentin Le Duff - Your WordPress Partner', 'zenpress'); ?> 81 </p> 77 <?php 78 echo wp_kses_post(sprintf( 79 /* translators: 1: decorative heart emoji, 2: author name */ 80 __('Made with %1$s by %2$s', 'zenpress'), 81 '<span aria-hidden="true">❤️</span>', 82 'Quentin Le Duff' 83 )); 84 ?> 82 85 </div> 83 86 <div class="zenpress-footer-navigation"> … … 85 88 target="_blank" 86 89 rel="noopener noreferrer" 87 aria-label="<?php echo esc_attr__('Visit e the developper website', 'zenpress'); ?>">88 <?php echo esc_html__(' My place', 'zenpress'); ?>90 aria-label="<?php echo esc_attr__('Visit the developer website (opens in new tab)', 'zenpress'); ?>"> 91 <?php echo esc_html__('Developer website', 'zenpress'); ?> 89 92 </a> 90 93 <a href="https://github.com/quentin-ld/zenpress" 91 94 target="_blank" 92 95 rel="noopener noreferrer" 93 aria-label="<?php echo esc_attr__(' Review the code on Github', 'zenpress'); ?>">94 <?php echo esc_html__(' ZenPress code repository', 'zenpress'); ?>96 aria-label="<?php echo esc_attr__('View ZenPress source code on GitHub (opens in new tab)', 'zenpress'); ?>"> 97 <?php echo esc_html__('Source code', 'zenpress'); ?> 95 98 </a> 96 99 </div> -
zenpress/tags/2.2.5/inc/classes/integrations.php
r3452689 r3470504 134 134 return self::run_rest_autoconfig( 135 135 [ZenPress_Autoptimize::class, 'autoconfig'], 136 __('Autoptimize has beenconfigured.', 'zenpress'),136 __('Autoptimize configured.', 'zenpress'), 137 137 __('Autoptimize configuration failed.', 'zenpress') 138 138 ); … … 145 145 return self::run_rest_autoconfig( 146 146 [ZenPress_Cache_Enabler::class, 'autoconfig'], 147 __('Cache Enabler has beenconfigured.', 'zenpress'),147 __('Cache Enabler configured.', 'zenpress'), 148 148 __('Cache Enabler configuration failed.', 'zenpress') 149 149 ); … … 156 156 return self::run_rest_autoconfig( 157 157 [ZenPress_Sqlite_Object_Cache::class, 'autoconfig'], 158 __('SQLite Object Cache has beenconfigured.', 'zenpress'),158 __('SQLite Object Cache configured.', 'zenpress'), 159 159 __('SQLite Object Cache configuration failed.', 'zenpress') 160 160 ); … … 204 204 'href' => wp_nonce_url(add_query_arg('clear', 'all', $base_url), 'zenpress_clear_caches'), 205 205 'meta' => [ 206 'title' => __('Clear all caches (page cache, static assets, object cache).', 'zenpress'),206 'title' => __('Clear page cache, static assets cache, and object cache.', 'zenpress'), 207 207 ], 208 208 ]); … … 212 212 'id' => 'zenpress-clear-cache-enabler', 213 213 'parent' => 'zenpress', 214 'title' => __('Clear page s caches', 'zenpress'),214 'title' => __('Clear page cache', 'zenpress'), 215 215 'href' => wp_nonce_url(add_query_arg('clear', 'cache_enabler', $base_url), 'zenpress_clear_caches'), 216 216 'meta' => [ … … 224 224 'id' => 'zenpress-clear-autoptimize', 225 225 'parent' => 'zenpress', 226 'title' => __('Clear static assets cache s(CSS/JS)', 'zenpress'),226 'title' => __('Clear static assets cache (CSS/JS)', 'zenpress'), 227 227 'href' => wp_nonce_url(add_query_arg('clear', 'autoptimize', $base_url), 'zenpress_clear_caches'), 228 228 'meta' => [ … … 263 263 private static function get_single_cleared_message(string $slug): string { 264 264 /* translators: 1: cache type (e.g. Page cache), 2: plugin name (e.g. Cache Enabler) */ 265 $format = __('%1$s ( Managed by %2$s) has beencleared successfully.', 'zenpress');265 $format = __('%1$s (managed by %2$s) cleared successfully.', 'zenpress'); 266 266 switch ($slug) { 267 267 case 'cache_enabler': … … 315 315 return sprintf( 316 316 /* translators: %s: cache type (e.g. Page cache) */ 317 __('%s has beencleared successfully.', 'zenpress'),317 __('%s cleared successfully.', 'zenpress'), 318 318 $types[0] 319 319 ); … … 324 324 return sprintf( 325 325 /* translators: %s: comma-separated list of cache types */ 326 __('%s have beencleared successfully.', 'zenpress'),326 __('%s cleared successfully.', 'zenpress'), 327 327 $list 328 328 ); … … 351 351 public static function ajax_clear_caches(): void { 352 352 if (!current_user_can('manage_options')) { 353 wp_die(esc_html__(' Forbidden', 'zenpress'), '', ['response' => 403]);353 wp_die(esc_html__('You don\'t have permission to do that.', 'zenpress'), '', ['response' => 403]); 354 354 } 355 355 $nonce = isset($_REQUEST['_wpnonce']) ? sanitize_text_field(wp_unslash((string) $_REQUEST['_wpnonce'])) : ''; 356 356 if (!wp_verify_nonce($nonce, 'zenpress_clear_caches')) { 357 wp_die(esc_html__(' Forbidden', 'zenpress'), '', ['response' => 403]);357 wp_die(esc_html__('You don\'t have permission to do that.', 'zenpress'), '', ['response' => 403]); 358 358 } 359 359 … … 363 363 do_action('zenpress_caches_clear'); 364 364 } catch (\Throwable $e) { 365 wp_die(esc_html__('C ache clear failed.', 'zenpress'), '', ['response' => 500]);365 wp_die(esc_html__('Clearing cache failed. Try again.', 'zenpress'), '', ['response' => 500]); 366 366 } 367 367 $message = self::get_all_cleared_message(); … … 373 373 } 374 374 } catch (\Throwable $e) { 375 wp_die(esc_html__('C ache clear failed.', 'zenpress'), '', ['response' => 500]);375 wp_die(esc_html__('Clearing cache failed. Try again.', 'zenpress'), '', ['response' => 500]); 376 376 } 377 377 $message = self::get_single_cleared_message($clear); 378 378 } else { 379 wp_die(esc_html__('Invalid request. ', 'zenpress'), '', ['response' => 400]);379 wp_die(esc_html__('Invalid request. Please refresh and try again.', 'zenpress'), '', ['response' => 400]); 380 380 } 381 381 -
zenpress/tags/2.2.5/inc/snippets/functions/block-user-enumeration.php
r3448604 r3470504 9 9 $zenpress_query_string = isset($_SERVER['QUERY_STRING']) ? sanitize_text_field(wp_unslash($_SERVER['QUERY_STRING'])) : ''; 10 10 if (preg_match('/author=([0-9]+)/i', $zenpress_query_string)) { 11 wp_die(esc_html__(' Access denied.', 'zenpress'), '', ['response' => 403]);11 wp_die(esc_html__('You don\'t have permission to view this.', 'zenpress'), '', ['response' => 403]); 12 12 } 13 13 … … 17 17 static function (string|false $redirect, string $request): string|false { 18 18 if (preg_match('/\?author=([0-9]+)(\/*)/i', sanitize_text_field(wp_unslash($request)))) { 19 wp_die(esc_html__(' Access denied.', 'zenpress'), '', ['response' => 403]);19 wp_die(esc_html__('You don\'t have permission to view this.', 'zenpress'), '', ['response' => 403]); 20 20 } 21 21 -
zenpress/tags/2.2.5/inc/snippets/functions/disable-rest-api.php
r3448604 r3470504 54 54 add_filter('rest_authentication_errors', static function (WP_Error|bool|null $access) use ($zenpress_disable_wp_rest_api_allow_access): WP_Error|bool|null { 55 55 if (!is_user_logged_in() && !$zenpress_disable_wp_rest_api_allow_access()) { 56 $message = apply_filters('zenpress_disable_wp_rest_api_error', __(' REST API restricted to authenticated users.', 'zenpress'));56 $message = apply_filters('zenpress_disable_wp_rest_api_error', __('You must be logged in to use this.', 'zenpress')); 57 57 58 58 return new WP_Error('rest_login_required', $message, ['status' => rest_authorization_required_code()]); -
zenpress/tags/2.2.5/inc/snippets/functions/protect-wp-login.php
r3451904 r3470504 7 7 // Remove detailed login errors 8 8 add_filter('login_errors', static function (): string { 9 return __(' Login error.', 'zenpress');9 return __('Something went wrong. Try again.', 'zenpress'); 10 10 }); 11 11 … … 36 36 if (get_transient($blockKey)) { 37 37 wp_die( 38 esc_html__('Too many failed login attempts. Try again later.', 'zenpress'),38 esc_html__('Too many failed attempts. Try again in a few minutes.', 'zenpress'), 39 39 '', 40 40 ['response' => 403] … … 50 50 set_transient($blockKey, true, $BLOCK_DURATION); 51 51 wp_die( 52 esc_html__('Too many failed login attempts. Try again later.', 'zenpress'),52 esc_html__('Too many failed attempts. Try again in a few minutes.', 'zenpress'), 53 53 '', 54 54 ['response' => 403] -
zenpress/tags/2.2.5/inc/snippets/meta/block-user-enumeration.meta.php
r3412245 r3470504 13 13 'title' => __('Block user enumeration', 'zenpress'), 14 14 'description' => __( 15 ' Prevents attackers from guessing WordPress usernames by blocking requests with the `author` parameter in query strings or permalinks. Reduces exposure to brute-force and user-targeted attacks.',15 'Stops visitors from discovering usernames via author URLs. Reduces brute-force risk.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/clean-admin-bar.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Clean up the WordPressadmin bar', 'zenpress'),13 'title' => __('Clean up the admin bar', 'zenpress'), 14 14 'description' => __( 15 15 'Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface.', -
zenpress/tags/2.2.5/inc/snippets/meta/clean-dashboard-items.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Clean up the WordPressDashboard', 'zenpress'),13 'title' => __('Clean up the Dashboard', 'zenpress'), 14 14 'description' => __( 15 'Removes unnecessary and ad widgets from the dashboard. Declutters the admin area and improves usability.',15 'Removes unnecessary and promotional widgets from the Dashboard.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-adjacent-posts.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable adjacent posts link tags', 'zenpress'),13 'title' => __('Disable prev/next post links in head', 'zenpress'), 14 14 'description' => __( 15 15 'Removes rel="prev" and rel="next" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance.', -
zenpress/tags/2.2.5/inc/snippets/meta/disable-application-passwords.meta.php
r3448585 r3470504 13 13 'title' => __('Disable application passwords', 'zenpress'), 14 14 'description' => __( 15 ' Disables WordPress application passwords for all users. Improves security; do not enable if you need API or app-based authentication (e.g. mobile apps, REST clients).',15 'Turns off application passwords for everyone. Turn this off if you use mobile apps or other apps that log in to WordPress.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-author-archives.meta.php
r3412245 r3470504 13 13 'title' => __('Disable author archives', 'zenpress'), 14 14 'description' => __( 15 ' Forces author archive pages to return a 404 error. Prevents user enumeration and hides unnecessary author pages.',15 'Author archive URLs show "Page not found." Helps prevent listing usernames.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-autosave.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable autosave ', 'zenpress'),13 'title' => __('Disable autosave (classic editor)', 'zenpress'), 14 14 'description' => __( 15 15 'Stops the classic editor from autosaving drafts periodically. Reduces database writes and heartbeat traffic. The block editor may still use its own autosave; this targets the legacy post editor.', -
zenpress/tags/2.2.5/inc/snippets/meta/disable-capital-p-dangit.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Disable capital_P_dangit filter', 'zenpress'),13 'title' => __('Disable "WordPress" spelling correction', 'zenpress'), 14 14 'description' => __( 15 ' Removes the filter that forces "Wordpress" to "WordPress" in titles, content, comments, and widget text. Saves a small amount of processing on each page load.',15 'Stops WordPress from changing "Wordpress" to "WordPress" in content. Saves a small amount of work on each page.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-dashicons.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable dashicons', 'zenpress'),13 'title' => __('Disable Dashicons (admin icons)', 'zenpress'), 14 14 'description' => __( 15 ' Prevents WordPress from loading the Dashicons CSS for visitors who are not logged in. Improves frontend performance by reducing unnecessary styles.',15 'Stops Dashicons (admin icons) from loading for visitors. Logged-in users still see them.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-default-pattern-categories.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable default pattern categories in site editor', 'zenpress'),14 'description' => __('Removes default pattern categories from the block pattern inserter in the site editor (e.g. 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 ones. Simplifies the interface; patterns remain accessible.', 'zenpress'),13 'title' => __('Disable default pattern categories in Site Editor', 'zenpress'), 14 'description' => __('Removes default pattern categories from the block inserter. Patterns are still available; the list is simpler.', 'zenpress'), 15 15 'category' => __('gutenberg', 'zenpress'), 16 16 'subcategory' => __('user-interface', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-jquery-migrate.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable jQuery migrate', 'zenpress'),13 'title' => __('Disable jQuery Migrate script', 'zenpress'), 14 14 'description' => __( 15 ' Removes jQuery Migrate from loading on the frontend while keeping it enabled in the admin. Improves frontend performance and reduces legacy overhead.',15 'Loads jQuery Migrate only in the admin, not on the front. Improves front-end performance.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-login-language-selector.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable thelogin language selector', 'zenpress'),13 'title' => __('Disable login language selector', 'zenpress'), 14 14 'description' => __('Removes the language dropdown from the WordPress login page. Simplifies login screen and reduces distractions.', 'zenpress'), 15 15 'category' => __('core', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-password-strength-meter.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Disable Password Strength Meter', 'zenpress'),13 'title' => __('Disable password strength meter', 'zenpress'), 14 14 'description' => __( 15 ' Prevents the password strength meter and zxcvbn scripts from loading on profile, login, and similar pages. Saves roughly 400KB and reduces script parsing. Users will not see the strength indicator when choosing passwords.',15 'Stops the password strength meter from loading on login and profile pages. Saves about 400KB. Users won\'t see how strong their password is.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-pingback-trackback.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable pingback and trackback', 'zenpress'),13 'title' => __('Disable pingbacks and trackbacks', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-rest-api.meta.php
r3448585 r3470504 12 12 13 13 return [ 14 'title' => __(' Disable REST API for visitors not logged into WordPress', 'zenpress'),14 'title' => __('Limit REST API to logged-in users', 'zenpress'), 15 15 'description' => __( 16 ' Restricts the WP REST API to logged-in users only; unauthenticated requests receive an error. Bypass filters (zenpress_disable_wp_rest_api_post_var, zenpress_disable_wp_rest_api_server_var) allow specific integrations (e.g. webhooks); use non-guessable values only.',16 'Only logged-in users can use the REST API. Visitors get an error. Advanced: filters let you allow specific tools; use with care.', 17 17 'zenpress' 18 18 ), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-rss.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable all WordPress feeds (RDF, RSS, RSS2, Atom, andcomments)', 'zenpress'),13 'title' => __('Disable all feeds (RSS, Atom, comments)', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-shortlink.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WordPressshortlink', 'zenpress'),13 'title' => __('Disable shortlink', 'zenpress'), 14 14 'description' => __('Removes shortlink functionality from both the HTML head and HTTP headers. Reduces unnecessary output, improves performance and SEO clarity.', 'zenpress'), 15 15 'category' => __('core', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-wlw-manifest.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable W LWlink', 'zenpress'),14 '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'),13 'title' => __('Disable Windows Live Writer link', 'zenpress'), 14 'description' => __('Removes the old Windows Live Writer link from the page. Safe to disable.', 'zenpress'), 15 15 'category' => __('core', 'zenpress'), 16 16 'subcategory' => __('performance', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WooCommerce cart fragments script', 'zenpress'),14 '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 requirelive cart updates.', 'zenpress'),13 'title' => __('Disable WooCommerce cart fragments', 'zenpress'), 14 'description' => __('Stops the script that updates the cart without reloading the page. Turn off if you don\'t need live cart updates.', 'zenpress'), 15 15 'category' => __('woocommerce', 'zenpress'), 16 16 'subcategory' => __('performance', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WooCommerce scripts and styles on non- WooCommercepages', 'zenpress'),13 'title' => __('Disable WooCommerce scripts and styles on non-shop pages', 'zenpress'), 14 14 '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 15 'category' => __('woocommerce', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable unnecessary Stripe scripts on WooCommercepages', 'zenpress'),13 'title' => __('Disable Stripe scripts on product and cart pages', 'zenpress'), 14 14 '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 15 'category' => __('woocommerce', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/disable-wordpress-default-lazy-loading.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WordPress default lazy loading', 'zenpress'),13 'title' => __('Disable default lazy loading for images', 'zenpress'), 14 14 'description' => __( 15 15 'Stops WordPress from adding loading="lazy" to images and iframes. Use only if you rely on a theme, plugin, or CDN for lazy loading, or if you prefer to load all media immediately.', -
zenpress/tags/2.2.5/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable XML-RPC and removeRSD link', 'zenpress'),13 'title' => __('Disable XML-RPC and RSD link', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/limit-post-revisions.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Limit post revision to 10', 'zenpress'),13 'title' => __('Limit post revisions to 10', 'zenpress'), 14 14 'description' => __( 15 15 'Keeps at most 10 revisions per post (or page). Older revisions are deleted when new ones are created. Reduces database size and improves performance.', -
zenpress/tags/2.2.5/inc/snippets/meta/protect-wp-login.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Protect the wp-login form from brute force attacks', 'zenpress'),14 'description' => __(' Removes detailed login error messages and limits failed login attempts per IP. Blocks further attempts for 5 minutes after 5 failed tries. Mitigates brute-force attacks.', 'zenpress'),13 'title' => __('Protect login from brute force', 'zenpress'), 14 'description' => __('Hides detailed login errors and limits failed attempts per IP. After 5 failed tries, blocks that IP for 5 minutes.', 'zenpress'), 15 15 'category' => __('tools', 'zenpress'), 16 16 'subcategory' => __('security', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Remove WordPress default remoteblock patterns', 'zenpress'),13 'title' => __('Remove WordPress default block patterns', 'zenpress'), 14 14 '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 15 'category' => __('gutenberg', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/remove-help-button.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Remove "Help" button', 'zenpress'),13 'title' => __('Remove Help tab', 'zenpress'), 14 14 'description' => __( 15 'Hides the Help tab and panel on all admin screens. Reduces clutter for users who do not use the in-app help.',15 'Hides the Help tab on all admin screens. Reduces clutter if you don\'t use in-app help.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/remove-rest-api-link.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Remove REST API links ', 'zenpress'),13 'title' => __('Remove REST API links from page source', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/tags/2.2.5/inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Remove "Thanks for using WordPress" infooter', 'zenpress'),13 'title' => __('Remove "Thanks for using WordPress" from footer', 'zenpress'), 14 14 'description' => __( 15 'Removes the "Thank you for creating withWordPress" message from the admin footer.',15 'Removes the "Thanks for using WordPress" message from the admin footer.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/remove-wordpress-logo.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Remove WordPress logo ', 'zenpress'),13 'title' => __('Remove WordPress logo from admin bar', 'zenpress'), 14 14 'description' => __( 15 'Removes the WordPress logo and its dropdownfrom the admin bar.',15 'Removes the WordPress logo and its menu from the admin bar.', 16 16 'zenpress' 17 17 ), -
zenpress/tags/2.2.5/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __(' Separate loading of core block styles', 'zenpress'),13 'title' => __('Load block styles separately', 'zenpress'), 14 14 '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 15 'category' => __('gutenberg', 'zenpress'), -
zenpress/tags/2.2.5/languages/zenpress.pot
r3452689 r3470504 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: ZenPress - Optimize & Secure 2.2.4\n"5 "Project-Id-Version: ZenPress 2.2.5\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/zenpress\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-02- 03T08:48:39+00:00\n"12 "POT-Creation-Date: 2026-02-26T16:25:36+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 17 17 #. Plugin Name of the plugin 18 18 #: zenpress.php 19 msgid "ZenPress - Optimize & Secure" 19 #: inc/admin/menu.php:14 20 #: inc/admin/menu.php:31 21 msgid "ZenPress" 20 22 msgstr "" 21 23 … … 27 29 #. Description of the plugin 28 30 #: zenpress.php 29 msgid " Easily speed up and strengthen your WordPress site in one click: clean out unnecessary features, protect weak points, autoconfigure cache integrations."31 msgid "Speed up and harden your site with a single click: cleans up unused features, protects security gaps, and configures cache integrations automatically." 30 32 msgstr "" 31 33 … … 41 43 42 44 #: inc/admin/links.php:19 43 msgid "Go to ZenPress settings page"45 msgid "Go to ZenPress settings" 44 46 msgstr "" 45 47 46 48 #: inc/admin/links.php:20 49 #: inc/admin/menu.php:13 47 50 msgid "Settings" 48 51 msgstr "" … … 50 53 #: inc/admin/links.php:40 51 54 #: inc/admin/menu.php:38 52 msgid "View ZenPress changelog on WordPress.org (opens in anew tab)"55 msgid "View ZenPress changelog on WordPress.org (opens in new tab)" 53 56 msgstr "" 54 57 … … 58 61 59 62 #: inc/admin/links.php:46 60 msgid "Read ZenPress documentation (opens in a new tab)" 63 #: inc/admin/menu.php:48 64 msgid "Read ZenPress documentation (opens in new tab)" 61 65 msgstr "" 62 66 63 67 #: inc/admin/links.php:47 64 msgid "Docs" 68 #: inc/admin/menu.php:49 69 msgid "Documentation" 65 70 msgstr "" 66 71 67 72 #: inc/admin/links.php:52 68 msgid "Support ZenPress by buying a coffee (opens in anew tab)"73 msgid "Support ZenPress: Buy me a coffee (opens in new tab)" 69 74 msgstr "" 70 75 71 76 #: inc/admin/links.php:53 72 msgid "Support ☕" 73 msgstr "" 74 75 #: inc/admin/menu.php:13 76 msgid "ZenPress options" 77 msgstr "" 78 79 #: inc/admin/menu.php:14 80 #: inc/admin/menu.php:31 81 msgid "ZenPress" 77 msgid "Support" 82 78 msgstr "" 83 79 … … 87 83 88 84 #: inc/admin/menu.php:39 89 msgid "What's new ?" 90 msgstr "" 91 92 #: inc/admin/menu.php:48 93 msgid "Read the ZenPress documentation (opens in a new tab)" 94 msgstr "" 95 96 #: inc/admin/menu.php:49 97 msgid "Documentation" 85 msgid "What's new" 98 86 msgstr "" 99 87 100 88 #: inc/admin/menu.php:54 101 msgid "Leave a review for ZenPress on WordPress.org (opens in anew tab)"89 msgid "Leave a review for ZenPress on WordPress.org (opens in new tab)" 102 90 msgstr "" 103 91 104 92 #: inc/admin/menu.php:55 105 msgid "Leave a review (helps a lot)"93 msgid "Leave a review" 106 94 msgstr "" 107 95 108 96 #: inc/admin/menu.php:61 109 msgid "Support development: Buy me a coffee (opens in anew tab)"97 msgid "Support development: Buy me a coffee (opens in new tab)" 110 98 msgstr "" 111 99 … … 115 103 116 104 #: inc/admin/menu.php:70 117 msgid "Loading your ZenPress settings…" 118 msgstr "" 119 120 #: inc/admin/menu.php:78 121 msgid "Made " 122 msgstr "" 123 105 msgid "Loading settings…" 106 msgstr "" 107 108 #. translators: 1: decorative heart emoji, 2: author name 124 109 #: inc/admin/menu.php:80 125 msgid " by Quentin Le Duff - Your WordPress Partner" 126 msgstr "" 127 128 #: inc/admin/menu.php:87 129 msgid "Visite the developper website" 130 msgstr "" 131 132 #: inc/admin/menu.php:88 133 msgid "My place" 134 msgstr "" 135 136 #: inc/admin/menu.php:93 137 msgid "Review the code on Github" 138 msgstr "" 139 140 #: inc/admin/menu.php:94 141 msgid "ZenPress code repository" 110 #, php-format 111 msgid "Made with %1$s by %2$s" 112 msgstr "" 113 114 #: inc/admin/menu.php:90 115 msgid "Visit the developer website (opens in new tab)" 116 msgstr "" 117 118 #: inc/admin/menu.php:91 119 msgid "Developer website" 120 msgstr "" 121 122 #: inc/admin/menu.php:96 123 msgid "View ZenPress source code on GitHub (opens in new tab)" 124 msgstr "" 125 126 #: inc/admin/menu.php:97 127 msgid "Source code" 142 128 msgstr "" 143 129 144 130 #: inc/classes/integrations.php:136 145 #: assets/build/index.js:1146 131 #: assets/src/js/config/integrations.js:11 147 msgid "Autoptimize has beenconfigured."132 msgid "Autoptimize configured." 148 133 msgstr "" 149 134 … … 153 138 154 139 #: inc/classes/integrations.php:147 155 #: assets/build/index.js:1156 140 #: assets/src/js/config/integrations.js:25 157 msgid "Cache Enabler has beenconfigured."141 msgid "Cache Enabler configured." 158 142 msgstr "" 159 143 … … 163 147 164 148 #: inc/classes/integrations.php:158 165 #: assets/build/index.js:1166 149 #: assets/src/js/config/integrations.js:39 167 msgid "SQLite Object Cache has beenconfigured."150 msgid "SQLite Object Cache configured." 168 151 msgstr "" 169 152 … … 177 160 178 161 #: inc/classes/integrations.php:206 179 msgid "Clear all caches (page cache, static assets, object cache)."162 msgid "Clear page cache, static assets cache, and object cache." 180 163 msgstr "" 181 164 182 165 #: inc/classes/integrations.php:214 183 msgid "Clear page s caches"166 msgid "Clear page cache" 184 167 msgstr "" 185 168 … … 189 172 190 173 #: inc/classes/integrations.php:226 191 msgid "Clear static assets cache s(CSS/JS)"174 msgid "Clear static assets cache (CSS/JS)" 192 175 msgstr "" 193 176 … … 207 190 #: inc/classes/integrations.php:265 208 191 #, php-format 209 msgid "%1$s ( Managed by %2$s) has beencleared successfully."192 msgid "%1$s (managed by %2$s) cleared successfully." 210 193 msgstr "" 211 194 … … 246 229 247 230 #. translators: %s: cache type (e.g. Page cache) 231 #. translators: %s: comma-separated list of cache types 248 232 #: inc/classes/integrations.php:317 233 #: inc/classes/integrations.php:326 249 234 #, php-format 250 msgid "%s has beencleared successfully."235 msgid "%s cleared successfully." 251 236 msgstr "" 252 237 … … 255 240 msgstr "" 256 241 257 #. translators: %s: comma-separated list of cache types258 #: inc/classes/integrations.php:326259 #, php-format260 msgid "%s have been cleared successfully."261 msgstr ""262 263 242 #: inc/classes/integrations.php:353 264 243 #: inc/classes/integrations.php:357 265 msgid " Forbidden"244 msgid "You don't have permission to do that." 266 245 msgstr "" 267 246 268 247 #: inc/classes/integrations.php:365 269 248 #: inc/classes/integrations.php:375 270 msgid "C ache clear failed."249 msgid "Clearing cache failed. Try again." 271 250 msgstr "" 272 251 273 252 #: inc/classes/integrations.php:379 274 msgid "Invalid request. "253 msgid "Invalid request. Please refresh and try again." 275 254 msgstr "" 276 255 277 256 #: inc/snippets/functions/block-user-enumeration.php:11 278 257 #: inc/snippets/functions/block-user-enumeration.php:19 279 msgid " Access denied."258 msgid "You don't have permission to view this." 280 259 msgstr "" 281 260 282 261 #: inc/snippets/functions/disable-rest-api.php:56 283 msgid " REST API restricted to authenticated users."262 msgid "You must be logged in to use this." 284 263 msgstr "" 285 264 286 265 #: inc/snippets/functions/protect-wp-login.php:9 287 msgid " Login error."266 msgid "Something went wrong. Try again." 288 267 msgstr "" 289 268 290 269 #: inc/snippets/functions/protect-wp-login.php:38 291 270 #: inc/snippets/functions/protect-wp-login.php:52 292 msgid "Too many failed login attempts. Try again later."271 msgid "Too many failed attempts. Try again in a few minutes." 293 272 msgstr "" 294 273 … … 298 277 299 278 #: inc/snippets/meta/block-user-enumeration.meta.php:14 300 msgid " Prevents attackers from guessing WordPress usernames by blocking requests with the `author` parameter in query strings or permalinks. Reduces exposure to brute-force and user-targeted attacks."279 msgid "Stops visitors from discovering usernames via author URLs. Reduces brute-force risk." 301 280 msgstr "" 302 281 … … 345 324 346 325 #: inc/snippets/meta/clean-admin-bar.meta.php:13 347 msgid "Clean up the WordPressadmin bar"326 msgid "Clean up the admin bar" 348 327 msgstr "" 349 328 … … 363 342 364 343 #: inc/snippets/meta/clean-dashboard-items.meta.php:13 365 msgid "Clean up the WordPressDashboard"344 msgid "Clean up the Dashboard" 366 345 msgstr "" 367 346 368 347 #: inc/snippets/meta/clean-dashboard-items.meta.php:14 369 msgid "Removes unnecessary and ad widgets from the dashboard. Declutters the admin area and improves usability."348 msgid "Removes unnecessary and promotional widgets from the Dashboard." 370 349 msgstr "" 371 350 … … 375 354 376 355 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13 377 msgid "Disable adjacent posts link tags"356 msgid "Disable prev/next post links in head" 378 357 msgstr "" 379 358 … … 413 392 414 393 #: inc/snippets/meta/disable-application-passwords.meta.php:14 415 msgid " Disables WordPress application passwords for all users. Improves security; do not enable if you need API or app-based authentication (e.g. mobile apps, REST clients)."394 msgid "Turns off application passwords for everyone. Turn this off if you use mobile apps or other apps that log in to WordPress." 416 395 msgstr "" 417 396 … … 421 400 422 401 #: inc/snippets/meta/disable-author-archives.meta.php:14 423 msgid " Forces author archive pages to return a 404 error. Prevents user enumeration and hides unnecessary author pages."402 msgid "Author archive URLs show \"Page not found.\" Helps prevent listing usernames." 424 403 msgstr "" 425 404 426 405 #: inc/snippets/meta/disable-autosave.meta.php:13 427 msgid "Disable autosave "406 msgid "Disable autosave (classic editor)" 428 407 msgstr "" 429 408 … … 433 412 434 413 #: inc/snippets/meta/disable-capital-p-dangit.meta.php:13 435 msgid "Disable capital_P_dangit filter"414 msgid "Disable \"WordPress\" spelling correction" 436 415 msgstr "" 437 416 438 417 #: inc/snippets/meta/disable-capital-p-dangit.meta.php:14 439 msgid " Removes the filter that forces \"Wordpress\" to \"WordPress\" in titles, content, comments, and widget text. Saves a small amount of processing on each page load."418 msgid "Stops WordPress from changing \"Wordpress\" to \"WordPress\" in content. Saves a small amount of work on each page." 440 419 msgstr "" 441 420 442 421 #: inc/snippets/meta/disable-dashicons.meta.php:13 443 msgid "Disable dashicons"422 msgid "Disable Dashicons (admin icons)" 444 423 msgstr "" 445 424 446 425 #: inc/snippets/meta/disable-dashicons.meta.php:14 447 msgid " Prevents WordPress from loading the Dashicons CSS for visitors who are not logged in. Improves frontend performance by reducing unnecessary styles."426 msgid "Stops Dashicons (admin icons) from loading for visitors. Logged-in users still see them." 448 427 msgstr "" 449 428 450 429 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:13 451 msgid "Disable default pattern categories in site editor"430 msgid "Disable default pattern categories in Site Editor" 452 431 msgstr "" 453 432 454 433 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:14 455 msgid "Removes default pattern categories from the block pattern inserter in the site editor (e.g. 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 ones. Simplifies the interface; patterns remain accessible."434 msgid "Removes default pattern categories from the block inserter. Patterns are still available; the list is simpler." 456 435 msgstr "" 457 436 … … 479 458 480 459 #: inc/snippets/meta/disable-jquery-migrate.meta.php:13 481 msgid "Disable jQuery migrate"460 msgid "Disable jQuery Migrate script" 482 461 msgstr "" 483 462 484 463 #: inc/snippets/meta/disable-jquery-migrate.meta.php:14 485 msgid " Removes jQuery Migrate from loading on the frontend while keeping it enabled in the admin. Improves frontend performance and reduces legacy overhead."464 msgid "Loads jQuery Migrate only in the admin, not on the front. Improves front-end performance." 486 465 msgstr "" 487 466 488 467 #: inc/snippets/meta/disable-login-language-selector.meta.php:13 489 msgid "Disable thelogin language selector"468 msgid "Disable login language selector" 490 469 msgstr "" 491 470 … … 503 482 504 483 #: inc/snippets/meta/disable-password-strength-meter.meta.php:13 505 msgid "Disable Password Strength Meter"484 msgid "Disable password strength meter" 506 485 msgstr "" 507 486 508 487 #: inc/snippets/meta/disable-password-strength-meter.meta.php:14 509 msgid " Prevents the password strength meter and zxcvbn scripts from loading on profile, login, and similar pages. Saves roughly 400KB and reduces script parsing. Users will not see the strength indicator when choosing passwords."488 msgid "Stops the password strength meter from loading on login and profile pages. Saves about 400KB. Users won't see how strong their password is." 510 489 msgstr "" 511 490 … … 519 498 520 499 #: inc/snippets/meta/disable-pingback-trackback.meta.php:13 521 msgid "Disable pingback and trackback"500 msgid "Disable pingbacks and trackbacks" 522 501 msgstr "" 523 502 … … 527 506 528 507 #: inc/snippets/meta/disable-rest-api.meta.php:14 529 msgid " Disable REST API for visitors not logged into WordPress"508 msgid "Limit REST API to logged-in users" 530 509 msgstr "" 531 510 532 511 #: inc/snippets/meta/disable-rest-api.meta.php:15 533 msgid " Restricts the WP REST API to logged-in users only; unauthenticated requests receive an error. Bypass filters (zenpress_disable_wp_rest_api_post_var, zenpress_disable_wp_rest_api_server_var) allow specific integrations (e.g. webhooks); use non-guessable values only."512 msgid "Only logged-in users can use the REST API. Visitors get an error. Advanced: filters let you allow specific tools; use with care." 534 513 msgstr "" 535 514 536 515 #: inc/snippets/meta/disable-rss.meta.php:13 537 msgid "Disable all WordPress feeds (RDF, RSS, RSS2, Atom, andcomments)"516 msgid "Disable all feeds (RSS, Atom, comments)" 538 517 msgstr "" 539 518 … … 543 522 544 523 #: inc/snippets/meta/disable-shortlink.meta.php:13 545 msgid "Disable WordPressshortlink"524 msgid "Disable shortlink" 546 525 msgstr "" 547 526 … … 551 530 552 531 #: inc/snippets/meta/disable-wlw-manifest.meta.php:13 553 msgid "Disable W LWlink"532 msgid "Disable Windows Live Writer link" 554 533 msgstr "" 555 534 556 535 #: inc/snippets/meta/disable-wlw-manifest.meta.php:14 557 msgid "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."536 msgid "Removes the old Windows Live Writer link from the page. Safe to disable." 558 537 msgstr "" 559 538 560 539 #: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:13 561 msgid "Disable WooCommerce cart fragments script"540 msgid "Disable WooCommerce cart fragments" 562 541 msgstr "" 563 542 564 543 #: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:14 565 msgid " 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 requirelive cart updates."544 msgid "Stops the script that updates the cart without reloading the page. Turn off if you don't need live cart updates." 566 545 msgstr "" 567 546 … … 576 555 577 556 #: inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php:13 578 msgid "Disable WooCommerce scripts and styles on non- WooCommercepages"557 msgid "Disable WooCommerce scripts and styles on non-shop pages" 579 558 msgstr "" 580 559 … … 584 563 585 564 #: inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php:13 586 msgid "Disable unnecessary Stripe scripts on WooCommercepages"565 msgid "Disable Stripe scripts on product and cart pages" 587 566 msgstr "" 588 567 … … 600 579 601 580 #: inc/snippets/meta/disable-wordpress-default-lazy-loading.meta.php:13 602 msgid "Disable WordPress default lazy loading"581 msgid "Disable default lazy loading for images" 603 582 msgstr "" 604 583 … … 608 587 609 588 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:13 610 msgid "Disable XML-RPC and removeRSD link"589 msgid "Disable XML-RPC and RSD link" 611 590 msgstr "" 612 591 … … 632 611 633 612 #: inc/snippets/meta/limit-post-revisions.meta.php:13 634 msgid "Limit post revision to 10"613 msgid "Limit post revisions to 10" 635 614 msgstr "" 636 615 … … 640 619 641 620 #: inc/snippets/meta/protect-wp-login.meta.php:13 642 msgid "Protect the wp-login form from brute force attacks"621 msgid "Protect login from brute force" 643 622 msgstr "" 644 623 645 624 #: inc/snippets/meta/protect-wp-login.meta.php:14 646 msgid " Removes detailed login error messages and limits failed login attempts per IP. Blocks further attempts for 5 minutes after 5 failed tries. Mitigates brute-force attacks."625 msgid "Hides detailed login errors and limits failed attempts per IP. After 5 failed tries, blocks that IP for 5 minutes." 647 626 msgstr "" 648 627 … … 652 631 653 632 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:13 654 msgid "Remove WordPress default remoteblock patterns"633 msgid "Remove WordPress default block patterns" 655 634 msgstr "" 656 635 … … 660 639 661 640 #: inc/snippets/meta/remove-help-button.meta.php:13 662 msgid "Remove \"Help\" button"641 msgid "Remove Help tab" 663 642 msgstr "" 664 643 665 644 #: inc/snippets/meta/remove-help-button.meta.php:14 666 msgid "Hides the Help tab and panel on all admin screens. Reduces clutter for users who do not use the in-app help."645 msgid "Hides the Help tab on all admin screens. Reduces clutter if you don't use in-app help." 667 646 msgstr "" 668 647 669 648 #: inc/snippets/meta/remove-rest-api-link.meta.php:13 670 msgid "Remove REST API links "649 msgid "Remove REST API links from page source" 671 650 msgstr "" 672 651 … … 676 655 677 656 #: inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php:13 678 msgid "Remove \"Thanks for using WordPress\" infooter"657 msgid "Remove \"Thanks for using WordPress\" from footer" 679 658 msgstr "" 680 659 681 660 #: inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php:14 682 msgid "Removes the \"Thank you for creating withWordPress\" message from the admin footer."661 msgid "Removes the \"Thanks for using WordPress\" message from the admin footer." 683 662 msgstr "" 684 663 … … 692 671 693 672 #: inc/snippets/meta/remove-wordpress-logo.meta.php:13 694 msgid "Remove WordPress logo "673 msgid "Remove WordPress logo from admin bar" 695 674 msgstr "" 696 675 697 676 #: inc/snippets/meta/remove-wordpress-logo.meta.php:14 698 msgid "Removes the WordPress logo and its dropdownfrom the admin bar."677 msgid "Removes the WordPress logo and its menu from the admin bar." 699 678 msgstr "" 700 679 701 680 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:13 702 msgid " Separate loading of core block styles"681 msgid "Load block styles separately" 703 682 msgstr "" 704 683 … … 707 686 msgstr "" 708 687 709 #: assets/build/index.js:1710 #: assets/src/js/config/integrations.js:12711 msgid "Autoptimize autoconfig failed. Is Autoptimize installed and active?"712 msgstr ""713 714 #: assets/build/index.js:1715 #: assets/src/js/config/integrations.js:16716 msgid "Setup Autoptimize"717 msgstr ""718 719 #: assets/build/index.js:1720 #: assets/src/js/config/integrations.js:17721 msgid "Apply recommended Autoptimize settings: Minify JS & CSS, aggregate CSS, static files, 404 fallbacks."722 msgstr ""723 724 #: assets/build/index.js:1725 #: assets/src/js/config/integrations.js:26726 msgid "Cache Enabler autoconfig failed. Is Cache Enabler installed and active?"727 msgstr ""728 729 #: assets/build/index.js:1730 #: assets/src/js/config/integrations.js:30731 msgid "Setup Cache Enabler"732 msgstr ""733 734 #: assets/build/index.js:1735 #: assets/src/js/config/integrations.js:31736 msgid "Apply recommended Cache Enabler settings: Clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS)."737 msgstr ""738 739 #: assets/build/index.js:1740 #: assets/src/js/config/integrations.js:43741 msgid "SQLite Object Cache autoconfig failed. Is SQLite Object Cache installed and active?"742 msgstr ""743 744 #: assets/build/index.js:1745 #: assets/src/js/config/integrations.js:47746 msgid "Setup SQLite Object Cache"747 msgstr ""748 749 #: assets/build/index.js:1750 #: assets/src/js/config/integrations.js:48751 msgid "Apply recommended SQLite Object Cache settings. Enable \"Use APCu\" if APCu is available."752 msgstr ""753 754 #: assets/build/index.js:1755 #: assets/src/js/components/SaveButton.js:20756 msgid "Save settings"757 msgstr ""758 759 #: assets/build/index.js:1760 #: assets/src/js/components/BulkSnippetActions.js:29761 msgid "Enable all actions"762 msgstr ""763 764 #: assets/build/index.js:1765 #: assets/src/js/components/BulkSnippetActions.js:36766 msgid "Disable all actions"767 msgstr ""768 769 #: assets/build/index.js:1770 688 #: assets/src/js/components/AutoconfigButton.js:32 771 689 msgid "Applying…" 772 690 msgstr "" 773 691 774 #: assets/build/index.js:1 692 #: assets/src/js/components/BulkSnippetActions.js:29 693 msgid "Enable all" 694 msgstr "" 695 696 #: assets/src/js/components/BulkSnippetActions.js:36 697 msgid "Disable all" 698 msgstr "" 699 775 700 #: assets/src/js/components/IntegrationsBlock.js:26 776 701 msgid "Integrations" 777 702 msgstr "" 778 703 779 #: assets/build/index.js:1780 704 #: assets/src/js/components/IntegrationsBlock.js:28 781 msgid "Show ZenPress admin bar button" 782 msgstr "" 783 784 #: assets/build/index.js:1 705 msgid "Show cache actions in admin bar" 706 msgstr "" 707 785 708 #: assets/src/js/components/IntegrationsBlock.js:31 786 msgid "Show a ZenPress item in the admin bar with \"Clear all caches\" and sub-items for each active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, AutOptimize, or SQLite Object Cache is active. When enabled, those plugins' own admin bar buttons are hidden." 787 msgstr "" 788 789 #: assets/build/index.js:1 709 msgid "Adds a ZenPress menu to the admin bar with \"Clear all caches\" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins' own admin bar buttons." 710 msgstr "" 711 790 712 #: assets/src/js/components/PresetCard.js:28 791 msgid "Enable" 792 msgstr "" 793 794 #: assets/build/index.js:1 713 msgid "Apply preset" 714 msgstr "" 715 795 716 #: assets/src/js/components/PresetsSidebar.js:8 796 717 msgid "Corporate website" 797 718 msgstr "" 798 719 799 #: assets/build/index.js:1800 720 #: assets/src/js/components/PresetsSidebar.js:9 801 msgid "Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives." 802 msgstr "" 803 804 #: assets/build/index.js:1 721 msgid "For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives." 722 msgstr "" 723 805 724 #: assets/src/js/components/PresetsSidebar.js:17 806 725 msgid "Blog" 807 726 msgstr "" 808 727 809 #: assets/build/index.js:1810 728 #: assets/src/js/components/PresetsSidebar.js:18 811 msgid "Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds." 812 msgstr "" 813 814 #: assets/build/index.js:1 729 msgid "For content-focused blogs. Keeps RSS and other blog features while improving performance and security." 730 msgstr "" 731 815 732 #: assets/src/js/components/PresetsSidebar.js:26 816 733 msgid "E-commerce" 817 734 msgstr "" 818 735 819 #: assets/build/index.js:1820 736 #: assets/src/js/components/PresetsSidebar.js:27 821 msgid "Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout." 822 msgstr "" 823 824 #: assets/build/index.js:1 737 msgid "For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout." 738 msgstr "" 739 825 740 #: assets/src/js/components/PresetsSidebar.js:45 826 msgid "Pick configuration preset" 827 msgstr "" 828 829 #: assets/build/index.js:1 741 msgid "Choose a preset" 742 msgstr "" 743 830 744 #: assets/src/js/components/PresetsSidebar.js:47 831 msgid "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." 832 msgstr "" 833 834 #: assets/build/index.js:1 745 msgid "Not sure what to enable? Choose a preset that matches your site. Each preset turns on a set of features for that type of site." 746 msgstr "" 747 748 #: assets/src/js/components/SaveButton.js:20 749 msgid "Save" 750 msgstr "" 751 752 #: assets/src/js/config/integrations.js:12 753 msgid "Autoptimize setup failed. Is Autoptimize installed and active?" 754 msgstr "" 755 756 #: assets/src/js/config/integrations.js:16 757 msgid "Set up Autoptimize" 758 msgstr "" 759 760 #: assets/src/js/config/integrations.js:17 761 msgid "Apply recommended settings: minify JS and CSS, combine CSS, static file caching, 404 fallbacks." 762 msgstr "" 763 764 #: assets/src/js/config/integrations.js:26 765 msgid "Cache Enabler setup failed. Is Cache Enabler installed and active?" 766 msgstr "" 767 768 #: assets/src/js/config/integrations.js:30 769 msgid "Set up Cache Enabler" 770 msgstr "" 771 772 #: assets/src/js/config/integrations.js:31 773 msgid "Apply recommended settings: clear cache on content changes, WebP, compression, minify HTML." 774 msgstr "" 775 776 #: assets/src/js/config/integrations.js:40 777 msgid "SQLite Object Cache setup failed. Is it installed and active?" 778 msgstr "" 779 780 #: assets/src/js/config/integrations.js:44 781 msgid "Set up SQLite Object Cache" 782 msgstr "" 783 784 #: assets/src/js/config/integrations.js:45 785 msgid "Apply recommended settings. Enable \"Use APCu\" in the plugin if available." 786 msgstr "" 787 835 788 #: assets/src/js/hooks/useSettings.js:58 836 msgid "Failed to load settings." 837 msgstr "" 838 839 #: assets/build/index.js:1 840 #: assets/src/js/hooks/useSettings.js:85 789 msgid "Settings could not be loaded. Refresh the page." 790 msgstr "" 791 792 #: assets/src/js/hooks/useSettings.js:88 841 793 msgid "Settings saved." 842 794 msgstr "" 843 795 844 #: assets/build/index.js:1 845 #: assets/src/js/hooks/useSettings.js:87 846 msgid "Failed to save settings." 847 msgstr "" 848 849 #: assets/build/index.js:1 796 #: assets/src/js/hooks/useSettings.js:91 797 msgid "Settings could not be saved. Try again." 798 msgstr "" 799 850 800 #: assets/src/js/utils/snippets.js:43 801 #: assets/src/js/utils/snippets.js:46 851 802 msgid "Uncategorized" 852 803 msgstr "" 853 854 #: assets/build/index.js:1855 #: assets/src/js/utils/snippets.js:46856 msgid "uncategorized"857 msgstr "" -
zenpress/tags/2.2.5/readme.txt
r3452689 r3470504 1 === ZenPress - Optimize & Secure===1 === ZenPress === 2 2 Contributors: @quentinldd 3 3 Donate link: https://github.com/sponsors/quentin-ld/ … … 5 5 Requires at least: 6.0 6 6 Tested up to: 6.9 7 Stable tag: 2.2. 47 Stable tag: 2.2.5 8 8 Requires PHP: 8.1 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html/ 11 11 12 Easily speed up and strengthen your website in one click: clean out unnecessary features, protect weak points, autoconfigure cache integrations.12 Speed up and harden your site with a single click: cleans up unused features, protects security gaps, and configures cache integrations automatically. 13 13 14 14 == Description == 15 15 16 ZenPress is a lightweight, super-fast plugin that boosts your WordPress & WooCommerce website through a wide range of solid actions. 17 Combined with [Cache Enabler](https://wordpress.org/plugins/cache-enabler/), [Autoptimize](https://wordpress.org/plugins/autoptimize/) and [SQLite Object Cache](https://wordpress.org/plugins/sqlite-object-cache/), ZenPress is a free alternative to major premium performance plugins. 18 This is a simple solution for improving your WordPress website's performance and security while enjoying a simpler and lighter UI without breaking the bank. 19 No database clutter, no ads, no pro version. Just install, activate, select what you need or pick up your settings preset and you are ready to go ! 16 ZenPress is a lightweight, high-performance plugin that improves your WordPress and WooCommerce sites through a range of supportive actions. 17 Combined with [Cache Enabler](https://wordpress.org/plugins/cache-enabler/), [Autoptimize](https://wordpress.org/plugins/autoptimize/) and [SQLite Object Cache](https://wordpress.org/plugins/sqlite-object-cache/), you can use ZenPress as a reliable, free alternative to major premium performance plugins. 18 By integrating directly into the WordPress core interface, ZenPress provides a simpler experience without the need for complex custom dashboards. You can improve your site's performance and security without ads, pro versions, or database clutter. 20 19 21 20 = Why choose ZenPress? = 22 * Curated settings presets included to help you. 23 * Deep integration with the native WordPress interface: no bloat, no extra options page, no weird custom dashboard : only what you need. 24 * Free alternative to major premium performance plugin for everyone. 25 * Make your WordPress website fast & clean by disabling unwanted features. 26 * Improve security by turning off features you don’t use and hardening weak spots. 27 * Eliminate third-party plugin bloat (actually hunting them down). 28 * Ultra lightweight. 29 * Future proof. 21 * Use curated settings presets to help you optimize your site instantly. 22 * Experience deep integration with the WordPress core interface for a lightweight, familiar experience. 23 * Choose a free, reliable alternative to premium performance plugins. 24 * Keep your site fast and clean by disabling unused features. 25 * Harden your security by turning off unused features and protecting weak spots. 26 * Reduce bloat from third-party plugins. 27 * Enjoy an ultra-lightweight and future-proof design. 30 28 31 29 == Features == 32 30 33 Following features are included : 34 35 = Settings subpage 🧰 = 36 * Organized interface with vertical tabs for easy navigation between categories (Core, Gutenberg, WooCommerce, Ads-blocker, 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. 41 * Native WordPress interface, benefits from Gutenberg's new features and the site editor. 42 43 = Core = 44 31 ZenPress includes the following features: 32 33 = Dashboard Settings = 34 * Navigate easily between categories like Core, Gutenberg, and WooCommerce using a structured tabbed interface. 35 * Identify features quickly with visual icons organized by Performance, Security, and User Interface. 36 * Select from three ready-to-use presets: Corporate, Blog, or E-commerce: each optimized for your specific site type. 37 * Understand every choice with concise descriptions that explain the benefits to your site. 38 * Use a fully accessible interface that includes ARIA-compliant tabs and full keyboard navigation support. 39 * Benefit from a design that matches the WordPress core look and feel, supporting the latest block editor features. 40 41 = Core Settings = 45 42 * Block user enumeration. 46 * Clean up the WordPressadmin bar.47 * Disable adjacent posts link tags.48 * Disable all WordPress feeds (RDF, RSS, RSS2, Atom, andcomments).43 * Clean up the admin bar. 44 * Disable "WordPress" spelling correction. 45 * Disable all feeds (RSS, Atom, comments). 49 46 * Disable application passwords. 50 47 * Disable author archives. 51 * Disable autosave .52 * Disable capital_P_dangit filter.53 * Disable d ashicons.48 * Disable autosave (classic editor). 49 * Disable Dashicons (admin icons). 50 * Disable default lazy loading for images. 54 51 * Disable DNS prefetch. 55 * Disable jQuery migrate. 52 * Disable jQuery Migrate script. 53 * Disable login language selector. 56 54 * Disable oEmbed. 57 * Disable Password Strength Meter.55 * Disable password strength meter. 58 56 * Disable PDF thumbnails. 59 * Disable pingback and trackback. 60 * Disable REST API for visitors not logged into WordPress. 61 * Disable the login language selector. 62 * Disable WLW link. 63 * Disable WordPress default lazy loading. 57 * Disable pingbacks and trackbacks. 58 * Disable prev/next post links in head. 59 * Disable shortlink. 60 * Disable Windows Live Writer link. 64 61 * Disable WordPress emoji scripts and styles. 65 * Disable WordPress shortlink. 66 * Disable XML-RPC and remove RSD link. 62 * Disable XML-RPC and RSD link. 67 63 * Hide WordPress version. 68 * Limit post revision to 10. 69 * Remove "Help" button. 70 * Remove "Thanks for using WordPress" in footer.* Remove REST API links. 71 * Remove WordPress logo. 72 73 = WooCommerce = 74 * Disable unnecessary Stripe scripts on WooCommerce pages. 75 * Disable WooCommerce cart fragments script. 76 * Disable WooCommerce scripts and styles on non-WooCommerce pages. 64 * Limit post revisions to 10. 65 * Limit REST API to logged-in users. 66 * Remove "Thanks for using WordPress" from footer. 67 * Remove Help tab. 68 * Remove REST API links from page source. 69 * Remove WordPress logo from admin bar. 70 71 = Gutenberg Settings = 72 * Disable default pattern categories in Site Editor. 73 * Load block styles separately. 74 * Remove WordPress default block patterns. 75 76 = WooCommerce Settings = 77 * Disable Stripe scripts on product and cart pages. 78 * Disable WooCommerce cart fragments. 79 * Disable WooCommerce scripts and styles on non-shop pages. 77 80 * Disable WooCommerce widgets. 78 * Hide WooCommerce version.* Remove WooCommerce default block patterns. 79 80 = Gutenberg = 81 * Disable default pattern categories in site editor. 82 * Remove WordPress default remote block patterns. 83 * Separate loading of core block styles. 84 85 = Ads-blocker = 86 * Clean up the WordPress Dashboard. 87 88 = Tools = 89 * Protect the wp-login form from brute force attacks. 90 * Toggle "Show ZenPress admin bar button": ZenPress item in the admin bar with "Clear all caches" and sub-items per active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, Autoptimize, or SQLite Object Cache is active. When enabled, those plugins' own admin bar buttons are hidden. Toggle via Settings > ZenPress > Tools. 81 * Hide WooCommerce version. 82 * Remove WooCommerce default block patterns. 83 84 = Ads-blocker Settings = 85 * Clean up the Dashboard. 86 87 = Tools Settings = 88 * Protect login from brute force. 89 * Show cache actions in admin bar. 91 90 92 91 = Integrations = … … 94 93 ZenPress integrates with Cache Enabler, Autoptimize, and SQLite Object Cache. When any of these plugins is active, the Tools tab shows integration status and one-click autoconfig actions. 95 94 96 * Admin bar: One "Clear all caches" button (dashicon) in the admin bar, with sub-items to clear page cache (Cache Enabler), static assets (Autoptimize), or object cache (SQLite Object Cache) separately. When the ZenPress admin bar is enabled, the third-party cache buttons (Cache Enabler, Autoptimize, SQLite Object Cache) are hidden. You can hide the ZenPress admin bar via Settings > ZenPress > Tools.97 * Autoptimize: One-click autoconfig enables recommended options (JS/CSS/aggregate/nogzip/fallback on; defer/HTML/logged-in/meta off).98 * Cache Enabler: One-click autoconfig enables clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS).99 * SQLite Object Cache: One-click autoconfig enables the "Use APCu" option in the plugin settings when the APCu extension isavailable.95 * Admin bar: Adds a ZenPress menu to the admin bar with "Clear all caches" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins' own admin bar buttons. 96 * Autoptimize: Minify JS and CSS, combine CSS, static file caching, 404 fallbacks. 97 * Cache Enabler: Clear cache on content changes, WebP, compression, minify HTML. 98 * SQLite Object Cache: Enable "Use APCu" in the plugin if available. 100 99 101 100 = Presets = 102 * Corporate website / Portfolio: Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feedsand author archives.103 * Blog: Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.104 * E-commerce: Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specificoptimizations for faster checkout.101 * Corporate website: For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives. 102 * Blog: For content-focused blogs. Keeps RSS and other blog features while improving performance and security. 103 * E-commerce: For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout. 105 104 106 105 = Accessibility = 107 * Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide.108 * Complete keyboard navigation: Arrow keys, Home, End, Space, Enter, and Tab keys fully supported.109 * Automatic tab activation on focus for improved user experience.110 * Proper focus management with visible focus indicators.111 * Screen reader friendly with proper ARIA labels and roles.106 * You can navigate the dashboard with confidence using an interface built to WCAG 2.1 AA accessibility standards. 107 * Move through settings efficiently using only your keyboard; we fully support the use of Tab, Arrow keys, Home, End, and Enter for all interactions. 108 * Experience faster navigation with automatic tab activation, which displays panels immediately as you move focus between sections. 109 * Always identify your position on the page through highly visible focus indicators on every interactive button and link. 110 * Every element is optimized for screen readers and assistive technologies with descriptive ARIA labels to provide clear context for every setting. 112 111 113 112 == Roadmap == 114 113 114 * Use new Gutenberg Icon component for categories & subcategories icons instead of Dashicons. 115 115 * Additional presets for specific use cases. 116 116 * Documentation pages with detailed guides. … … 165 165 = Does ZenPress work with my existing caching / optimization plugins? = 166 166 167 Yes. ZenPress focuses on disabling unnecessary core features and plugin bloat; it does not handle page caching, minification, or image optimization. It is designed to work alongside plugins like Cache Enabler, Autoptimize, and most object-cache solutions. If a performance feature overlaps, simply disable it in one of the tools. 168 169 = Can ZenPress break my theme or plugins? = 170 171 Potentially, yes—especially if your theme or plugins rely on features you disable (RSS feeds, oEmbed, REST API, emojis, WooCommerce assets, etc.). That’s why each snippet includes clear descriptions and categories (performance, security, UI). Always test changes on a staging site first and enable snippets gradually. 167 Yes. You can use ZenPress alongside tools like Cache Enabler or Autoptimize. Because ZenPress focuses on disabling unused core features and reducing bloat, it does not interfere with page caching or image optimization. If you notice overlapping features, you can easily toggle them off in either tool. 172 168 173 169 = How do I know which snippets are safe to enable? = 174 170 175 If you are unsure, start with a preset (Corporate, Blog, E‑commerce) and then adjust. For manual tuning, prefer UI and performance snippets first (dashicons, emojis, dashboard/admin-bar cleanup) before more invasive ones (REST API, XML‑RPC, RSS). After each change, check: frontend pages, login, editor, and (if used) WooCommerce flows.171 If you are new to optimization, you can safely start with a curated preset (Corporate, Blog, or E‑commerce). For manual changes, we suggest starting with User Interface (UI) and performance settings, such as cleaning up the Admin Bar, before moving to more advanced core settings. 176 172 177 173 = What happens if I disable the REST API? = 178 174 179 Unauthenticated REST requests will be blocked except for any explicit bypasses configured via the filters documented in the snippet (`zenpress_disable_wp_rest_api_post_var`, `zenpress_disable_wp_rest_api_server_var`). Core features and plugins that depend on public REST endpoints (some blocks, headless/front-end apps, third-party integrations) may stop working until you whitelist the required routes. 180 181 **Important**: If you don't know how to configure bypass filters or whitelist specific routes, don't activate this snippet. It can break functionality that relies on public REST API access. 175 The REST API allows different applications to communicate with your site. If you disable it, ZenPress will block unauthenticated requests to keep your site secure. However, some blocks or third-party integrations may require this to be active. If a feature stops working, you can simply use our documented filters to allow specific routes. 182 176 183 177 = Does ZenPress store any personal data or phone home? = … … 187 181 = Is ZenPress multisite compatible? = 188 182 189 ZenPress can be network‑activated or activated per site. Settings are stored per site, so each site in a network can have different snippets enabled. As with any optimization/security plugin, test network‑wide changes carefully, especially REST API and XML‑RPC related snippets.183 ZenPress is fully compatible with multisite networks. You can activate it across the entire network or on individual sites. Only Network Administrators have the capability to manage these settings across the network to ensure consistent performance and security policies. 190 184 191 185 = I have a suggestion = 192 186 193 Nice ! If you can't find anything in the roadmap, feel free to submit your suggestion on the support page! If you know how to code, you can even contribute on GitHub. 194 195 == Hooks & filters == 196 197 For developers: ZenPress exposes the following action and filters for extending or bypassing behavior. 198 199 = Action = 200 * `zenpress_caches_clear` – Fired when the user clears caches from the ZenPress admin bar. Integrations (e.g. Autoptimize) hook into this to clear their own caches. You can add custom cache clear logic with `add_action('zenpress_caches_clear', 'your_callback');`. 201 202 = Filters (Disable REST API snippet) = 203 * `zenpress_disable_wp_rest_api_post_var` – Allow unauthenticated REST access when a specific POST key is present (e.g. for webhooks). Return a string or array of key names. Use non-guessable values only. 204 * `zenpress_disable_wp_rest_api_server_var` – Allow unauthenticated REST access when `REQUEST_URI` matches a specific value. Return a string or array. Use non-guessable values only. 187 I welcome your ideas! If you have a suggestion for the roadmap, please visit the official support forum. If you are a developer, you can also contribute directly to the project on GitHub. 205 188 206 189 == Changelog == 207 190 191 = 2.2.5 = 192 - Linguistic improvements : Align to WordPress [Style, voice, and tone](https://make.wordpress.org/docs/style-guide/general-guidelines/style-voice-tone/). 193 - Accessibility improvements : Align to WordPress [accessibility guidelines](https://make.wordpress.org/docs/style-guide/general-guidelines/accessibility/). 194 208 195 = 2.2.4 = 209 - Fix : Admin bar “Clear all caches” is now off by default; user turns it on if they want.196 - Fix : Admin bar “Clear all caches” is now off by default; user turns it on if they want. 210 197 - Code quality : Split Settings page into smaller, modular piece. 211 198 - Interface : After clearing cache from the admin bar, show a WordPress success notice on the next admin load. -
zenpress/tags/2.2.5/zenpress.php
r3452689 r3470504 10 10 * @license GPL v2 or later 11 11 * 12 * Plugin Name: ZenPress - Optimize & Secure13 * Description: Easily speed up and strengthen your WordPress site in one click: clean out unnecessary features, protect weak points, autoconfigure cache integrations.14 * Version: 2.2. 412 * Plugin Name: ZenPress 13 * Description: Speed up and harden your site with a single click: cleans up unused features, protects security gaps, and configures cache integrations automatically. 14 * Version: 2.2.5 15 15 * Plugin URI: https://wordpress.org/plugins/zenpress/ 16 16 * Author: Quentin Le Duff -
zenpress/trunk/assets/build/index.asset.php
r3452689 r3470504 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' => ' f3427795ee306bf33669');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' => 'e5c7f5bde89d8094a538'); -
zenpress/trunk/assets/build/index.js
r3452689 r3470504 1 (()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var s=e.n(t);const n=window.wp.element,r=window.wp.apiFetch;var a=e.n(r);const i=window.wp.data,o=window.wp.notices,c=window.wp.i18n,l=[{key:"autoptimize",path:"/zenpress/v1/autoconfig/autoptimize",successMessage:(0,c.__)("Autoptimize has been configured.","zenpress"),errorMessage:(0,c.__)("Autoptimize autoconfig failed. Is Autoptimize installed and active?","zenpress"),buttonLabel:(0,c.__)("Setup Autoptimize","zenpress"),helpText:(0,c.__)("Apply recommended Autoptimize settings: Minify JS & CSS, aggregate CSS, static files, 404 fallbacks.","zenpress")},{key:"cache_enabler",path:"/zenpress/v1/autoconfig/cache-enabler",successMessage:(0,c.__)("Cache Enabler has been configured.","zenpress"),errorMessage:(0,c.__)("Cache Enabler autoconfig failed. Is Cache Enabler installed and active?","zenpress"),buttonLabel:(0,c.__)("Setup Cache Enabler","zenpress"),helpText:(0,c.__)("Apply recommended Cache Enabler settings: Clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS).","zenpress")},{key:"sqlite_object_cache",path:"/zenpress/v1/autoconfig/sqlite-object-cache",successMessage:(0,c.__)("SQLite Object Cache has been configured.","zenpress"),errorMessage:(0,c.__)("SQLite Object Cache autoconfig failed. Is SQLite Object Cache installed and active?","zenpress"),buttonLabel:(0,c.__)("Setup SQLite Object Cache","zenpress"),helpText:(0,c.__)('Apply recommended SQLite Object Cache settings. Enable "Use APCu" if APCu is available.',"zenpress")}],d=["core","gutenberg","woocommerce","ads-blocker","tools"];function p(e){return null==e||"string"!=typeof e?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}const u=window.wp.components,b=window.ReactJSXRuntime,h=()=>{const{removeNotice:e}=(0,i.useDispatch)(o.store),t=(0,i.useSelect)(e=>e(o.store).getNotices(),[]);return t&&0!==t.length?(0,b.jsx)(u.NoticeList,{notices:t,onRemove:e}):null},g=(0,n.createContext)(),f=({selectedTabId:e,onSelect:t,orientation:s="horizontal",children:r})=>{const[a,i]=(0,n.useState)(),o=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,b.jsx)(g.Provider,{value:{selectedTabId:c,onSelect:s=>{void 0===e&&i(s),t?.(s)},orientation:s,getOrderedTabIds:()=>o.current?Array.from(o.current.querySelectorAll('[role="tab"]')).map(e=>{const t=e.getAttribute("id");return t?t.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:o},children:(0,b.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${s}`,children:r})})};f.TabList=({children:e})=>{const{orientation:t,tabListRef:s}=(0,n.useContext)(g);return(0,b.jsx)("div",{ref:s,className:`zenpress-tabs__list zenpress-tabs__list--${t}`,role:"tablist","aria-orientation":t,children:e})},f.Tab=({tabId:e,title:t,className:s="",children:r})=>{const{selectedTabId:a,onSelect:i,orientation:o,getOrderedTabIds:c}=(0,n.useContext)(g),l=a===e,d=(0,n.useRef)(null);return(0,b.jsx)("button",{ref:d,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${s}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>i(e),onKeyDown:t=>{const s=c();if(!s||0===s.length)return;const n=s.indexOf(e);if(-1===n)return;let r=n;if("vertical"===o?"ArrowDown"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowUp"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1):"ArrowRight"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowLeft"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1),"Home"===t.key?(t.preventDefault(),r=0):"End"===t.key&&(t.preventDefault(),r=s.length-1)," "===t.key||"Enter"===t.key)return t.preventDefault(),void i(e);if(r!==n&&r>=0&&r<s.length){const e=s[r],t=document.getElementById(`zenpress-tab-${e}`);t&&(t.focus(),i(e))}},onFocus:()=>{l||i(e)},children:t||r})},f.TabPanel=({tabId:e,children:t})=>{const{selectedTabId:s}=(0,n.useContext)(g),r=(0,n.useRef)(null),a=s===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,b.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:t}):(0,b.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:t})};const m=({onClick:e,isBusy:t})=>(0,b.jsx)(u.Button,{variant:"primary",onClick:e,isBusy:t,__next40pxDefaultSize:!0,children:(0,c.__)("Save settings","zenpress")});function y({onEnableAll:e,onDisableAll:t,onSave:s,isSaving:n}){return(0,b.jsxs)("div",{className:"zenpress-actions",children:[(0,b.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,b.jsx)(u.Button,{variant:"tertiary",onClick:e,__next40pxDefaultSize:!0,children:(0,c.__)("Enable all actions","zenpress")}),(0,b.jsx)(u.Button,{isDestructive:!0,onClick:t,__next40pxDefaultSize:!0,children:(0,c.__)("Disable all actions","zenpress")})]}),(0,b.jsx)(m,{onClick:s,isBusy:n})]})}function _(){const e="undefined"!=typeof window?window.zenpressIntegrationsActive:null;return!e||"object"!=typeof e||Array.isArray(e)?{}:e}const z=({label:e,value:t,onChange:s,help:r})=>{const a=(0,n.useRef)(null);return(0,n.useLayoutEffect)(()=>((e,t)=>{if(!e)return;const s=s=>{if("Enter"===s.key){const n=e.querySelector('input[type="checkbox"]'),r=e.ownerDocument||document;n&&(r.activeElement===n||e.contains(r.activeElement))&&(s.preventDefault(),s.stopPropagation(),t())}};return e.addEventListener("keydown",s),()=>{e.removeEventListener("keydown",s)}})(a.current,s),[s]),(0,b.jsx)("div",{ref:a,children:(0,b.jsx)(u.ToggleControl,{label:e,checked:t,onChange:s,help:r,__nextHasNoMarginBottom:!0})})};function v({subcategory:e,items:t,onToggle:s}){const n=e.toLowerCase().replace(/\s+/g,"-");return(0,b.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${n}`,children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:p(e)}),t.map(({name:e,data:t})=>(0,b.jsx)(z,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>s(e),help:t.description||""},e))]},e)}function x({integrationKey:e,buttonLabel:t,helpText:s,onClick:n,busyKey:r}){const a=r===e;return(0,b.jsxs)("div",{className:"zenpress-autoconfig-actions",children:[(0,b.jsx)(u.Button,{variant:"secondary",onClick:n,disabled:null!==r,__next40pxDefaultSize:!0,children:a?(0,c.__)("Applying…","zenpress"):t}),(0,b.jsx)("p",{className:"zenpress-autoconfig-help",children:s})]})}function j({adminBarEnabled:e,setAdminBarEnabled:t,autoconfigBusy:s,getAutoconfigHandler:n}){return(0,b.jsxs)("div",{className:"zenpress-subcategory zenpress-subcategory-integrations",children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:(0,c.__)("Integrations","zenpress")}),(0,b.jsx)(z,{label:(0,c.__)("Show ZenPress admin bar button","zenpress"),value:e,onChange:()=>t(!e),help:(0,c.__)('Show a ZenPress item in the admin bar with "Clear all caches" and sub-items for each active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, AutOptimize, or SQLite Object Cache is active. When enabled, those plugins\' own admin bar buttons are hidden.',"zenpress")}),l.filter(e=>_()[e.key]).map(e=>(0,b.jsx)(x,{integrationKey:e.key,buttonLabel:e.buttonLabel,helpText:e.helpText,onClick:n(e.key),busyKey:s},e.key))]})}function w({category:e,groupedSnippets:t,onToggle:s,showIntegrations:n=!1,adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:i,getAutoconfigHandler:o}){const c=Object.keys(t[e]||{}).sort();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{children:p(e)}),c.map(n=>(0,b.jsx)(v,{subcategory:n,items:t[e]?.[n]??[],onToggle:s},n)),n&&Object.values(_()).some(Boolean)&&(0,b.jsx)(j,{adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:i,getAutoconfigHandler:o})]})}function S({icon:e,title:t,description:s,presetId:n,onEnable:r}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("hr",{}),(0,b.jsxs)("h3",{children:[e," ",t]}),(0,b.jsx)("p",{children:s}),(0,b.jsx)(u.Button,{variant:"secondary",onClick:()=>r(n),__next40pxDefaultSize:!0,children:(0,c.__)("Enable","zenpress")})]})}const C=[{id:"corporate-website",icon:"🖼️",title:(0,c.__)("Corporate website","zenpress"),description:(0,c.__)("Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives.","zenpress")},{id:"blog",icon:"📰",title:(0,c.__)("Blog","zenpress"),description:(0,c.__)("Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.","zenpress")},{id:"ecommerce",icon:"🛒",title:(0,c.__)("E-commerce","zenpress"),description:(0,c.__)("Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout.","zenpress")}];function E({onEnablePreset:e}){return(0,b.jsx)("div",{className:"zenpress-presets",children:(0,b.jsxs)("div",{className:"zenpress-presets-description",children:[(0,b.jsx)("h2",{children:(0,c.__)("Pick configuration preset","zenpress")}),(0,b.jsx)("p",{children:(0,c.__)("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")}),C.map(t=>(0,b.jsx)(S,{icon:t.icon,title:t.title,description:t.description,presetId:t.id,onEnable:e},t.id))]})})}const k=()=>{const{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:u,isSaving:g}=(()=>{const[e,t]=(0,n.useState)({}),[s,r]=(0,n.useState)(!1),[l,d]=(0,n.useState)(!1),{createSuccessNotice:p,createErrorNotice:u}=(0,i.useDispatch)(o.store);return(0,n.useEffect)(()=>{let e=!1;return(async()=>{try{const s=await a()({path:"/wp/v2/settings"});if(e)return;const n=Array.isArray(s?.zenpress_active_snippets)?s.zenpress_active_snippets:[],i=window?.zenpressSnippetsMeta,o=i&&"object"==typeof i&&!Array.isArray(i)?i:{},c={};Object.keys(o).forEach(e=>{c[e]={...o[e],"enable-snippet":n.includes(e)}}),t(c),r(!0===s?.zenpress_admin_bar_enabled)}catch{e||u((0,c.__)("Failed to load settings.","zenpress"))}})(),()=>{e=!0}},[u]),{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:async()=>{d(!0);const t=Object.keys(e).filter(t=>e[t]?.["enable-snippet"]);try{await a()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:t,zenpress_admin_bar_enabled:s}}),p((0,c.__)("Settings saved.","zenpress"))}catch{u((0,c.__)("Failed to save settings.","zenpress"))}finally{d(!1)}},isSaving:l}})(),{autoconfigBusy:m,getHandler:_}=function(){const[e,t]=(0,n.useState)(null),{createSuccessNotice:s,createErrorNotice:r}=(0,i.useDispatch)(o.store),c=async(e,n,i,o)=>{if("string"==typeof n&&n.startsWith("/")){t(e);try{const e=await a()({path:n,method:"POST"});s(e?.message||i)}catch{r(o)}finally{t(null)}}else r(o)};return{autoconfigBusy:e,runAutoconfig:c,getHandler:e=>{const t=l.find(t=>t.key===e);return t?()=>c(t.key,t.path,t.successMessage,t.errorMessage):()=>{}}}}(),[z,v]=(0,n.useState)(),{grouped:x,sortedCategories:j}=(0,n.useMemo)(()=>function(e){const t={};if(!e||"object"!=typeof e||Array.isArray(e))return{grouped:t,sortedCategories:[]};Object.keys(e).forEach(s=>{const n=e[s],r=(n?.category||(0,c.__)("Uncategorized","zenpress")).toLowerCase(),a=(n?.subcategory||(0,c.__)("uncategorized","zenpress")).toLowerCase();t[r]||(t[r]={}),t[r][a]||(t[r][a]=[]),t[r][a].push({name:s,data:n})});const s=Object.keys(t).sort((e,t)=>{const s=d.indexOf(e.toLowerCase()),n=d.indexOf(t.toLowerCase());return-1!==s&&-1!==n?s-n:-1!==s?-1:-1!==n?1:e.localeCompare(t,void 0,{sensitivity:"base"})});return{grouped:t,sortedCategories:s}}(e),[e]),S=e=>{t(t=>({...t,[e]:{...t[e],"enable-snippet":!t[e]?.["enable-snippet"]}}))};return(0,n.useEffect)(()=>{!z&&j.length>0&&v(j[0])},[z,j]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),g||u())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u,g]),(0,b.jsxs)("article",{className:"zenpress-row",children:[(0,b.jsxs)("section",{className:"zenpress-main",children:[(0,b.jsx)("div",{className:"zenpress-notices",children:(0,b.jsx)(h,{})}),(0,b.jsxs)("div",{className:"zenpress-panel",children:[(0,b.jsxs)(f,{orientation:"vertical",selectedTabId:z,onSelect:v,children:[(0,b.jsx)(f.TabList,{children:j.map(e=>{const t=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,b.jsx)(f.Tab,{tabId:e,title:p(e),className:t,children:p(e)},e)})}),j.map(e=>(0,b.jsx)(f.TabPanel,{tabId:e,children:(0,b.jsx)(w,{category:e,groupedSnippets:x,onToggle:S,showIntegrations:"tools"===e,adminBarEnabled:s,setAdminBarEnabled:r,autoconfigBusy:m,getAutoconfigHandler:_})},e))]}),(0,b.jsx)(y,{onEnableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!0}}),t})},onDisableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!1}}),t})},onSave:u,isSaving:g})]})]}),(0,b.jsx)("aside",{className:"zenpress-sidebar",children:(0,b.jsx)(E,{onEnablePreset:e=>{t(t=>{const s={};return Object.entries(t).forEach(([t,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);s[t]={...n,"enable-snippet":r}}),s})}})})]})};s()(()=>{const e=document.getElementById("zenpress-settings");e&&e instanceof HTMLElement&&(0,n.createRoot)(e).render((0,b.jsx)(k,{}))})})();1 (()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var s=e.n(t);const n=window.wp.element,r=window.wp.apiFetch;var a=e.n(r);const o=window.wp.data,i=window.wp.notices,c=window.wp.i18n,l=[{key:"autoptimize",path:"/zenpress/v1/autoconfig/autoptimize",successMessage:(0,c.__)("Autoptimize configured.","zenpress"),errorMessage:(0,c.__)("Autoptimize setup failed. Is Autoptimize installed and active?","zenpress"),buttonLabel:(0,c.__)("Set up Autoptimize","zenpress"),helpText:(0,c.__)("Apply recommended settings: minify JS and CSS, combine CSS, static file caching, 404 fallbacks.","zenpress")},{key:"cache_enabler",path:"/zenpress/v1/autoconfig/cache-enabler",successMessage:(0,c.__)("Cache Enabler configured.","zenpress"),errorMessage:(0,c.__)("Cache Enabler setup failed. Is Cache Enabler installed and active?","zenpress"),buttonLabel:(0,c.__)("Set up Cache Enabler","zenpress"),helpText:(0,c.__)("Apply recommended settings: clear cache on content changes, WebP, compression, minify HTML.","zenpress")},{key:"sqlite_object_cache",path:"/zenpress/v1/autoconfig/sqlite-object-cache",successMessage:(0,c.__)("SQLite Object Cache configured.","zenpress"),errorMessage:(0,c.__)("SQLite Object Cache setup failed. Is it installed and active?","zenpress"),buttonLabel:(0,c.__)("Set up SQLite Object Cache","zenpress"),helpText:(0,c.__)('Apply recommended settings. Enable "Use APCu" in the plugin if available.',"zenpress")}],p=["core","gutenberg","woocommerce","ads-blocker","tools"];function d(e){return null==e||"string"!=typeof e?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}const u=window.wp.components,b=window.ReactJSXRuntime,h=()=>{const{removeNotice:e}=(0,o.useDispatch)(i.store),t=(0,o.useSelect)(e=>e(i.store).getNotices(),[]);return t&&0!==t.length?(0,b.jsx)(u.NoticeList,{notices:t,onRemove:e}):null},g=(0,n.createContext)(),f=({selectedTabId:e,onSelect:t,orientation:s="horizontal",children:r})=>{const[a,o]=(0,n.useState)(),i=(0,n.useRef)(null),c=void 0!==e?e:a;return(0,b.jsx)(g.Provider,{value:{selectedTabId:c,onSelect:s=>{void 0===e&&o(s),t?.(s)},orientation:s,getOrderedTabIds:()=>i.current?Array.from(i.current.querySelectorAll('[role="tab"]')).map(e=>{const t=e.getAttribute("id");return t?t.replace("zenpress-tab-",""):null}).filter(Boolean):[],tabListRef:i},children:(0,b.jsx)("div",{className:`zenpress-tabs zenpress-tabs--${s}`,children:r})})};f.TabList=({children:e})=>{const{orientation:t,tabListRef:s}=(0,n.useContext)(g);return(0,b.jsx)("div",{ref:s,className:`zenpress-tabs__list zenpress-tabs__list--${t}`,role:"tablist","aria-orientation":t,children:e})},f.Tab=({tabId:e,title:t,className:s="",children:r})=>{const{selectedTabId:a,onSelect:o,orientation:i,getOrderedTabIds:c}=(0,n.useContext)(g),l=a===e,p=(0,n.useRef)(null);return(0,b.jsx)("button",{ref:p,className:`zenpress-tabs__tab ${l?"zenpress-tabs__tab--is-active":""} ${s}`.trim(),role:"tab","aria-selected":l,"aria-controls":`zenpress-tab-panel-${e}`,id:`zenpress-tab-${e}`,tabIndex:l?0:-1,onClick:()=>o(e),onKeyDown:t=>{const s=c();if(!s||0===s.length)return;const n=s.indexOf(e);if(-1===n)return;let r=n;if("vertical"===i?"ArrowDown"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowUp"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1):"ArrowRight"===t.key?(t.preventDefault(),r=n<s.length-1?n+1:0):"ArrowLeft"===t.key&&(t.preventDefault(),r=n>0?n-1:s.length-1),"Home"===t.key?(t.preventDefault(),r=0):"End"===t.key&&(t.preventDefault(),r=s.length-1)," "===t.key||"Enter"===t.key)return t.preventDefault(),void o(e);if(r!==n&&r>=0&&r<s.length){const e=s[r],t=document.getElementById(`zenpress-tab-${e}`);t&&(t.focus(),o(e))}},onFocus:()=>{l||o(e)},children:t||r})},f.TabPanel=({tabId:e,children:t})=>{const{selectedTabId:s}=(0,n.useContext)(g),r=(0,n.useRef)(null),a=s===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,b.jsx)("div",{ref:r,className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,children:t}):(0,b.jsx)("div",{className:"zenpress-tabs__panel",role:"tabpanel",id:`zenpress-tab-panel-${e}`,"aria-labelledby":`zenpress-tab-${e}`,hidden:!0,children:t})};const m=({onClick:e,isBusy:t})=>(0,b.jsx)(u.Button,{variant:"primary",onClick:e,isBusy:t,__next40pxDefaultSize:!0,children:(0,c.__)("Save","zenpress")});function y({onEnableAll:e,onDisableAll:t,onSave:s,isSaving:n}){return(0,b.jsxs)("div",{className:"zenpress-actions",children:[(0,b.jsxs)("div",{className:"zenpress-actions-bulk",children:[(0,b.jsx)(u.Button,{variant:"tertiary",onClick:e,__next40pxDefaultSize:!0,children:(0,c.__)("Enable all","zenpress")}),(0,b.jsx)(u.Button,{isDestructive:!0,onClick:t,__next40pxDefaultSize:!0,children:(0,c.__)("Disable all","zenpress")})]}),(0,b.jsx)(m,{onClick:s,isBusy:n})]})}function _(){const e="undefined"!=typeof window?window.zenpressIntegrationsActive:null;return!e||"object"!=typeof e||Array.isArray(e)?{}:e}const z=({label:e,value:t,onChange:s,help:r})=>{const a=(0,n.useRef)(null);return(0,n.useLayoutEffect)(()=>((e,t)=>{if(!e)return;const s=s=>{if("Enter"===s.key){const n=e.querySelector('input[type="checkbox"]'),r=e.ownerDocument||document;n&&(r.activeElement===n||e.contains(r.activeElement))&&(s.preventDefault(),s.stopPropagation(),t())}};return e.addEventListener("keydown",s),()=>{e.removeEventListener("keydown",s)}})(a.current,s),[s]),(0,b.jsx)("div",{ref:a,children:(0,b.jsx)(u.ToggleControl,{label:e,checked:t,onChange:s,help:r,__nextHasNoMarginBottom:!0})})};function v({subcategory:e,items:t,onToggle:s}){const n=e.toLowerCase().replace(/\s+/g,"-");return(0,b.jsxs)("div",{className:`zenpress-subcategory zenpress-subcategory-${n}`,children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:d(e)}),t.map(({name:e,data:t})=>(0,b.jsx)(z,{label:t.title||e,value:t?.["enable-snippet"]||!1,onChange:()=>s(e),help:t.description||""},e))]},e)}function x({integrationKey:e,buttonLabel:t,helpText:s,onClick:n,busyKey:r}){const a=r===e;return(0,b.jsxs)("div",{className:"zenpress-autoconfig-actions",children:[(0,b.jsx)(u.Button,{variant:"secondary",onClick:n,disabled:null!==r,__next40pxDefaultSize:!0,children:a?(0,c.__)("Applying…","zenpress"):t}),(0,b.jsx)("p",{className:"zenpress-autoconfig-help",children:s})]})}function j({adminBarEnabled:e,setAdminBarEnabled:t,autoconfigBusy:s,getAutoconfigHandler:n}){return(0,b.jsxs)("div",{className:"zenpress-subcategory zenpress-subcategory-integrations",children:[(0,b.jsx)("hr",{}),(0,b.jsx)("h3",{children:(0,c.__)("Integrations","zenpress")}),(0,b.jsx)(z,{label:(0,c.__)("Show cache actions in admin bar","zenpress"),value:e,onChange:()=>t(!e),help:(0,c.__)('Adds a ZenPress menu to the admin bar with "Clear all caches" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins\' own admin bar buttons.',"zenpress")}),l.filter(e=>_()[e.key]).map(e=>(0,b.jsx)(x,{integrationKey:e.key,buttonLabel:e.buttonLabel,helpText:e.helpText,onClick:n(e.key),busyKey:s},e.key))]})}function w({category:e,groupedSnippets:t,onToggle:s,showIntegrations:n=!1,adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:o,getAutoconfigHandler:i}){const c=Object.keys(t[e]||{}).sort();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{children:d(e)}),c.map(n=>(0,b.jsx)(v,{subcategory:n,items:t[e]?.[n]??[],onToggle:s},n)),n&&Object.values(_()).some(Boolean)&&(0,b.jsx)(j,{adminBarEnabled:r,setAdminBarEnabled:a,autoconfigBusy:o,getAutoconfigHandler:i})]})}function S({icon:e,title:t,description:s,presetId:n,onEnable:r}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("hr",{}),(0,b.jsxs)("h3",{children:[e," ",t]}),(0,b.jsx)("p",{children:s}),(0,b.jsx)(u.Button,{variant:"secondary",onClick:()=>r(n),__next40pxDefaultSize:!0,children:(0,c.__)("Apply preset","zenpress")})]})}const E=[{id:"corporate-website",icon:"🖼️",title:(0,c.__)("Corporate website","zenpress"),description:(0,c.__)("For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives.","zenpress")},{id:"blog",icon:"📰",title:(0,c.__)("Blog","zenpress"),description:(0,c.__)("For content-focused blogs. Keeps RSS and other blog features while improving performance and security.","zenpress")},{id:"ecommerce",icon:"🛒",title:(0,c.__)("E-commerce","zenpress"),description:(0,c.__)("For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout.","zenpress")}];function A({onEnablePreset:e}){return(0,b.jsx)("div",{className:"zenpress-presets",children:(0,b.jsxs)("div",{className:"zenpress-presets-description",children:[(0,b.jsx)("h2",{children:(0,c.__)("Choose a preset","zenpress")}),(0,b.jsx)("p",{children:(0,c.__)("Not sure what to enable? Choose a preset that matches your site. Each preset turns on a set of features for that type of site.","zenpress")}),E.map(t=>(0,b.jsx)(S,{icon:t.icon,title:t.title,description:t.description,presetId:t.id,onEnable:e},t.id))]})})}const C=()=>{const{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:u,isSaving:g}=(()=>{const[e,t]=(0,n.useState)({}),[s,r]=(0,n.useState)(!1),[l,p]=(0,n.useState)(!1),{createSuccessNotice:d,createErrorNotice:u}=(0,o.useDispatch)(i.store);return(0,n.useEffect)(()=>{let e=!1;return(async()=>{try{const s=await a()({path:"/wp/v2/settings"});if(e)return;const n=Array.isArray(s?.zenpress_active_snippets)?s.zenpress_active_snippets:[],o=window?.zenpressSnippetsMeta,i=o&&"object"==typeof o&&!Array.isArray(o)?o:{},c={};Object.keys(i).forEach(e=>{c[e]={...i[e],"enable-snippet":n.includes(e)}}),t(c),r(!0===s?.zenpress_admin_bar_enabled)}catch{e||u((0,c.__)("Settings could not be loaded. Refresh the page.","zenpress"))}})(),()=>{e=!0}},[u]),{snippets:e,setSnippets:t,adminBarEnabled:s,setAdminBarEnabled:r,saveSettings:async()=>{p(!0);const t=Object.keys(e).filter(t=>e[t]?.["enable-snippet"]);try{await a()({path:"/wp/v2/settings",method:"POST",data:{zenpress_active_snippets:t,zenpress_admin_bar_enabled:s}}),d((0,c.__)("Settings saved.","zenpress"))}catch{u((0,c.__)("Settings could not be saved. Try again.","zenpress"))}finally{p(!1)}},isSaving:l}})(),{autoconfigBusy:m,getHandler:_}=function(){const[e,t]=(0,n.useState)(null),{createSuccessNotice:s,createErrorNotice:r}=(0,o.useDispatch)(i.store),c=async(e,n,o,i)=>{if("string"==typeof n&&n.startsWith("/")){t(e);try{const e=await a()({path:n,method:"POST"});s(e?.message||o)}catch{r(i)}finally{t(null)}}else r(i)};return{autoconfigBusy:e,runAutoconfig:c,getHandler:e=>{const t=l.find(t=>t.key===e);return t?()=>c(t.key,t.path,t.successMessage,t.errorMessage):()=>{}}}}(),[z,v]=(0,n.useState)(),{grouped:x,sortedCategories:j}=(0,n.useMemo)(()=>function(e){const t={};if(!e||"object"!=typeof e||Array.isArray(e))return{grouped:t,sortedCategories:[]};Object.keys(e).forEach(s=>{const n=e[s],r=(n?.category||(0,c.__)("Uncategorized","zenpress")).toLowerCase(),a=(n?.subcategory||(0,c.__)("Uncategorized","zenpress")).toLowerCase();t[r]||(t[r]={}),t[r][a]||(t[r][a]=[]),t[r][a].push({name:s,data:n})});const s=Object.keys(t).sort((e,t)=>{const s=p.indexOf(e.toLowerCase()),n=p.indexOf(t.toLowerCase());return-1!==s&&-1!==n?s-n:-1!==s?-1:-1!==n?1:e.localeCompare(t,void 0,{sensitivity:"base"})});return{grouped:t,sortedCategories:s}}(e),[e]),S=e=>{t(t=>({...t,[e]:{...t[e],"enable-snippet":!t[e]?.["enable-snippet"]}}))};return(0,n.useEffect)(()=>{!z&&j.length>0&&v(j[0])},[z,j]),(0,n.useEffect)(()=>{const e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),g||u())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u,g]),(0,b.jsxs)("article",{className:"zenpress-row",children:[(0,b.jsxs)("section",{className:"zenpress-main",children:[(0,b.jsx)("div",{className:"zenpress-notices",children:(0,b.jsx)(h,{})}),(0,b.jsxs)("div",{className:"zenpress-panel",children:[(0,b.jsxs)(f,{orientation:"vertical",selectedTabId:z,onSelect:v,children:[(0,b.jsx)(f.TabList,{children:j.map(e=>{const t=`zenpress-tabs__tab--category-${e.toLowerCase().replace(/\s+/g,"-")}`;return(0,b.jsx)(f.Tab,{tabId:e,title:d(e),className:t,children:d(e)},e)})}),j.map(e=>(0,b.jsx)(f.TabPanel,{tabId:e,children:(0,b.jsx)(w,{category:e,groupedSnippets:x,onToggle:S,showIntegrations:"tools"===e,adminBarEnabled:s,setAdminBarEnabled:r,autoconfigBusy:m,getAutoconfigHandler:_})},e))]}),(0,b.jsx)(y,{onEnableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!0}}),t})},onDisableAll:()=>{t(e=>{const t={};return Object.keys(e).forEach(s=>{t[s]={...e[s],"enable-snippet":!1}}),t})},onSave:u,isSaving:g})]})]}),(0,b.jsx)("aside",{className:"zenpress-sidebar",children:(0,b.jsx)(A,{onEnablePreset:e=>{t(t=>{const s={};return Object.entries(t).forEach(([t,n])=>{const r=(Array.isArray(n?.preset)?n.preset:[]).includes(e);s[t]={...n,"enable-snippet":r}}),s})}})})]})};s()(()=>{const e=document.getElementById("zenpress-settings");e&&e instanceof HTMLElement&&(0,n.createRoot)(e).render((0,b.jsx)(C,{}))})})(); -
zenpress/trunk/assets/src/js/components/BulkSnippetActions.js
r3452689 r3470504 27 27 __next40pxDefaultSize 28 28 > 29 {__('Enable all actions', 'zenpress')}29 {__('Enable all', 'zenpress')} 30 30 </Button> 31 31 <Button … … 34 34 __next40pxDefaultSize 35 35 > 36 {__('Disable all actions', 'zenpress')}36 {__('Disable all', 'zenpress')} 37 37 </Button> 38 38 </div> -
zenpress/trunk/assets/src/js/components/IntegrationsBlock.js
r3452689 r3470504 26 26 <h3>{__('Integrations', 'zenpress')}</h3> 27 27 <SnippetToggleControl 28 label={__('Show ZenPress admin bar button', 'zenpress')}28 label={__('Show cache actions in admin bar', 'zenpress')} 29 29 value={adminBarEnabled} 30 30 onChange={() => setAdminBarEnabled(!adminBarEnabled)} 31 31 help={__( 32 ' Show a ZenPress item in the admin bar with "Clear all caches" and sub-items for each active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, AutOptimize, or SQLite Object Cache is active. When enabled, those plugins\' own admin bar buttons are hidden.',32 'Adds a ZenPress menu to the admin bar with "Clear all caches" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins\' own admin bar buttons.', 33 33 'zenpress' 34 34 )} -
zenpress/trunk/assets/src/js/components/PresetCard.js
r3452689 r3470504 26 26 __next40pxDefaultSize 27 27 > 28 {__(' Enable', 'zenpress')}28 {__('Apply preset', 'zenpress')} 29 29 </Button> 30 30 </> -
zenpress/trunk/assets/src/js/components/PresetsSidebar.js
r3452689 r3470504 8 8 title: __('Corporate website', 'zenpress'), 9 9 description: __( 10 ' Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feedsand author archives.',10 'For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives.', 11 11 'zenpress' 12 12 ), … … 17 17 title: __('Blog', 'zenpress'), 18 18 description: __( 19 ' Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.',19 'For content-focused blogs. Keeps RSS and other blog features while improving performance and security.', 20 20 'zenpress' 21 21 ), … … 26 26 title: __('E-commerce', 'zenpress'), 27 27 description: __( 28 ' Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specificoptimizations for faster checkout.',28 'For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout.', 29 29 'zenpress' 30 30 ), … … 43 43 <div className="zenpress-presets"> 44 44 <div className="zenpress-presets-description"> 45 <h2>{__(' Pick configurationpreset', 'zenpress')}</h2>45 <h2>{__('Choose a preset', 'zenpress')}</h2> 46 46 <p> 47 47 {__( 48 "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.",48 'Not sure what to enable? Choose a preset that matches your site. Each preset turns on a set of features for that type of site.', 49 49 'zenpress' 50 50 )} -
zenpress/trunk/assets/src/js/components/SaveButton.js
r3448585 r3470504 18 18 __next40pxDefaultSize 19 19 > 20 {__('Save settings', 'zenpress')}20 {__('Save', 'zenpress')} 21 21 </Button> 22 22 ); -
zenpress/trunk/assets/src/js/config/integrations.js
r3452689 r3470504 9 9 key: 'autoptimize', 10 10 path: '/zenpress/v1/autoconfig/autoptimize', 11 successMessage: __('Autoptimize has beenconfigured.', 'zenpress'),11 successMessage: __('Autoptimize configured.', 'zenpress'), 12 12 errorMessage: __( 13 'Autoptimize autoconfigfailed. Is Autoptimize installed and active?',13 'Autoptimize setup failed. Is Autoptimize installed and active?', 14 14 'zenpress' 15 15 ), 16 buttonLabel: __('Set up Autoptimize', 'zenpress'),16 buttonLabel: __('Set up Autoptimize', 'zenpress'), 17 17 helpText: __( 18 'Apply recommended Autoptimize settings: Minify JS & CSS, aggregate CSS, static files, 404 fallbacks.',18 'Apply recommended settings: minify JS and CSS, combine CSS, static file caching, 404 fallbacks.', 19 19 'zenpress' 20 20 ), … … 23 23 key: 'cache_enabler', 24 24 path: '/zenpress/v1/autoconfig/cache-enabler', 25 successMessage: __('Cache Enabler has beenconfigured.', 'zenpress'),25 successMessage: __('Cache Enabler configured.', 'zenpress'), 26 26 errorMessage: __( 27 'Cache Enabler autoconfigfailed. Is Cache Enabler installed and active?',27 'Cache Enabler setup failed. Is Cache Enabler installed and active?', 28 28 'zenpress' 29 29 ), 30 buttonLabel: __('Set up Cache Enabler', 'zenpress'),30 buttonLabel: __('Set up Cache Enabler', 'zenpress'), 31 31 helpText: __( 32 'Apply recommended Cache Enabler settings: Clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS).',32 'Apply recommended settings: clear cache on content changes, WebP, compression, minify HTML.', 33 33 'zenpress' 34 34 ), … … 37 37 key: 'sqlite_object_cache', 38 38 path: '/zenpress/v1/autoconfig/sqlite-object-cache', 39 successMessage: __( 40 'SQLite Object Cache has been configured.', 39 successMessage: __('SQLite Object Cache configured.', 'zenpress'), 40 errorMessage: __( 41 'SQLite Object Cache setup failed. Is it installed and active?', 41 42 'zenpress' 42 43 ), 43 errorMessage: __( 44 'SQLite Object Cache autoconfig failed. Is SQLite Object Cache installed and active?', 45 'zenpress' 46 ), 47 buttonLabel: __('Setup SQLite Object Cache', 'zenpress'), 44 buttonLabel: __('Set up SQLite Object Cache', 'zenpress'), 48 45 helpText: __( 49 'Apply recommended SQLite Object Cache settings. Enable "Use APCu" if APCu isavailable.',46 'Apply recommended settings. Enable "Use APCu" in the plugin if available.', 50 47 'zenpress' 51 48 ), -
zenpress/trunk/assets/src/js/hooks/useSettings.js
r3452689 r3470504 56 56 if (!cancelled) { 57 57 createErrorNotice( 58 __('Failed to load settings.', 'zenpress') 58 __( 59 'Settings could not be loaded. Refresh the page.', 60 'zenpress' 61 ) 59 62 ); 60 63 } … … 85 88 createSuccessNotice(__('Settings saved.', 'zenpress')); 86 89 } catch { 87 createErrorNotice(__('Failed to save settings.', 'zenpress')); 90 createErrorNotice( 91 __('Settings could not be saved. Try again.', 'zenpress') 92 ); 88 93 } finally { 89 94 setIsSaving(false); -
zenpress/trunk/assets/src/js/utils/snippets.js
r3452689 r3470504 44 44 ).toLowerCase(); 45 45 const subcategory = ( 46 snippet?.subcategory || __(' uncategorized', 'zenpress')46 snippet?.subcategory || __('Uncategorized', 'zenpress') 47 47 ).toLowerCase(); 48 48 -
zenpress/trunk/inc/admin/links.php
r3452689 r3470504 17 17 '<a href="%s" aria-label="%s">%s</a>', 18 18 esc_url($url), 19 esc_attr__('Go to ZenPress settings page', 'zenpress'),19 esc_attr__('Go to ZenPress settings', 'zenpress'), 20 20 esc_html__('Settings', 'zenpress') 21 21 ); … … 38 38 '<a href="%s" target="_blank" rel="noopener noreferrer" aria-label="%s">%s</a>', 39 39 esc_url('https://wordpress.org/plugins/zenpress/#developers'), 40 esc_attr__('View ZenPress changelog on WordPress.org (opens in anew tab)', 'zenpress'),40 esc_attr__('View ZenPress changelog on WordPress.org (opens in new tab)', 'zenpress'), 41 41 esc_html__('Changelog', 'zenpress') 42 42 ), … … 44 44 '<a href="%s" target="_blank" rel="noopener noreferrer" aria-label="%s">%s</a>', 45 45 esc_url('https://holdmywp.com/zenpress/'), 46 esc_attr__('Read ZenPress documentation (opens in anew tab)', 'zenpress'),47 esc_html__('Doc s', 'zenpress')46 esc_attr__('Read ZenPress documentation (opens in new tab)', 'zenpress'), 47 esc_html__('Documentation', 'zenpress') 48 48 ), 49 49 sprintf( 50 50 '<a href="%s" target="_blank" rel="noopener noreferrer" aria-label="%s">%s</a>', 51 51 esc_url('https://buymeacoffee.com/quentinld'), 52 esc_attr__('Support ZenPress by buying a coffee (opens in anew tab)', 'zenpress'),53 esc_html__('Support ☕', 'zenpress')52 esc_attr__('Support ZenPress: Buy me a coffee (opens in new tab)', 'zenpress'), 53 esc_html__('Support', 'zenpress') 54 54 ) 55 55 ]; -
zenpress/trunk/inc/admin/menu.php
r3451904 r3470504 11 11 function zenpress_add_option_page(): void { 12 12 add_options_page( 13 __(' ZenPress options', 'zenpress'),13 __('Settings', 'zenpress'), 14 14 __('ZenPress', 'zenpress'), 15 15 'manage_options', … … 36 36 target="_blank" 37 37 rel="noopener noreferrer" 38 aria-label="<?php echo esc_attr__('View ZenPress changelog on WordPress.org (opens in anew tab)', 'zenpress'); ?>">39 <?php echo esc_html__('What\'s new ?', 'zenpress'); ?>38 aria-label="<?php echo esc_attr__('View ZenPress changelog on WordPress.org (opens in new tab)', 'zenpress'); ?>"> 39 <?php echo esc_html__('What\'s new', 'zenpress'); ?> 40 40 </a> 41 41 </p> … … 46 46 target="_blank" 47 47 rel="noopener noreferrer" 48 aria-label="<?php echo esc_attr__('Read the ZenPress documentation (opens in anew tab)', 'zenpress'); ?>">48 aria-label="<?php echo esc_attr__('Read ZenPress documentation (opens in new tab)', 'zenpress'); ?>"> 49 49 <?php echo esc_html__('Documentation', 'zenpress'); ?> 50 50 </a> … … 52 52 target="_blank" 53 53 rel="noopener noreferrer" 54 aria-label="<?php echo esc_attr__('Leave a review for ZenPress on WordPress.org (opens in anew tab)', 'zenpress'); ?>">55 <?php echo esc_html__('Leave a review (helps a lot)', 'zenpress'); ?>54 aria-label="<?php echo esc_attr__('Leave a review for ZenPress on WordPress.org (opens in new tab)', 'zenpress'); ?>"> 55 <?php echo esc_html__('Leave a review', 'zenpress'); ?> 56 56 </a> 57 57 <a href="https://buymeacoffee.com/quentinld" … … 59 59 rel="noopener noreferrer" 60 60 class="components-button is-next-40px-default-size is-tertiary" 61 aria-label="<?php echo esc_attr__('Support development: Buy me a coffee (opens in anew tab)', 'zenpress'); ?>">61 aria-label="<?php echo esc_attr__('Support development: Buy me a coffee (opens in new tab)', 'zenpress'); ?>"> 62 62 <?php echo esc_html__('Buy me a coffee', 'zenpress'); ?> <span aria-hidden="true">☕</span> 63 63 </a> … … 68 68 <div class="zenpress-loading-body"> 69 69 <p class="zenpress-loading-text"> 70 <?php echo esc_html__('Loading your ZenPresssettings…', 'zenpress'); ?>70 <?php echo esc_html__('Loading settings…', 'zenpress'); ?> 71 71 </p> 72 72 </div> … … 75 75 <footer class="zenpress-footer"> 76 76 <div class="zenpress-footer-title"> 77 <p> 78 <?php echo esc_html__('Made ', 'zenpress'); ?> 79 <span aria-hidden="true"> x ❤️ </span> 80 <?php echo esc_html__(' by Quentin Le Duff - Your WordPress Partner', 'zenpress'); ?> 81 </p> 77 <?php 78 echo wp_kses_post(sprintf( 79 /* translators: 1: decorative heart emoji, 2: author name */ 80 __('Made with %1$s by %2$s', 'zenpress'), 81 '<span aria-hidden="true">❤️</span>', 82 'Quentin Le Duff' 83 )); 84 ?> 82 85 </div> 83 86 <div class="zenpress-footer-navigation"> … … 85 88 target="_blank" 86 89 rel="noopener noreferrer" 87 aria-label="<?php echo esc_attr__('Visit e the developper website', 'zenpress'); ?>">88 <?php echo esc_html__(' My place', 'zenpress'); ?>90 aria-label="<?php echo esc_attr__('Visit the developer website (opens in new tab)', 'zenpress'); ?>"> 91 <?php echo esc_html__('Developer website', 'zenpress'); ?> 89 92 </a> 90 93 <a href="https://github.com/quentin-ld/zenpress" 91 94 target="_blank" 92 95 rel="noopener noreferrer" 93 aria-label="<?php echo esc_attr__(' Review the code on Github', 'zenpress'); ?>">94 <?php echo esc_html__(' ZenPress code repository', 'zenpress'); ?>96 aria-label="<?php echo esc_attr__('View ZenPress source code on GitHub (opens in new tab)', 'zenpress'); ?>"> 97 <?php echo esc_html__('Source code', 'zenpress'); ?> 95 98 </a> 96 99 </div> -
zenpress/trunk/inc/classes/integrations.php
r3452689 r3470504 134 134 return self::run_rest_autoconfig( 135 135 [ZenPress_Autoptimize::class, 'autoconfig'], 136 __('Autoptimize has beenconfigured.', 'zenpress'),136 __('Autoptimize configured.', 'zenpress'), 137 137 __('Autoptimize configuration failed.', 'zenpress') 138 138 ); … … 145 145 return self::run_rest_autoconfig( 146 146 [ZenPress_Cache_Enabler::class, 'autoconfig'], 147 __('Cache Enabler has beenconfigured.', 'zenpress'),147 __('Cache Enabler configured.', 'zenpress'), 148 148 __('Cache Enabler configuration failed.', 'zenpress') 149 149 ); … … 156 156 return self::run_rest_autoconfig( 157 157 [ZenPress_Sqlite_Object_Cache::class, 'autoconfig'], 158 __('SQLite Object Cache has beenconfigured.', 'zenpress'),158 __('SQLite Object Cache configured.', 'zenpress'), 159 159 __('SQLite Object Cache configuration failed.', 'zenpress') 160 160 ); … … 204 204 'href' => wp_nonce_url(add_query_arg('clear', 'all', $base_url), 'zenpress_clear_caches'), 205 205 'meta' => [ 206 'title' => __('Clear all caches (page cache, static assets, object cache).', 'zenpress'),206 'title' => __('Clear page cache, static assets cache, and object cache.', 'zenpress'), 207 207 ], 208 208 ]); … … 212 212 'id' => 'zenpress-clear-cache-enabler', 213 213 'parent' => 'zenpress', 214 'title' => __('Clear page s caches', 'zenpress'),214 'title' => __('Clear page cache', 'zenpress'), 215 215 'href' => wp_nonce_url(add_query_arg('clear', 'cache_enabler', $base_url), 'zenpress_clear_caches'), 216 216 'meta' => [ … … 224 224 'id' => 'zenpress-clear-autoptimize', 225 225 'parent' => 'zenpress', 226 'title' => __('Clear static assets cache s(CSS/JS)', 'zenpress'),226 'title' => __('Clear static assets cache (CSS/JS)', 'zenpress'), 227 227 'href' => wp_nonce_url(add_query_arg('clear', 'autoptimize', $base_url), 'zenpress_clear_caches'), 228 228 'meta' => [ … … 263 263 private static function get_single_cleared_message(string $slug): string { 264 264 /* translators: 1: cache type (e.g. Page cache), 2: plugin name (e.g. Cache Enabler) */ 265 $format = __('%1$s ( Managed by %2$s) has beencleared successfully.', 'zenpress');265 $format = __('%1$s (managed by %2$s) cleared successfully.', 'zenpress'); 266 266 switch ($slug) { 267 267 case 'cache_enabler': … … 315 315 return sprintf( 316 316 /* translators: %s: cache type (e.g. Page cache) */ 317 __('%s has beencleared successfully.', 'zenpress'),317 __('%s cleared successfully.', 'zenpress'), 318 318 $types[0] 319 319 ); … … 324 324 return sprintf( 325 325 /* translators: %s: comma-separated list of cache types */ 326 __('%s have beencleared successfully.', 'zenpress'),326 __('%s cleared successfully.', 'zenpress'), 327 327 $list 328 328 ); … … 351 351 public static function ajax_clear_caches(): void { 352 352 if (!current_user_can('manage_options')) { 353 wp_die(esc_html__(' Forbidden', 'zenpress'), '', ['response' => 403]);353 wp_die(esc_html__('You don\'t have permission to do that.', 'zenpress'), '', ['response' => 403]); 354 354 } 355 355 $nonce = isset($_REQUEST['_wpnonce']) ? sanitize_text_field(wp_unslash((string) $_REQUEST['_wpnonce'])) : ''; 356 356 if (!wp_verify_nonce($nonce, 'zenpress_clear_caches')) { 357 wp_die(esc_html__(' Forbidden', 'zenpress'), '', ['response' => 403]);357 wp_die(esc_html__('You don\'t have permission to do that.', 'zenpress'), '', ['response' => 403]); 358 358 } 359 359 … … 363 363 do_action('zenpress_caches_clear'); 364 364 } catch (\Throwable $e) { 365 wp_die(esc_html__('C ache clear failed.', 'zenpress'), '', ['response' => 500]);365 wp_die(esc_html__('Clearing cache failed. Try again.', 'zenpress'), '', ['response' => 500]); 366 366 } 367 367 $message = self::get_all_cleared_message(); … … 373 373 } 374 374 } catch (\Throwable $e) { 375 wp_die(esc_html__('C ache clear failed.', 'zenpress'), '', ['response' => 500]);375 wp_die(esc_html__('Clearing cache failed. Try again.', 'zenpress'), '', ['response' => 500]); 376 376 } 377 377 $message = self::get_single_cleared_message($clear); 378 378 } else { 379 wp_die(esc_html__('Invalid request. ', 'zenpress'), '', ['response' => 400]);379 wp_die(esc_html__('Invalid request. Please refresh and try again.', 'zenpress'), '', ['response' => 400]); 380 380 } 381 381 -
zenpress/trunk/inc/snippets/functions/block-user-enumeration.php
r3448604 r3470504 9 9 $zenpress_query_string = isset($_SERVER['QUERY_STRING']) ? sanitize_text_field(wp_unslash($_SERVER['QUERY_STRING'])) : ''; 10 10 if (preg_match('/author=([0-9]+)/i', $zenpress_query_string)) { 11 wp_die(esc_html__(' Access denied.', 'zenpress'), '', ['response' => 403]);11 wp_die(esc_html__('You don\'t have permission to view this.', 'zenpress'), '', ['response' => 403]); 12 12 } 13 13 … … 17 17 static function (string|false $redirect, string $request): string|false { 18 18 if (preg_match('/\?author=([0-9]+)(\/*)/i', sanitize_text_field(wp_unslash($request)))) { 19 wp_die(esc_html__(' Access denied.', 'zenpress'), '', ['response' => 403]);19 wp_die(esc_html__('You don\'t have permission to view this.', 'zenpress'), '', ['response' => 403]); 20 20 } 21 21 -
zenpress/trunk/inc/snippets/functions/disable-rest-api.php
r3448604 r3470504 54 54 add_filter('rest_authentication_errors', static function (WP_Error|bool|null $access) use ($zenpress_disable_wp_rest_api_allow_access): WP_Error|bool|null { 55 55 if (!is_user_logged_in() && !$zenpress_disable_wp_rest_api_allow_access()) { 56 $message = apply_filters('zenpress_disable_wp_rest_api_error', __(' REST API restricted to authenticated users.', 'zenpress'));56 $message = apply_filters('zenpress_disable_wp_rest_api_error', __('You must be logged in to use this.', 'zenpress')); 57 57 58 58 return new WP_Error('rest_login_required', $message, ['status' => rest_authorization_required_code()]); -
zenpress/trunk/inc/snippets/functions/protect-wp-login.php
r3451904 r3470504 7 7 // Remove detailed login errors 8 8 add_filter('login_errors', static function (): string { 9 return __(' Login error.', 'zenpress');9 return __('Something went wrong. Try again.', 'zenpress'); 10 10 }); 11 11 … … 36 36 if (get_transient($blockKey)) { 37 37 wp_die( 38 esc_html__('Too many failed login attempts. Try again later.', 'zenpress'),38 esc_html__('Too many failed attempts. Try again in a few minutes.', 'zenpress'), 39 39 '', 40 40 ['response' => 403] … … 50 50 set_transient($blockKey, true, $BLOCK_DURATION); 51 51 wp_die( 52 esc_html__('Too many failed login attempts. Try again later.', 'zenpress'),52 esc_html__('Too many failed attempts. Try again in a few minutes.', 'zenpress'), 53 53 '', 54 54 ['response' => 403] -
zenpress/trunk/inc/snippets/meta/block-user-enumeration.meta.php
r3412245 r3470504 13 13 'title' => __('Block user enumeration', 'zenpress'), 14 14 'description' => __( 15 ' Prevents attackers from guessing WordPress usernames by blocking requests with the `author` parameter in query strings or permalinks. Reduces exposure to brute-force and user-targeted attacks.',15 'Stops visitors from discovering usernames via author URLs. Reduces brute-force risk.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/clean-admin-bar.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Clean up the WordPressadmin bar', 'zenpress'),13 'title' => __('Clean up the admin bar', 'zenpress'), 14 14 'description' => __( 15 15 'Removes unnecessary items from the admin bar in both backend and frontend. Reduces clutter and simplifies the interface.', -
zenpress/trunk/inc/snippets/meta/clean-dashboard-items.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Clean up the WordPressDashboard', 'zenpress'),13 'title' => __('Clean up the Dashboard', 'zenpress'), 14 14 'description' => __( 15 'Removes unnecessary and ad widgets from the dashboard. Declutters the admin area and improves usability.',15 'Removes unnecessary and promotional widgets from the Dashboard.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-adjacent-posts.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable adjacent posts link tags', 'zenpress'),13 'title' => __('Disable prev/next post links in head', 'zenpress'), 14 14 'description' => __( 15 15 'Removes rel="prev" and rel="next" tags from wp_head. Reduces unnecessary HTML output and slightly improves performance.', -
zenpress/trunk/inc/snippets/meta/disable-application-passwords.meta.php
r3448585 r3470504 13 13 'title' => __('Disable application passwords', 'zenpress'), 14 14 'description' => __( 15 ' Disables WordPress application passwords for all users. Improves security; do not enable if you need API or app-based authentication (e.g. mobile apps, REST clients).',15 'Turns off application passwords for everyone. Turn this off if you use mobile apps or other apps that log in to WordPress.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-author-archives.meta.php
r3412245 r3470504 13 13 'title' => __('Disable author archives', 'zenpress'), 14 14 'description' => __( 15 ' Forces author archive pages to return a 404 error. Prevents user enumeration and hides unnecessary author pages.',15 'Author archive URLs show "Page not found." Helps prevent listing usernames.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-autosave.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable autosave ', 'zenpress'),13 'title' => __('Disable autosave (classic editor)', 'zenpress'), 14 14 'description' => __( 15 15 'Stops the classic editor from autosaving drafts periodically. Reduces database writes and heartbeat traffic. The block editor may still use its own autosave; this targets the legacy post editor.', -
zenpress/trunk/inc/snippets/meta/disable-capital-p-dangit.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Disable capital_P_dangit filter', 'zenpress'),13 'title' => __('Disable "WordPress" spelling correction', 'zenpress'), 14 14 'description' => __( 15 ' Removes the filter that forces "Wordpress" to "WordPress" in titles, content, comments, and widget text. Saves a small amount of processing on each page load.',15 'Stops WordPress from changing "Wordpress" to "WordPress" in content. Saves a small amount of work on each page.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-dashicons.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable dashicons', 'zenpress'),13 'title' => __('Disable Dashicons (admin icons)', 'zenpress'), 14 14 'description' => __( 15 ' Prevents WordPress from loading the Dashicons CSS for visitors who are not logged in. Improves frontend performance by reducing unnecessary styles.',15 'Stops Dashicons (admin icons) from loading for visitors. Logged-in users still see them.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-default-pattern-categories.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable default pattern categories in site editor', 'zenpress'),14 'description' => __('Removes default pattern categories from the block pattern inserter in the site editor (e.g. 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 ones. Simplifies the interface; patterns remain accessible.', 'zenpress'),13 'title' => __('Disable default pattern categories in Site Editor', 'zenpress'), 14 'description' => __('Removes default pattern categories from the block inserter. Patterns are still available; the list is simpler.', 'zenpress'), 15 15 'category' => __('gutenberg', 'zenpress'), 16 16 'subcategory' => __('user-interface', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-jquery-migrate.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable jQuery migrate', 'zenpress'),13 'title' => __('Disable jQuery Migrate script', 'zenpress'), 14 14 'description' => __( 15 ' Removes jQuery Migrate from loading on the frontend while keeping it enabled in the admin. Improves frontend performance and reduces legacy overhead.',15 'Loads jQuery Migrate only in the admin, not on the front. Improves front-end performance.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-login-language-selector.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable thelogin language selector', 'zenpress'),13 'title' => __('Disable login language selector', 'zenpress'), 14 14 'description' => __('Removes the language dropdown from the WordPress login page. Simplifies login screen and reduces distractions.', 'zenpress'), 15 15 'category' => __('core', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-password-strength-meter.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Disable Password Strength Meter', 'zenpress'),13 'title' => __('Disable password strength meter', 'zenpress'), 14 14 'description' => __( 15 ' Prevents the password strength meter and zxcvbn scripts from loading on profile, login, and similar pages. Saves roughly 400KB and reduces script parsing. Users will not see the strength indicator when choosing passwords.',15 'Stops the password strength meter from loading on login and profile pages. Saves about 400KB. Users won\'t see how strong their password is.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/disable-pingback-trackback.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable pingback and trackback', 'zenpress'),13 'title' => __('Disable pingbacks and trackbacks', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-rest-api.meta.php
r3448585 r3470504 12 12 13 13 return [ 14 'title' => __(' Disable REST API for visitors not logged into WordPress', 'zenpress'),14 'title' => __('Limit REST API to logged-in users', 'zenpress'), 15 15 'description' => __( 16 ' Restricts the WP REST API to logged-in users only; unauthenticated requests receive an error. Bypass filters (zenpress_disable_wp_rest_api_post_var, zenpress_disable_wp_rest_api_server_var) allow specific integrations (e.g. webhooks); use non-guessable values only.',16 'Only logged-in users can use the REST API. Visitors get an error. Advanced: filters let you allow specific tools; use with care.', 17 17 'zenpress' 18 18 ), -
zenpress/trunk/inc/snippets/meta/disable-rss.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable all WordPress feeds (RDF, RSS, RSS2, Atom, andcomments)', 'zenpress'),13 'title' => __('Disable all feeds (RSS, Atom, comments)', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-shortlink.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WordPressshortlink', 'zenpress'),13 'title' => __('Disable shortlink', 'zenpress'), 14 14 'description' => __('Removes shortlink functionality from both the HTML head and HTTP headers. Reduces unnecessary output, improves performance and SEO clarity.', 'zenpress'), 15 15 'category' => __('core', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-wlw-manifest.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable W LWlink', 'zenpress'),14 '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'),13 'title' => __('Disable Windows Live Writer link', 'zenpress'), 14 'description' => __('Removes the old Windows Live Writer link from the page. Safe to disable.', 'zenpress'), 15 15 'category' => __('core', 'zenpress'), 16 16 'subcategory' => __('performance', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WooCommerce cart fragments script', 'zenpress'),14 '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 requirelive cart updates.', 'zenpress'),13 'title' => __('Disable WooCommerce cart fragments', 'zenpress'), 14 'description' => __('Stops the script that updates the cart without reloading the page. Turn off if you don\'t need live cart updates.', 'zenpress'), 15 15 'category' => __('woocommerce', 'zenpress'), 16 16 'subcategory' => __('performance', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WooCommerce scripts and styles on non- WooCommercepages', 'zenpress'),13 'title' => __('Disable WooCommerce scripts and styles on non-shop pages', 'zenpress'), 14 14 '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 15 'category' => __('woocommerce', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable unnecessary Stripe scripts on WooCommercepages', 'zenpress'),13 'title' => __('Disable Stripe scripts on product and cart pages', 'zenpress'), 14 14 '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 15 'category' => __('woocommerce', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/disable-wordpress-default-lazy-loading.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Disable WordPress default lazy loading', 'zenpress'),13 'title' => __('Disable default lazy loading for images', 'zenpress'), 14 14 'description' => __( 15 15 'Stops WordPress from adding loading="lazy" to images and iframes. Use only if you rely on a theme, plugin, or CDN for lazy loading, or if you prefer to load all media immediately.', -
zenpress/trunk/inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __('Disable XML-RPC and removeRSD link', 'zenpress'),13 'title' => __('Disable XML-RPC and RSD link', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/limit-post-revisions.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Limit post revision to 10', 'zenpress'),13 'title' => __('Limit post revisions to 10', 'zenpress'), 14 14 'description' => __( 15 15 'Keeps at most 10 revisions per post (or page). Older revisions are deleted when new ones are created. Reduces database size and improves performance.', -
zenpress/trunk/inc/snippets/meta/protect-wp-login.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Protect the wp-login form from brute force attacks', 'zenpress'),14 'description' => __(' Removes detailed login error messages and limits failed login attempts per IP. Blocks further attempts for 5 minutes after 5 failed tries. Mitigates brute-force attacks.', 'zenpress'),13 'title' => __('Protect login from brute force', 'zenpress'), 14 'description' => __('Hides detailed login errors and limits failed attempts per IP. After 5 failed tries, blocks that IP for 5 minutes.', 'zenpress'), 15 15 'category' => __('tools', 'zenpress'), 16 16 'subcategory' => __('security', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Remove WordPress default remoteblock patterns', 'zenpress'),13 'title' => __('Remove WordPress default block patterns', 'zenpress'), 14 14 '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 15 'category' => __('gutenberg', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/remove-help-button.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Remove "Help" button', 'zenpress'),13 'title' => __('Remove Help tab', 'zenpress'), 14 14 'description' => __( 15 'Hides the Help tab and panel on all admin screens. Reduces clutter for users who do not use the in-app help.',15 'Hides the Help tab on all admin screens. Reduces clutter if you don\'t use in-app help.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/remove-rest-api-link.meta.php
r3448585 r3470504 11 11 12 12 return [ 13 'title' => __('Remove REST API links ', 'zenpress'),13 'title' => __('Remove REST API links from page source', 'zenpress'), 14 14 '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 15 'category' => __('core', 'zenpress'), -
zenpress/trunk/inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Remove "Thanks for using WordPress" infooter', 'zenpress'),13 'title' => __('Remove "Thanks for using WordPress" from footer', 'zenpress'), 14 14 'description' => __( 15 'Removes the "Thank you for creating withWordPress" message from the admin footer.',15 'Removes the "Thanks for using WordPress" message from the admin footer.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/remove-wordpress-logo.meta.php
r3451916 r3470504 11 11 12 12 return [ 13 'title' => __('Remove WordPress logo ', 'zenpress'),13 'title' => __('Remove WordPress logo from admin bar', 'zenpress'), 14 14 'description' => __( 15 'Removes the WordPress logo and its dropdownfrom the admin bar.',15 'Removes the WordPress logo and its menu from the admin bar.', 16 16 'zenpress' 17 17 ), -
zenpress/trunk/inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php
r3412245 r3470504 11 11 12 12 return [ 13 'title' => __(' Separate loading of core block styles', 'zenpress'),13 'title' => __('Load block styles separately', 'zenpress'), 14 14 '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 15 'category' => __('gutenberg', 'zenpress'), -
zenpress/trunk/languages/zenpress.pot
r3452689 r3470504 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: ZenPress - Optimize & Secure 2.2.4\n"5 "Project-Id-Version: ZenPress 2.2.5\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/zenpress\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-02- 03T08:48:39+00:00\n"12 "POT-Creation-Date: 2026-02-26T16:25:36+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 17 17 #. Plugin Name of the plugin 18 18 #: zenpress.php 19 msgid "ZenPress - Optimize & Secure" 19 #: inc/admin/menu.php:14 20 #: inc/admin/menu.php:31 21 msgid "ZenPress" 20 22 msgstr "" 21 23 … … 27 29 #. Description of the plugin 28 30 #: zenpress.php 29 msgid " Easily speed up and strengthen your WordPress site in one click: clean out unnecessary features, protect weak points, autoconfigure cache integrations."31 msgid "Speed up and harden your site with a single click: cleans up unused features, protects security gaps, and configures cache integrations automatically." 30 32 msgstr "" 31 33 … … 41 43 42 44 #: inc/admin/links.php:19 43 msgid "Go to ZenPress settings page"45 msgid "Go to ZenPress settings" 44 46 msgstr "" 45 47 46 48 #: inc/admin/links.php:20 49 #: inc/admin/menu.php:13 47 50 msgid "Settings" 48 51 msgstr "" … … 50 53 #: inc/admin/links.php:40 51 54 #: inc/admin/menu.php:38 52 msgid "View ZenPress changelog on WordPress.org (opens in anew tab)"55 msgid "View ZenPress changelog on WordPress.org (opens in new tab)" 53 56 msgstr "" 54 57 … … 58 61 59 62 #: inc/admin/links.php:46 60 msgid "Read ZenPress documentation (opens in a new tab)" 63 #: inc/admin/menu.php:48 64 msgid "Read ZenPress documentation (opens in new tab)" 61 65 msgstr "" 62 66 63 67 #: inc/admin/links.php:47 64 msgid "Docs" 68 #: inc/admin/menu.php:49 69 msgid "Documentation" 65 70 msgstr "" 66 71 67 72 #: inc/admin/links.php:52 68 msgid "Support ZenPress by buying a coffee (opens in anew tab)"73 msgid "Support ZenPress: Buy me a coffee (opens in new tab)" 69 74 msgstr "" 70 75 71 76 #: inc/admin/links.php:53 72 msgid "Support ☕" 73 msgstr "" 74 75 #: inc/admin/menu.php:13 76 msgid "ZenPress options" 77 msgstr "" 78 79 #: inc/admin/menu.php:14 80 #: inc/admin/menu.php:31 81 msgid "ZenPress" 77 msgid "Support" 82 78 msgstr "" 83 79 … … 87 83 88 84 #: inc/admin/menu.php:39 89 msgid "What's new ?" 90 msgstr "" 91 92 #: inc/admin/menu.php:48 93 msgid "Read the ZenPress documentation (opens in a new tab)" 94 msgstr "" 95 96 #: inc/admin/menu.php:49 97 msgid "Documentation" 85 msgid "What's new" 98 86 msgstr "" 99 87 100 88 #: inc/admin/menu.php:54 101 msgid "Leave a review for ZenPress on WordPress.org (opens in anew tab)"89 msgid "Leave a review for ZenPress on WordPress.org (opens in new tab)" 102 90 msgstr "" 103 91 104 92 #: inc/admin/menu.php:55 105 msgid "Leave a review (helps a lot)"93 msgid "Leave a review" 106 94 msgstr "" 107 95 108 96 #: inc/admin/menu.php:61 109 msgid "Support development: Buy me a coffee (opens in anew tab)"97 msgid "Support development: Buy me a coffee (opens in new tab)" 110 98 msgstr "" 111 99 … … 115 103 116 104 #: inc/admin/menu.php:70 117 msgid "Loading your ZenPress settings…" 118 msgstr "" 119 120 #: inc/admin/menu.php:78 121 msgid "Made " 122 msgstr "" 123 105 msgid "Loading settings…" 106 msgstr "" 107 108 #. translators: 1: decorative heart emoji, 2: author name 124 109 #: inc/admin/menu.php:80 125 msgid " by Quentin Le Duff - Your WordPress Partner" 126 msgstr "" 127 128 #: inc/admin/menu.php:87 129 msgid "Visite the developper website" 130 msgstr "" 131 132 #: inc/admin/menu.php:88 133 msgid "My place" 134 msgstr "" 135 136 #: inc/admin/menu.php:93 137 msgid "Review the code on Github" 138 msgstr "" 139 140 #: inc/admin/menu.php:94 141 msgid "ZenPress code repository" 110 #, php-format 111 msgid "Made with %1$s by %2$s" 112 msgstr "" 113 114 #: inc/admin/menu.php:90 115 msgid "Visit the developer website (opens in new tab)" 116 msgstr "" 117 118 #: inc/admin/menu.php:91 119 msgid "Developer website" 120 msgstr "" 121 122 #: inc/admin/menu.php:96 123 msgid "View ZenPress source code on GitHub (opens in new tab)" 124 msgstr "" 125 126 #: inc/admin/menu.php:97 127 msgid "Source code" 142 128 msgstr "" 143 129 144 130 #: inc/classes/integrations.php:136 145 #: assets/build/index.js:1146 131 #: assets/src/js/config/integrations.js:11 147 msgid "Autoptimize has beenconfigured."132 msgid "Autoptimize configured." 148 133 msgstr "" 149 134 … … 153 138 154 139 #: inc/classes/integrations.php:147 155 #: assets/build/index.js:1156 140 #: assets/src/js/config/integrations.js:25 157 msgid "Cache Enabler has beenconfigured."141 msgid "Cache Enabler configured." 158 142 msgstr "" 159 143 … … 163 147 164 148 #: inc/classes/integrations.php:158 165 #: assets/build/index.js:1166 149 #: assets/src/js/config/integrations.js:39 167 msgid "SQLite Object Cache has beenconfigured."150 msgid "SQLite Object Cache configured." 168 151 msgstr "" 169 152 … … 177 160 178 161 #: inc/classes/integrations.php:206 179 msgid "Clear all caches (page cache, static assets, object cache)."162 msgid "Clear page cache, static assets cache, and object cache." 180 163 msgstr "" 181 164 182 165 #: inc/classes/integrations.php:214 183 msgid "Clear page s caches"166 msgid "Clear page cache" 184 167 msgstr "" 185 168 … … 189 172 190 173 #: inc/classes/integrations.php:226 191 msgid "Clear static assets cache s(CSS/JS)"174 msgid "Clear static assets cache (CSS/JS)" 192 175 msgstr "" 193 176 … … 207 190 #: inc/classes/integrations.php:265 208 191 #, php-format 209 msgid "%1$s ( Managed by %2$s) has beencleared successfully."192 msgid "%1$s (managed by %2$s) cleared successfully." 210 193 msgstr "" 211 194 … … 246 229 247 230 #. translators: %s: cache type (e.g. Page cache) 231 #. translators: %s: comma-separated list of cache types 248 232 #: inc/classes/integrations.php:317 233 #: inc/classes/integrations.php:326 249 234 #, php-format 250 msgid "%s has beencleared successfully."235 msgid "%s cleared successfully." 251 236 msgstr "" 252 237 … … 255 240 msgstr "" 256 241 257 #. translators: %s: comma-separated list of cache types258 #: inc/classes/integrations.php:326259 #, php-format260 msgid "%s have been cleared successfully."261 msgstr ""262 263 242 #: inc/classes/integrations.php:353 264 243 #: inc/classes/integrations.php:357 265 msgid " Forbidden"244 msgid "You don't have permission to do that." 266 245 msgstr "" 267 246 268 247 #: inc/classes/integrations.php:365 269 248 #: inc/classes/integrations.php:375 270 msgid "C ache clear failed."249 msgid "Clearing cache failed. Try again." 271 250 msgstr "" 272 251 273 252 #: inc/classes/integrations.php:379 274 msgid "Invalid request. "253 msgid "Invalid request. Please refresh and try again." 275 254 msgstr "" 276 255 277 256 #: inc/snippets/functions/block-user-enumeration.php:11 278 257 #: inc/snippets/functions/block-user-enumeration.php:19 279 msgid " Access denied."258 msgid "You don't have permission to view this." 280 259 msgstr "" 281 260 282 261 #: inc/snippets/functions/disable-rest-api.php:56 283 msgid " REST API restricted to authenticated users."262 msgid "You must be logged in to use this." 284 263 msgstr "" 285 264 286 265 #: inc/snippets/functions/protect-wp-login.php:9 287 msgid " Login error."266 msgid "Something went wrong. Try again." 288 267 msgstr "" 289 268 290 269 #: inc/snippets/functions/protect-wp-login.php:38 291 270 #: inc/snippets/functions/protect-wp-login.php:52 292 msgid "Too many failed login attempts. Try again later."271 msgid "Too many failed attempts. Try again in a few minutes." 293 272 msgstr "" 294 273 … … 298 277 299 278 #: inc/snippets/meta/block-user-enumeration.meta.php:14 300 msgid " Prevents attackers from guessing WordPress usernames by blocking requests with the `author` parameter in query strings or permalinks. Reduces exposure to brute-force and user-targeted attacks."279 msgid "Stops visitors from discovering usernames via author URLs. Reduces brute-force risk." 301 280 msgstr "" 302 281 … … 345 324 346 325 #: inc/snippets/meta/clean-admin-bar.meta.php:13 347 msgid "Clean up the WordPressadmin bar"326 msgid "Clean up the admin bar" 348 327 msgstr "" 349 328 … … 363 342 364 343 #: inc/snippets/meta/clean-dashboard-items.meta.php:13 365 msgid "Clean up the WordPressDashboard"344 msgid "Clean up the Dashboard" 366 345 msgstr "" 367 346 368 347 #: inc/snippets/meta/clean-dashboard-items.meta.php:14 369 msgid "Removes unnecessary and ad widgets from the dashboard. Declutters the admin area and improves usability."348 msgid "Removes unnecessary and promotional widgets from the Dashboard." 370 349 msgstr "" 371 350 … … 375 354 376 355 #: inc/snippets/meta/disable-adjacent-posts.meta.php:13 377 msgid "Disable adjacent posts link tags"356 msgid "Disable prev/next post links in head" 378 357 msgstr "" 379 358 … … 413 392 414 393 #: inc/snippets/meta/disable-application-passwords.meta.php:14 415 msgid " Disables WordPress application passwords for all users. Improves security; do not enable if you need API or app-based authentication (e.g. mobile apps, REST clients)."394 msgid "Turns off application passwords for everyone. Turn this off if you use mobile apps or other apps that log in to WordPress." 416 395 msgstr "" 417 396 … … 421 400 422 401 #: inc/snippets/meta/disable-author-archives.meta.php:14 423 msgid " Forces author archive pages to return a 404 error. Prevents user enumeration and hides unnecessary author pages."402 msgid "Author archive URLs show \"Page not found.\" Helps prevent listing usernames." 424 403 msgstr "" 425 404 426 405 #: inc/snippets/meta/disable-autosave.meta.php:13 427 msgid "Disable autosave "406 msgid "Disable autosave (classic editor)" 428 407 msgstr "" 429 408 … … 433 412 434 413 #: inc/snippets/meta/disable-capital-p-dangit.meta.php:13 435 msgid "Disable capital_P_dangit filter"414 msgid "Disable \"WordPress\" spelling correction" 436 415 msgstr "" 437 416 438 417 #: inc/snippets/meta/disable-capital-p-dangit.meta.php:14 439 msgid " Removes the filter that forces \"Wordpress\" to \"WordPress\" in titles, content, comments, and widget text. Saves a small amount of processing on each page load."418 msgid "Stops WordPress from changing \"Wordpress\" to \"WordPress\" in content. Saves a small amount of work on each page." 440 419 msgstr "" 441 420 442 421 #: inc/snippets/meta/disable-dashicons.meta.php:13 443 msgid "Disable dashicons"422 msgid "Disable Dashicons (admin icons)" 444 423 msgstr "" 445 424 446 425 #: inc/snippets/meta/disable-dashicons.meta.php:14 447 msgid " Prevents WordPress from loading the Dashicons CSS for visitors who are not logged in. Improves frontend performance by reducing unnecessary styles."426 msgid "Stops Dashicons (admin icons) from loading for visitors. Logged-in users still see them." 448 427 msgstr "" 449 428 450 429 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:13 451 msgid "Disable default pattern categories in site editor"430 msgid "Disable default pattern categories in Site Editor" 452 431 msgstr "" 453 432 454 433 #: inc/snippets/meta/disable-default-pattern-categories.meta.php:14 455 msgid "Removes default pattern categories from the block pattern inserter in the site editor (e.g. 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 ones. Simplifies the interface; patterns remain accessible."434 msgid "Removes default pattern categories from the block inserter. Patterns are still available; the list is simpler." 456 435 msgstr "" 457 436 … … 479 458 480 459 #: inc/snippets/meta/disable-jquery-migrate.meta.php:13 481 msgid "Disable jQuery migrate"460 msgid "Disable jQuery Migrate script" 482 461 msgstr "" 483 462 484 463 #: inc/snippets/meta/disable-jquery-migrate.meta.php:14 485 msgid " Removes jQuery Migrate from loading on the frontend while keeping it enabled in the admin. Improves frontend performance and reduces legacy overhead."464 msgid "Loads jQuery Migrate only in the admin, not on the front. Improves front-end performance." 486 465 msgstr "" 487 466 488 467 #: inc/snippets/meta/disable-login-language-selector.meta.php:13 489 msgid "Disable thelogin language selector"468 msgid "Disable login language selector" 490 469 msgstr "" 491 470 … … 503 482 504 483 #: inc/snippets/meta/disable-password-strength-meter.meta.php:13 505 msgid "Disable Password Strength Meter"484 msgid "Disable password strength meter" 506 485 msgstr "" 507 486 508 487 #: inc/snippets/meta/disable-password-strength-meter.meta.php:14 509 msgid " Prevents the password strength meter and zxcvbn scripts from loading on profile, login, and similar pages. Saves roughly 400KB and reduces script parsing. Users will not see the strength indicator when choosing passwords."488 msgid "Stops the password strength meter from loading on login and profile pages. Saves about 400KB. Users won't see how strong their password is." 510 489 msgstr "" 511 490 … … 519 498 520 499 #: inc/snippets/meta/disable-pingback-trackback.meta.php:13 521 msgid "Disable pingback and trackback"500 msgid "Disable pingbacks and trackbacks" 522 501 msgstr "" 523 502 … … 527 506 528 507 #: inc/snippets/meta/disable-rest-api.meta.php:14 529 msgid " Disable REST API for visitors not logged into WordPress"508 msgid "Limit REST API to logged-in users" 530 509 msgstr "" 531 510 532 511 #: inc/snippets/meta/disable-rest-api.meta.php:15 533 msgid " Restricts the WP REST API to logged-in users only; unauthenticated requests receive an error. Bypass filters (zenpress_disable_wp_rest_api_post_var, zenpress_disable_wp_rest_api_server_var) allow specific integrations (e.g. webhooks); use non-guessable values only."512 msgid "Only logged-in users can use the REST API. Visitors get an error. Advanced: filters let you allow specific tools; use with care." 534 513 msgstr "" 535 514 536 515 #: inc/snippets/meta/disable-rss.meta.php:13 537 msgid "Disable all WordPress feeds (RDF, RSS, RSS2, Atom, andcomments)"516 msgid "Disable all feeds (RSS, Atom, comments)" 538 517 msgstr "" 539 518 … … 543 522 544 523 #: inc/snippets/meta/disable-shortlink.meta.php:13 545 msgid "Disable WordPressshortlink"524 msgid "Disable shortlink" 546 525 msgstr "" 547 526 … … 551 530 552 531 #: inc/snippets/meta/disable-wlw-manifest.meta.php:13 553 msgid "Disable W LWlink"532 msgid "Disable Windows Live Writer link" 554 533 msgstr "" 555 534 556 535 #: inc/snippets/meta/disable-wlw-manifest.meta.php:14 557 msgid "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."536 msgid "Removes the old Windows Live Writer link from the page. Safe to disable." 558 537 msgstr "" 559 538 560 539 #: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:13 561 msgid "Disable WooCommerce cart fragments script"540 msgid "Disable WooCommerce cart fragments" 562 541 msgstr "" 563 542 564 543 #: inc/snippets/meta/disable-woocommerce-cart-fragments.meta.php:14 565 msgid " 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 requirelive cart updates."544 msgid "Stops the script that updates the cart without reloading the page. Turn off if you don't need live cart updates." 566 545 msgstr "" 567 546 … … 576 555 577 556 #: inc/snippets/meta/disable-woocommerce-scripts-styles.meta.php:13 578 msgid "Disable WooCommerce scripts and styles on non- WooCommercepages"557 msgid "Disable WooCommerce scripts and styles on non-shop pages" 579 558 msgstr "" 580 559 … … 584 563 585 564 #: inc/snippets/meta/disable-woocommerce-stripe-scripts.meta.php:13 586 msgid "Disable unnecessary Stripe scripts on WooCommercepages"565 msgid "Disable Stripe scripts on product and cart pages" 587 566 msgstr "" 588 567 … … 600 579 601 580 #: inc/snippets/meta/disable-wordpress-default-lazy-loading.meta.php:13 602 msgid "Disable WordPress default lazy loading"581 msgid "Disable default lazy loading for images" 603 582 msgstr "" 604 583 … … 608 587 609 588 #: inc/snippets/meta/disable-xmlrpc-rsdlink.meta.php:13 610 msgid "Disable XML-RPC and removeRSD link"589 msgid "Disable XML-RPC and RSD link" 611 590 msgstr "" 612 591 … … 632 611 633 612 #: inc/snippets/meta/limit-post-revisions.meta.php:13 634 msgid "Limit post revision to 10"613 msgid "Limit post revisions to 10" 635 614 msgstr "" 636 615 … … 640 619 641 620 #: inc/snippets/meta/protect-wp-login.meta.php:13 642 msgid "Protect the wp-login form from brute force attacks"621 msgid "Protect login from brute force" 643 622 msgstr "" 644 623 645 624 #: inc/snippets/meta/protect-wp-login.meta.php:14 646 msgid " Removes detailed login error messages and limits failed login attempts per IP. Blocks further attempts for 5 minutes after 5 failed tries. Mitigates brute-force attacks."625 msgid "Hides detailed login errors and limits failed attempts per IP. After 5 failed tries, blocks that IP for 5 minutes." 647 626 msgstr "" 648 627 … … 652 631 653 632 #: inc/snippets/meta/remove-gutenberg-unwanted-block-patterns.meta.php:13 654 msgid "Remove WordPress default remoteblock patterns"633 msgid "Remove WordPress default block patterns" 655 634 msgstr "" 656 635 … … 660 639 661 640 #: inc/snippets/meta/remove-help-button.meta.php:13 662 msgid "Remove \"Help\" button"641 msgid "Remove Help tab" 663 642 msgstr "" 664 643 665 644 #: inc/snippets/meta/remove-help-button.meta.php:14 666 msgid "Hides the Help tab and panel on all admin screens. Reduces clutter for users who do not use the in-app help."645 msgid "Hides the Help tab on all admin screens. Reduces clutter if you don't use in-app help." 667 646 msgstr "" 668 647 669 648 #: inc/snippets/meta/remove-rest-api-link.meta.php:13 670 msgid "Remove REST API links "649 msgid "Remove REST API links from page source" 671 650 msgstr "" 672 651 … … 676 655 677 656 #: inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php:13 678 msgid "Remove \"Thanks for using WordPress\" infooter"657 msgid "Remove \"Thanks for using WordPress\" from footer" 679 658 msgstr "" 680 659 681 660 #: inc/snippets/meta/remove-thanks-for-using-wordpress-in-footer.meta.php:14 682 msgid "Removes the \"Thank you for creating withWordPress\" message from the admin footer."661 msgid "Removes the \"Thanks for using WordPress\" message from the admin footer." 683 662 msgstr "" 684 663 … … 692 671 693 672 #: inc/snippets/meta/remove-wordpress-logo.meta.php:13 694 msgid "Remove WordPress logo "673 msgid "Remove WordPress logo from admin bar" 695 674 msgstr "" 696 675 697 676 #: inc/snippets/meta/remove-wordpress-logo.meta.php:14 698 msgid "Removes the WordPress logo and its dropdownfrom the admin bar."677 msgid "Removes the WordPress logo and its menu from the admin bar." 699 678 msgstr "" 700 679 701 680 #: inc/snippets/meta/separate-gutenberg-core-block-styles.meta.php:13 702 msgid " Separate loading of core block styles"681 msgid "Load block styles separately" 703 682 msgstr "" 704 683 … … 707 686 msgstr "" 708 687 709 #: assets/build/index.js:1710 #: assets/src/js/config/integrations.js:12711 msgid "Autoptimize autoconfig failed. Is Autoptimize installed and active?"712 msgstr ""713 714 #: assets/build/index.js:1715 #: assets/src/js/config/integrations.js:16716 msgid "Setup Autoptimize"717 msgstr ""718 719 #: assets/build/index.js:1720 #: assets/src/js/config/integrations.js:17721 msgid "Apply recommended Autoptimize settings: Minify JS & CSS, aggregate CSS, static files, 404 fallbacks."722 msgstr ""723 724 #: assets/build/index.js:1725 #: assets/src/js/config/integrations.js:26726 msgid "Cache Enabler autoconfig failed. Is Cache Enabler installed and active?"727 msgstr ""728 729 #: assets/build/index.js:1730 #: assets/src/js/config/integrations.js:30731 msgid "Setup Cache Enabler"732 msgstr ""733 734 #: assets/build/index.js:1735 #: assets/src/js/config/integrations.js:31736 msgid "Apply recommended Cache Enabler settings: Clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS)."737 msgstr ""738 739 #: assets/build/index.js:1740 #: assets/src/js/config/integrations.js:43741 msgid "SQLite Object Cache autoconfig failed. Is SQLite Object Cache installed and active?"742 msgstr ""743 744 #: assets/build/index.js:1745 #: assets/src/js/config/integrations.js:47746 msgid "Setup SQLite Object Cache"747 msgstr ""748 749 #: assets/build/index.js:1750 #: assets/src/js/config/integrations.js:48751 msgid "Apply recommended SQLite Object Cache settings. Enable \"Use APCu\" if APCu is available."752 msgstr ""753 754 #: assets/build/index.js:1755 #: assets/src/js/components/SaveButton.js:20756 msgid "Save settings"757 msgstr ""758 759 #: assets/build/index.js:1760 #: assets/src/js/components/BulkSnippetActions.js:29761 msgid "Enable all actions"762 msgstr ""763 764 #: assets/build/index.js:1765 #: assets/src/js/components/BulkSnippetActions.js:36766 msgid "Disable all actions"767 msgstr ""768 769 #: assets/build/index.js:1770 688 #: assets/src/js/components/AutoconfigButton.js:32 771 689 msgid "Applying…" 772 690 msgstr "" 773 691 774 #: assets/build/index.js:1 692 #: assets/src/js/components/BulkSnippetActions.js:29 693 msgid "Enable all" 694 msgstr "" 695 696 #: assets/src/js/components/BulkSnippetActions.js:36 697 msgid "Disable all" 698 msgstr "" 699 775 700 #: assets/src/js/components/IntegrationsBlock.js:26 776 701 msgid "Integrations" 777 702 msgstr "" 778 703 779 #: assets/build/index.js:1780 704 #: assets/src/js/components/IntegrationsBlock.js:28 781 msgid "Show ZenPress admin bar button" 782 msgstr "" 783 784 #: assets/build/index.js:1 705 msgid "Show cache actions in admin bar" 706 msgstr "" 707 785 708 #: assets/src/js/components/IntegrationsBlock.js:31 786 msgid "Show a ZenPress item in the admin bar with \"Clear all caches\" and sub-items for each active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, AutOptimize, or SQLite Object Cache is active. When enabled, those plugins' own admin bar buttons are hidden." 787 msgstr "" 788 789 #: assets/build/index.js:1 709 msgid "Adds a ZenPress menu to the admin bar with \"Clear all caches\" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins' own admin bar buttons." 710 msgstr "" 711 790 712 #: assets/src/js/components/PresetCard.js:28 791 msgid "Enable" 792 msgstr "" 793 794 #: assets/build/index.js:1 713 msgid "Apply preset" 714 msgstr "" 715 795 716 #: assets/src/js/components/PresetsSidebar.js:8 796 717 msgid "Corporate website" 797 718 msgstr "" 798 719 799 #: assets/build/index.js:1800 720 #: assets/src/js/components/PresetsSidebar.js:9 801 msgid "Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feeds and author archives." 802 msgstr "" 803 804 #: assets/build/index.js:1 721 msgid "For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives." 722 msgstr "" 723 805 724 #: assets/src/js/components/PresetsSidebar.js:17 806 725 msgid "Blog" 807 726 msgstr "" 808 727 809 #: assets/build/index.js:1810 728 #: assets/src/js/components/PresetsSidebar.js:18 811 msgid "Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds." 812 msgstr "" 813 814 #: assets/build/index.js:1 729 msgid "For content-focused blogs. Keeps RSS and other blog features while improving performance and security." 730 msgstr "" 731 815 732 #: assets/src/js/components/PresetsSidebar.js:26 816 733 msgid "E-commerce" 817 734 msgstr "" 818 735 819 #: assets/build/index.js:1820 736 #: assets/src/js/components/PresetsSidebar.js:27 821 msgid "Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specific optimizations for faster checkout." 822 msgstr "" 823 824 #: assets/build/index.js:1 737 msgid "For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout." 738 msgstr "" 739 825 740 #: assets/src/js/components/PresetsSidebar.js:45 826 msgid "Pick configuration preset" 827 msgstr "" 828 829 #: assets/build/index.js:1 741 msgid "Choose a preset" 742 msgstr "" 743 830 744 #: assets/src/js/components/PresetsSidebar.js:47 831 msgid "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." 832 msgstr "" 833 834 #: assets/build/index.js:1 745 msgid "Not sure what to enable? Choose a preset that matches your site. Each preset turns on a set of features for that type of site." 746 msgstr "" 747 748 #: assets/src/js/components/SaveButton.js:20 749 msgid "Save" 750 msgstr "" 751 752 #: assets/src/js/config/integrations.js:12 753 msgid "Autoptimize setup failed. Is Autoptimize installed and active?" 754 msgstr "" 755 756 #: assets/src/js/config/integrations.js:16 757 msgid "Set up Autoptimize" 758 msgstr "" 759 760 #: assets/src/js/config/integrations.js:17 761 msgid "Apply recommended settings: minify JS and CSS, combine CSS, static file caching, 404 fallbacks." 762 msgstr "" 763 764 #: assets/src/js/config/integrations.js:26 765 msgid "Cache Enabler setup failed. Is Cache Enabler installed and active?" 766 msgstr "" 767 768 #: assets/src/js/config/integrations.js:30 769 msgid "Set up Cache Enabler" 770 msgstr "" 771 772 #: assets/src/js/config/integrations.js:31 773 msgid "Apply recommended settings: clear cache on content changes, WebP, compression, minify HTML." 774 msgstr "" 775 776 #: assets/src/js/config/integrations.js:40 777 msgid "SQLite Object Cache setup failed. Is it installed and active?" 778 msgstr "" 779 780 #: assets/src/js/config/integrations.js:44 781 msgid "Set up SQLite Object Cache" 782 msgstr "" 783 784 #: assets/src/js/config/integrations.js:45 785 msgid "Apply recommended settings. Enable \"Use APCu\" in the plugin if available." 786 msgstr "" 787 835 788 #: assets/src/js/hooks/useSettings.js:58 836 msgid "Failed to load settings." 837 msgstr "" 838 839 #: assets/build/index.js:1 840 #: assets/src/js/hooks/useSettings.js:85 789 msgid "Settings could not be loaded. Refresh the page." 790 msgstr "" 791 792 #: assets/src/js/hooks/useSettings.js:88 841 793 msgid "Settings saved." 842 794 msgstr "" 843 795 844 #: assets/build/index.js:1 845 #: assets/src/js/hooks/useSettings.js:87 846 msgid "Failed to save settings." 847 msgstr "" 848 849 #: assets/build/index.js:1 796 #: assets/src/js/hooks/useSettings.js:91 797 msgid "Settings could not be saved. Try again." 798 msgstr "" 799 850 800 #: assets/src/js/utils/snippets.js:43 801 #: assets/src/js/utils/snippets.js:46 851 802 msgid "Uncategorized" 852 803 msgstr "" 853 854 #: assets/build/index.js:1855 #: assets/src/js/utils/snippets.js:46856 msgid "uncategorized"857 msgstr "" -
zenpress/trunk/readme.txt
r3452689 r3470504 1 === ZenPress - Optimize & Secure===1 === ZenPress === 2 2 Contributors: @quentinldd 3 3 Donate link: https://github.com/sponsors/quentin-ld/ … … 5 5 Requires at least: 6.0 6 6 Tested up to: 6.9 7 Stable tag: 2.2. 47 Stable tag: 2.2.5 8 8 Requires PHP: 8.1 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html/ 11 11 12 Easily speed up and strengthen your website in one click: clean out unnecessary features, protect weak points, autoconfigure cache integrations.12 Speed up and harden your site with a single click: cleans up unused features, protects security gaps, and configures cache integrations automatically. 13 13 14 14 == Description == 15 15 16 ZenPress is a lightweight, super-fast plugin that boosts your WordPress & WooCommerce website through a wide range of solid actions. 17 Combined with [Cache Enabler](https://wordpress.org/plugins/cache-enabler/), [Autoptimize](https://wordpress.org/plugins/autoptimize/) and [SQLite Object Cache](https://wordpress.org/plugins/sqlite-object-cache/), ZenPress is a free alternative to major premium performance plugins. 18 This is a simple solution for improving your WordPress website's performance and security while enjoying a simpler and lighter UI without breaking the bank. 19 No database clutter, no ads, no pro version. Just install, activate, select what you need or pick up your settings preset and you are ready to go ! 16 ZenPress is a lightweight, high-performance plugin that improves your WordPress and WooCommerce sites through a range of supportive actions. 17 Combined with [Cache Enabler](https://wordpress.org/plugins/cache-enabler/), [Autoptimize](https://wordpress.org/plugins/autoptimize/) and [SQLite Object Cache](https://wordpress.org/plugins/sqlite-object-cache/), you can use ZenPress as a reliable, free alternative to major premium performance plugins. 18 By integrating directly into the WordPress core interface, ZenPress provides a simpler experience without the need for complex custom dashboards. You can improve your site's performance and security without ads, pro versions, or database clutter. 20 19 21 20 = Why choose ZenPress? = 22 * Curated settings presets included to help you. 23 * Deep integration with the native WordPress interface: no bloat, no extra options page, no weird custom dashboard : only what you need. 24 * Free alternative to major premium performance plugin for everyone. 25 * Make your WordPress website fast & clean by disabling unwanted features. 26 * Improve security by turning off features you don’t use and hardening weak spots. 27 * Eliminate third-party plugin bloat (actually hunting them down). 28 * Ultra lightweight. 29 * Future proof. 21 * Use curated settings presets to help you optimize your site instantly. 22 * Experience deep integration with the WordPress core interface for a lightweight, familiar experience. 23 * Choose a free, reliable alternative to premium performance plugins. 24 * Keep your site fast and clean by disabling unused features. 25 * Harden your security by turning off unused features and protecting weak spots. 26 * Reduce bloat from third-party plugins. 27 * Enjoy an ultra-lightweight and future-proof design. 30 28 31 29 == Features == 32 30 33 Following features are included : 34 35 = Settings subpage 🧰 = 36 * Organized interface with vertical tabs for easy navigation between categories (Core, Gutenberg, WooCommerce, Ads-blocker, 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. 41 * Native WordPress interface, benefits from Gutenberg's new features and the site editor. 42 43 = Core = 44 31 ZenPress includes the following features: 32 33 = Dashboard Settings = 34 * Navigate easily between categories like Core, Gutenberg, and WooCommerce using a structured tabbed interface. 35 * Identify features quickly with visual icons organized by Performance, Security, and User Interface. 36 * Select from three ready-to-use presets: Corporate, Blog, or E-commerce: each optimized for your specific site type. 37 * Understand every choice with concise descriptions that explain the benefits to your site. 38 * Use a fully accessible interface that includes ARIA-compliant tabs and full keyboard navigation support. 39 * Benefit from a design that matches the WordPress core look and feel, supporting the latest block editor features. 40 41 = Core Settings = 45 42 * Block user enumeration. 46 * Clean up the WordPressadmin bar.47 * Disable adjacent posts link tags.48 * Disable all WordPress feeds (RDF, RSS, RSS2, Atom, andcomments).43 * Clean up the admin bar. 44 * Disable "WordPress" spelling correction. 45 * Disable all feeds (RSS, Atom, comments). 49 46 * Disable application passwords. 50 47 * Disable author archives. 51 * Disable autosave .52 * Disable capital_P_dangit filter.53 * Disable d ashicons.48 * Disable autosave (classic editor). 49 * Disable Dashicons (admin icons). 50 * Disable default lazy loading for images. 54 51 * Disable DNS prefetch. 55 * Disable jQuery migrate. 52 * Disable jQuery Migrate script. 53 * Disable login language selector. 56 54 * Disable oEmbed. 57 * Disable Password Strength Meter.55 * Disable password strength meter. 58 56 * Disable PDF thumbnails. 59 * Disable pingback and trackback. 60 * Disable REST API for visitors not logged into WordPress. 61 * Disable the login language selector. 62 * Disable WLW link. 63 * Disable WordPress default lazy loading. 57 * Disable pingbacks and trackbacks. 58 * Disable prev/next post links in head. 59 * Disable shortlink. 60 * Disable Windows Live Writer link. 64 61 * Disable WordPress emoji scripts and styles. 65 * Disable WordPress shortlink. 66 * Disable XML-RPC and remove RSD link. 62 * Disable XML-RPC and RSD link. 67 63 * Hide WordPress version. 68 * Limit post revision to 10. 69 * Remove "Help" button. 70 * Remove "Thanks for using WordPress" in footer.* Remove REST API links. 71 * Remove WordPress logo. 72 73 = WooCommerce = 74 * Disable unnecessary Stripe scripts on WooCommerce pages. 75 * Disable WooCommerce cart fragments script. 76 * Disable WooCommerce scripts and styles on non-WooCommerce pages. 64 * Limit post revisions to 10. 65 * Limit REST API to logged-in users. 66 * Remove "Thanks for using WordPress" from footer. 67 * Remove Help tab. 68 * Remove REST API links from page source. 69 * Remove WordPress logo from admin bar. 70 71 = Gutenberg Settings = 72 * Disable default pattern categories in Site Editor. 73 * Load block styles separately. 74 * Remove WordPress default block patterns. 75 76 = WooCommerce Settings = 77 * Disable Stripe scripts on product and cart pages. 78 * Disable WooCommerce cart fragments. 79 * Disable WooCommerce scripts and styles on non-shop pages. 77 80 * Disable WooCommerce widgets. 78 * Hide WooCommerce version.* Remove WooCommerce default block patterns. 79 80 = Gutenberg = 81 * Disable default pattern categories in site editor. 82 * Remove WordPress default remote block patterns. 83 * Separate loading of core block styles. 84 85 = Ads-blocker = 86 * Clean up the WordPress Dashboard. 87 88 = Tools = 89 * Protect the wp-login form from brute force attacks. 90 * Toggle "Show ZenPress admin bar button": ZenPress item in the admin bar with "Clear all caches" and sub-items per active integration (page cache, static assets, object cache). Visible only when at least one of Cache Enabler, Autoptimize, or SQLite Object Cache is active. When enabled, those plugins' own admin bar buttons are hidden. Toggle via Settings > ZenPress > Tools. 81 * Hide WooCommerce version. 82 * Remove WooCommerce default block patterns. 83 84 = Ads-blocker Settings = 85 * Clean up the Dashboard. 86 87 = Tools Settings = 88 * Protect login from brute force. 89 * Show cache actions in admin bar. 91 90 92 91 = Integrations = … … 94 93 ZenPress integrates with Cache Enabler, Autoptimize, and SQLite Object Cache. When any of these plugins is active, the Tools tab shows integration status and one-click autoconfig actions. 95 94 96 * Admin bar: One "Clear all caches" button (dashicon) in the admin bar, with sub-items to clear page cache (Cache Enabler), static assets (Autoptimize), or object cache (SQLite Object Cache) separately. When the ZenPress admin bar is enabled, the third-party cache buttons (Cache Enabler, Autoptimize, SQLite Object Cache) are hidden. You can hide the ZenPress admin bar via Settings > ZenPress > Tools.97 * Autoptimize: One-click autoconfig enables recommended options (JS/CSS/aggregate/nogzip/fallback on; defer/HTML/logged-in/meta off).98 * Cache Enabler: One-click autoconfig enables clear site cache on post or plugin changes, WebP support, Gzip or Brotli compression, and minify HTML (excluding inline CSS/JS).99 * SQLite Object Cache: One-click autoconfig enables the "Use APCu" option in the plugin settings when the APCu extension isavailable.95 * Admin bar: Adds a ZenPress menu to the admin bar with "Clear all caches" and options for each active cache (page, static files, object cache). Only appears when Cache Enabler, Autoptimize, or SQLite Object Cache is active. Hides those plugins' own admin bar buttons. 96 * Autoptimize: Minify JS and CSS, combine CSS, static file caching, 404 fallbacks. 97 * Cache Enabler: Clear cache on content changes, WebP, compression, minify HTML. 98 * SQLite Object Cache: Enable "Use APCu" in the plugin if available. 100 99 101 100 = Presets = 102 * Corporate website / Portfolio: Optimized for business sites and portfolios. Focuses on security, performance, and removing unnecessary features like RSS feedsand author archives.103 * Blog: Tailored for content-focused blogs. Includes performance and security optimizations while preserving essential blog features like RSS feeds.104 * E-commerce: Designed for WooCommerce stores. Includes all performance and security features plus WooCommerce-specificoptimizations for faster checkout.101 * Corporate website: For business sites and portfolios. Focuses on security, performance, and removing unused features like RSS and author archives. 102 * Blog: For content-focused blogs. Keeps RSS and other blog features while improving performance and security. 103 * E-commerce: For WooCommerce stores. Performance and security plus WooCommerce optimizations for faster checkout. 105 104 106 105 = Accessibility = 107 * Fully ARIA-compliant tab interface following W3C ARIA Authoring Practices Guide.108 * Complete keyboard navigation: Arrow keys, Home, End, Space, Enter, and Tab keys fully supported.109 * Automatic tab activation on focus for improved user experience.110 * Proper focus management with visible focus indicators.111 * Screen reader friendly with proper ARIA labels and roles.106 * You can navigate the dashboard with confidence using an interface built to WCAG 2.1 AA accessibility standards. 107 * Move through settings efficiently using only your keyboard; we fully support the use of Tab, Arrow keys, Home, End, and Enter for all interactions. 108 * Experience faster navigation with automatic tab activation, which displays panels immediately as you move focus between sections. 109 * Always identify your position on the page through highly visible focus indicators on every interactive button and link. 110 * Every element is optimized for screen readers and assistive technologies with descriptive ARIA labels to provide clear context for every setting. 112 111 113 112 == Roadmap == 114 113 114 * Use new Gutenberg Icon component for categories & subcategories icons instead of Dashicons. 115 115 * Additional presets for specific use cases. 116 116 * Documentation pages with detailed guides. … … 165 165 = Does ZenPress work with my existing caching / optimization plugins? = 166 166 167 Yes. ZenPress focuses on disabling unnecessary core features and plugin bloat; it does not handle page caching, minification, or image optimization. It is designed to work alongside plugins like Cache Enabler, Autoptimize, and most object-cache solutions. If a performance feature overlaps, simply disable it in one of the tools. 168 169 = Can ZenPress break my theme or plugins? = 170 171 Potentially, yes—especially if your theme or plugins rely on features you disable (RSS feeds, oEmbed, REST API, emojis, WooCommerce assets, etc.). That’s why each snippet includes clear descriptions and categories (performance, security, UI). Always test changes on a staging site first and enable snippets gradually. 167 Yes. You can use ZenPress alongside tools like Cache Enabler or Autoptimize. Because ZenPress focuses on disabling unused core features and reducing bloat, it does not interfere with page caching or image optimization. If you notice overlapping features, you can easily toggle them off in either tool. 172 168 173 169 = How do I know which snippets are safe to enable? = 174 170 175 If you are unsure, start with a preset (Corporate, Blog, E‑commerce) and then adjust. For manual tuning, prefer UI and performance snippets first (dashicons, emojis, dashboard/admin-bar cleanup) before more invasive ones (REST API, XML‑RPC, RSS). After each change, check: frontend pages, login, editor, and (if used) WooCommerce flows.171 If you are new to optimization, you can safely start with a curated preset (Corporate, Blog, or E‑commerce). For manual changes, we suggest starting with User Interface (UI) and performance settings, such as cleaning up the Admin Bar, before moving to more advanced core settings. 176 172 177 173 = What happens if I disable the REST API? = 178 174 179 Unauthenticated REST requests will be blocked except for any explicit bypasses configured via the filters documented in the snippet (`zenpress_disable_wp_rest_api_post_var`, `zenpress_disable_wp_rest_api_server_var`). Core features and plugins that depend on public REST endpoints (some blocks, headless/front-end apps, third-party integrations) may stop working until you whitelist the required routes. 180 181 **Important**: If you don't know how to configure bypass filters or whitelist specific routes, don't activate this snippet. It can break functionality that relies on public REST API access. 175 The REST API allows different applications to communicate with your site. If you disable it, ZenPress will block unauthenticated requests to keep your site secure. However, some blocks or third-party integrations may require this to be active. If a feature stops working, you can simply use our documented filters to allow specific routes. 182 176 183 177 = Does ZenPress store any personal data or phone home? = … … 187 181 = Is ZenPress multisite compatible? = 188 182 189 ZenPress can be network‑activated or activated per site. Settings are stored per site, so each site in a network can have different snippets enabled. As with any optimization/security plugin, test network‑wide changes carefully, especially REST API and XML‑RPC related snippets.183 ZenPress is fully compatible with multisite networks. You can activate it across the entire network or on individual sites. Only Network Administrators have the capability to manage these settings across the network to ensure consistent performance and security policies. 190 184 191 185 = I have a suggestion = 192 186 193 Nice ! If you can't find anything in the roadmap, feel free to submit your suggestion on the support page! If you know how to code, you can even contribute on GitHub. 194 195 == Hooks & filters == 196 197 For developers: ZenPress exposes the following action and filters for extending or bypassing behavior. 198 199 = Action = 200 * `zenpress_caches_clear` – Fired when the user clears caches from the ZenPress admin bar. Integrations (e.g. Autoptimize) hook into this to clear their own caches. You can add custom cache clear logic with `add_action('zenpress_caches_clear', 'your_callback');`. 201 202 = Filters (Disable REST API snippet) = 203 * `zenpress_disable_wp_rest_api_post_var` – Allow unauthenticated REST access when a specific POST key is present (e.g. for webhooks). Return a string or array of key names. Use non-guessable values only. 204 * `zenpress_disable_wp_rest_api_server_var` – Allow unauthenticated REST access when `REQUEST_URI` matches a specific value. Return a string or array. Use non-guessable values only. 187 I welcome your ideas! If you have a suggestion for the roadmap, please visit the official support forum. If you are a developer, you can also contribute directly to the project on GitHub. 205 188 206 189 == Changelog == 207 190 191 = 2.2.5 = 192 - Linguistic improvements : Align to WordPress [Style, voice, and tone](https://make.wordpress.org/docs/style-guide/general-guidelines/style-voice-tone/). 193 - Accessibility improvements : Align to WordPress [accessibility guidelines](https://make.wordpress.org/docs/style-guide/general-guidelines/accessibility/). 194 208 195 = 2.2.4 = 209 - Fix : Admin bar “Clear all caches” is now off by default; user turns it on if they want.196 - Fix : Admin bar “Clear all caches” is now off by default; user turns it on if they want. 210 197 - Code quality : Split Settings page into smaller, modular piece. 211 198 - Interface : After clearing cache from the admin bar, show a WordPress success notice on the next admin load. -
zenpress/trunk/zenpress.php
r3452689 r3470504 10 10 * @license GPL v2 or later 11 11 * 12 * Plugin Name: ZenPress - Optimize & Secure13 * Description: Easily speed up and strengthen your WordPress site in one click: clean out unnecessary features, protect weak points, autoconfigure cache integrations.14 * Version: 2.2. 412 * Plugin Name: ZenPress 13 * Description: Speed up and harden your site with a single click: cleans up unused features, protects security gaps, and configures cache integrations automatically. 14 * Version: 2.2.5 15 15 * Plugin URI: https://wordpress.org/plugins/zenpress/ 16 16 * Author: Quentin Le Duff
Note: See TracChangeset
for help on using the changeset viewer.